0x60806040523480156200001157600080fd5b506040518060200160405280600081525062000033816200007560201b60201c565b5062000054620000486200008a60201b60201c565b6200009260201b60201c565b6000600360146101000a81548160ff021916908315150217905550620004b9565b8060029081620000869190620003d2565b5050565b600033905090565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620001da57607f821691505b602082108103620001f057620001ef62000192565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200025a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200021b565b6200026686836200021b565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620002b3620002ad620002a7846200027e565b62000288565b6200027e565b9050919050565b6000819050919050565b620002cf8362000292565b620002e7620002de82620002ba565b84845462000228565b825550505050565b600090565b620002fe620002ef565b6200030b818484620002c4565b505050565b5b81811015620003335762000327600082620002f4565b60018101905062000311565b5050565b601f82111562000382576200034c81620001f6565b62000357846200020b565b8101602085101562000367578190505b6200037f62000376856200020b565b83018262000310565b50505b505050565b600082821c905092915050565b6000620003a76000198460080262000387565b1980831691505092915050565b6000620003c2838362000394565b9150826002028217905092915050565b620003dd8262000158565b67ffffffffffffffff811115620003f957620003f862000163565b5b620004058254620001c1565b6200041282828562000337565b600060209050601f8311600181146200044a576000841562000435578287015190505b620004418582620003b4565b865550620004b1565b601f1984166200045a86620001f6565b60005b8281101562000484578489015182556001820191506020850194506020810190506200045d565b86831015620004a45784890151620004a0601f89168262000394565b8355505b6001600288020188555050505b505050505050565b61412f80620004c96000396000f3fe608060405234801561001057600080fd5b50600436106101365760003560e01c80636b20c454116100b8578063a22cb4651161007c578063a22cb46514610311578063bd85b0391461032d578063e985e9c51461035d578063f242432a1461038d578063f2fde38b146103a9578063f5298aca146103c557610136565b80636b20c454146102a7578063715018a6146102c3578063731133e9146102cd5780638456cb59146102e95780638da5cb5b146102f357610136565b80632eb2c2d6116100ff5780632eb2c2d6146102035780633f4ba83a1461021f5780634e1273f4146102295780634f558e79146102595780635c975abb1461028957610136565b8062fdd58e1461013b57806301ffc9a71461016b57806302fe53051461019b5780630e89341c146101b75780631f7fdffa146101e7575b600080fd5b610155600480360381019061015091906125fe565b6103e1565b604051610162919061264d565b60405180910390f35b610185600480360381019061018091906126c0565b6104a9565b6040516101929190612708565b60405180910390f35b6101b560048036038101906101b09190612869565b61058b565b005b6101d160048036038101906101cc91906128b2565b61059f565b6040516101de919061295e565b60405180910390f35b61020160048036038101906101fc9190612ae9565b610633565b005b61021d60048036038101906102189190612ba4565b61064d565b005b6102276106ee565b005b610243600480360381019061023e9190612d36565b610700565b6040516102509190612e6c565b60405180910390f35b610273600480360381019061026e91906128b2565b610819565b6040516102809190612708565b60405180910390f35b61029161082d565b60405161029e9190612708565b60405180910390f35b6102c160048036038101906102bc9190612e8e565b610844565b005b6102cb6108e1565b005b6102e760048036038101906102e29190612f19565b6108f5565b005b6102f161090f565b005b6102fb610921565b6040516103089190612fab565b60405180910390f35b61032b60048036038101906103269190612ff2565b61094b565b005b610347600480360381019061034291906128b2565b610961565b604051610354919061264d565b60405180910390f35b61037760048036038101906103729190613032565b61097e565b6040516103849190612708565b60405180910390f35b6103a760048036038101906103a29190613072565b610a12565b005b6103c360048036038101906103be9190613109565b610ab3565b005b6103df60048036038101906103da9190613136565b610b36565b005b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610451576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610448906131fb565b60405180910390fd5b60008083815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60007fd9b67a26000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057457507f0e89341c000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610584575061058382610bd3565b5b9050919050565b610593610c3d565b61059c81610cbb565b50565b6060600280546105ae9061324a565b80601f01602080910402602001604051908101604052809291908181526020018280546105da9061324a565b80156106275780601f106105fc57610100808354040283529160200191610627565b820191906000526020600020905b81548152906001019060200180831161060a57829003601f168201915b50505050509050919050565b61063b610c3d565b61064784848484610cce565b50505050565b610655610efa565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16148061069b575061069a85610695610efa565b61097e565b5b6106da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106d1906132ed565b60405180910390fd5b6106e78585858585610f02565b5050505050565b6106f6610c3d565b6106fe611223565b565b60608151835114610746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073d9061337f565b60405180910390fd5b6000835167ffffffffffffffff8111156107635761076261273e565b5b6040519080825280602002602001820160405280156107915781602001602082028036833780820191505090505b50905060005b845181101561080e576107de8582815181106107b6576107b561339f565b5b60200260200101518583815181106107d1576107d061339f565b5b60200260200101516103e1565b8282815181106107f1576107f061339f565b5b60200260200101818152505080610807906133fd565b9050610797565b508091505092915050565b60008061082583610961565b119050919050565b6000600360149054906101000a900460ff16905090565b61084c610efa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148061089257506108918361088c610efa565b61097e565b5b6108d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c8906132ed565b60405180910390fd5b6108dc838383611286565b505050565b6108e9610c3d565b6108f36000611554565b565b6108fd610c3d565b6109098484848461161a565b50505050565b610917610c3d565b61091f6117ca565b565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61095d610956610efa565b838361182d565b5050565b600060046000838152602001908152602001600020549050919050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b610a1a610efa565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161480610a605750610a5f85610a5a610efa565b61097e565b5b610a9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a96906132ed565b60405180910390fd5b610aac8585858585611999565b5050505050565b610abb610c3d565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b21906134b7565b60405180910390fd5b610b3381611554565b50565b610b3e610efa565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610b845750610b8383610b7e610efa565b61097e565b5b610bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bba906132ed565b60405180910390fd5b610bce838383611c34565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b610c45610efa565b73ffffffffffffffffffffffffffffffffffffffff16610c63610921565b73ffffffffffffffffffffffffffffffffffffffff1614610cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb090613523565b60405180910390fd5b565b8060029081610cca91906136ef565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490613833565b60405180910390fd5b8151835114610d81576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d78906138c5565b60405180910390fd5b6000610d8b610efa565b9050610d9c81600087878787611e7a565b60005b8451811015610e5557838181518110610dbb57610dba61339f565b5b6020026020010151600080878481518110610dd957610dd861339f565b5b6020026020010151815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610e3b91906138e5565b925050819055508080610e4d906133fd565b915050610d9f565b508473ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ecd929190613919565b60405180910390a4610ee481600087878787611e98565b610ef381600087878787611ea0565b5050505050565b600033905090565b8151835114610f46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3d906138c5565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fac906139c2565b60405180910390fd5b6000610fbf610efa565b9050610fcf818787878787611e7a565b60005b8451811015611180576000858281518110610ff057610fef61339f565b5b60200260200101519050600085838151811061100f5761100e61339f565b5b60200260200101519050600080600084815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a790613a54565b60405180910390fd5b81810360008085815260200190815260200160002060008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160008085815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461116591906138e5565b9250508190555050505080611179906133fd565b9050610fd2565b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516111f7929190613919565b60405180910390a461120d818787878787611e98565b61121b818787878787611ea0565b505050505050565b61122b612077565b6000600360146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61126f610efa565b60405161127c9190612fab565b60405180910390a1565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ec90613ae6565b60405180910390fd5b8051825114611339576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611330906138c5565b60405180910390fd5b6000611343610efa565b905061136381856000868660405180602001604052806000815250611e7a565b60005b83518110156114b05760008482815181106113845761138361339f565b5b6020026020010151905060008483815181106113a3576113a261339f565b5b60200260200101519050600080600084815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611444576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143b90613b78565b60405180910390fd5b81810360008085815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050505080806114a8906133fd565b915050611366565b50600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611528929190613919565b60405180910390a461154e81856000868660405180602001604052806000815250611e98565b50505050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611689576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168090613833565b60405180910390fd5b6000611693610efa565b905060006116a0856120c0565b905060006116ad856120c0565b90506116be83600089858589611e7a565b8460008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461171d91906138e5565b925050819055508673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62898960405161179b929190613b98565b60405180910390a46117b283600089858589611e98565b6117c18360008989898961213a565b50505050505050565b6117d2612311565b6001600360146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611816610efa565b6040516118239190612fab565b60405180910390a1565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361189b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189290613c33565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161198c9190612708565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611a08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ff906139c2565b60405180910390fd5b6000611a12610efa565b90506000611a1f856120c0565b90506000611a2c856120c0565b9050611a3c838989858589611e7a565b600080600088815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905085811015611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca90613a54565b60405180910390fd5b85810360008089815260200190815260200160002060008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508560008089815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b8891906138e5565b925050819055508773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628a8a604051611c05929190613b98565b60405180910390a4611c1b848a8a86868a611e98565b611c29848a8a8a8a8a61213a565b505050505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611ca3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9a90613ae6565b60405180910390fd5b6000611cad610efa565b90506000611cba846120c0565b90506000611cc7846120c0565b9050611ce783876000858560405180602001604052806000815250611e7a565b600080600087815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905084811015611d7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7590613b78565b60405180910390fd5b84810360008088815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f628989604051611e4b929190613b98565b60405180910390a4611e7184886000868660405180602001604052806000815250611e98565b50505050505050565b611e82612311565b611e9086868686868661235b565b505050505050565b505050505050565b611ebf8473ffffffffffffffffffffffffffffffffffffffff1661252b565b1561206f578373ffffffffffffffffffffffffffffffffffffffff1663bc197c8187878686866040518663ffffffff1660e01b8152600401611f05959493929190613ca8565b6020604051808303816000875af1925050508015611f4157506040513d601f19601f82011682018060405250810190611f3e9190613d25565b60015b611fe657611f4d613d5f565b806308c379a003611fa95750611f61613d81565b80611f6c5750611fab565b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa0919061295e565b60405180910390fd5b505b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fdd90613e83565b60405180910390fd5b63bc197c8160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461206d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206490613f15565b60405180910390fd5b505b505050505050565b61207f61082d565b6120be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b590613f81565b60405180910390fd5b565b60606000600167ffffffffffffffff8111156120df576120de61273e565b5b60405190808252806020026020018201604052801561210d5781602001602082028036833780820191505090505b50905082816000815181106121255761212461339f565b5b60200260200101818152505080915050919050565b6121598473ffffffffffffffffffffffffffffffffffffffff1661252b565b15612309578373ffffffffffffffffffffffffffffffffffffffff1663f23a6e6187878686866040518663ffffffff1660e01b815260040161219f959493929190613fa1565b6020604051808303816000875af19250505080156121db57506040513d601f19601f820116820180604052508101906121d89190613d25565b60015b612280576121e7613d5f565b806308c379a00361224357506121fb613d81565b806122065750612245565b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223a919061295e565b60405180910390fd5b505b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227790613e83565b60405180910390fd5b63f23a6e6160e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614612307576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fe90613f15565b60405180910390fd5b505b505050505050565b61231961082d565b15612359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235090614047565b60405180910390fd5b565b61236986868686868661254e565b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361241a5760005b8351811015612418578281815181106123bc576123bb61339f565b5b6020026020010151600460008684815181106123db576123da61339f565b5b60200260200101518152602001908152602001600020600082825461240091906138e5565b9250508190555080612411906133fd565b90506123a0565b505b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036125235760005b835181101561252157600084828151811061246f5761246e61339f565b5b60200260200101519050600084838151811061248e5761248d61339f565b5b60200260200101519050600060046000848152602001908152602001600020549050818110156124f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124ea906140d9565b60405180910390fd5b81810360046000858152602001908152602001600020819055505050508061251a906133fd565b9050612451565b505b505050505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b505050505050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125958261256a565b9050919050565b6125a58161258a565b81146125b057600080fd5b50565b6000813590506125c28161259c565b92915050565b6000819050919050565b6125db816125c8565b81146125e657600080fd5b50565b6000813590506125f8816125d2565b92915050565b6000806040838503121561261557612614612560565b5b6000612623858286016125b3565b9250506020612634858286016125e9565b9150509250929050565b612647816125c8565b82525050565b6000602082019050612662600083018461263e565b92915050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61269d81612668565b81146126a857600080fd5b50565b6000813590506126ba81612694565b92915050565b6000602082840312156126d6576126d5612560565b5b60006126e4848285016126ab565b91505092915050565b60008115159050919050565b612702816126ed565b82525050565b600060208201905061271d60008301846126f9565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6127768261272d565b810181811067ffffffffffffffff821117156127955761279461273e565b5b80604052505050565b60006127a8612556565b90506127b4828261276d565b919050565b600067ffffffffffffffff8211156127d4576127d361273e565b5b6127dd8261272d565b9050602081019050919050565b82818337600083830152505050565b600061280c612807846127b9565b61279e565b90508281526020810184848401111561282857612827612728565b5b6128338482856127ea565b509392505050565b600082601f8301126128505761284f612723565b5b81356128608482602086016127f9565b91505092915050565b60006020828403121561287f5761287e612560565b5b600082013567ffffffffffffffff81111561289d5761289c612565565b5b6128a98482850161283b565b91505092915050565b6000602082840312156128c8576128c7612560565b5b60006128d6848285016125e9565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156129195780820151818401526020810190506128fe565b60008484015250505050565b6000612930826128df565b61293a81856128ea565b935061294a8185602086016128fb565b6129538161272d565b840191505092915050565b600060208201905081810360008301526129788184612925565b905092915050565b600067ffffffffffffffff82111561299b5761299a61273e565b5b602082029050602081019050919050565b600080fd5b60006129c46129bf84612980565b61279e565b905080838252602082019050602084028301858111156129e7576129e66129ac565b5b835b81811015612a1057806129fc88826125e9565b8452602084019350506020810190506129e9565b5050509392505050565b600082601f830112612a2f57612a2e612723565b5b8135612a3f8482602086016129b1565b91505092915050565b600067ffffffffffffffff821115612a6357612a6261273e565b5b612a6c8261272d565b9050602081019050919050565b6000612a8c612a8784612a48565b61279e565b905082815260208101848484011115612aa857612aa7612728565b5b612ab38482856127ea565b509392505050565b600082601f830112612ad057612acf612723565b5b8135612ae0848260208601612a79565b91505092915050565b60008060008060808587031215612b0357612b02612560565b5b6000612b11878288016125b3565b945050602085013567ffffffffffffffff811115612b3257612b31612565565b5b612b3e87828801612a1a565b935050604085013567ffffffffffffffff811115612b5f57612b5e612565565b5b612b6b87828801612a1a565b925050606085013567ffffffffffffffff811115612b8c57612b8b612565565b5b612b9887828801612abb565b91505092959194509250565b600080600080600060a08688031215612bc057612bbf612560565b5b6000612bce888289016125b3565b9550506020612bdf888289016125b3565b945050604086013567ffffffffffffffff811115612c0057612bff612565565b5b612c0c88828901612a1a565b935050606086013567ffffffffffffffff811115612c2d57612c2c612565565b5b612c3988828901612a1a565b925050608086013567ffffffffffffffff811115612c5a57612c59612565565b5b612c6688828901612abb565b9150509295509295909350565b600067ffffffffffffffff821115612c8e57612c8d61273e565b5b602082029050602081019050919050565b6000612cb2612cad84612c73565b61279e565b90508083825260208201905060208402830185811115612cd557612cd46129ac565b5b835b81811015612cfe5780612cea88826125b3565b845260208401935050602081019050612cd7565b5050509392505050565b600082601f830112612d1d57612d1c612723565b5b8135612d2d848260208601612c9f565b91505092915050565b60008060408385031215612d4d57612d4c612560565b5b600083013567ffffffffffffffff811115612d6b57612d6a612565565b5b612d7785828601612d08565b925050602083013567ffffffffffffffff811115612d9857612d97612565565b5b612da485828601612a1a565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612de3816125c8565b82525050565b6000612df58383612dda565b60208301905092915050565b6000602082019050919050565b6000612e1982612dae565b612e238185612db9565b9350612e2e83612dca565b8060005b83811015612e5f578151612e468882612de9565b9750612e5183612e01565b925050600181019050612e32565b5085935050505092915050565b60006020820190508181036000830152612e868184612e0e565b905092915050565b600080600060608486031215612ea757612ea6612560565b5b6000612eb5868287016125b3565b935050602084013567ffffffffffffffff811115612ed657612ed5612565565b5b612ee286828701612a1a565b925050604084013567ffffffffffffffff811115612f0357612f02612565565b5b612f0f86828701612a1a565b9150509250925092565b60008060008060808587031215612f3357612f32612560565b5b6000612f41878288016125b3565b9450506020612f52878288016125e9565b9350506040612f63878288016125e9565b925050606085013567ffffffffffffffff811115612f8457612f83612565565b5b612f9087828801612abb565b91505092959194509250565b612fa58161258a565b82525050565b6000602082019050612fc06000830184612f9c565b92915050565b612fcf816126ed565b8114612fda57600080fd5b50565b600081359050612fec81612fc6565b92915050565b6000806040838503121561300957613008612560565b5b6000613017858286016125b3565b925050602061302885828601612fdd565b9150509250929050565b6000806040838503121561304957613048612560565b5b6000613057858286016125b3565b9250506020613068858286016125b3565b9150509250929050565b600080600080600060a0868803121561308e5761308d612560565b5b600061309c888289016125b3565b95505060206130ad888289016125b3565b94505060406130be888289016125e9565b93505060606130cf888289016125e9565b925050608086013567ffffffffffffffff8111156130f0576130ef612565565b5b6130fc88828901612abb565b9150509295509295909350565b60006020828403121561311f5761311e612560565b5b600061312d848285016125b3565b91505092915050565b60008060006060848603121561314f5761314e612560565b5b600061315d868287016125b3565b935050602061316e868287016125e9565b925050604061317f868287016125e9565b9150509250925092565b7f455243313135353a2061646472657373207a65726f206973206e6f742061207660008201527f616c6964206f776e657200000000000000000000000000000000000000000000602082015250565b60006131e5602a836128ea565b91506131f082613189565b604082019050919050565b60006020820190508181036000830152613214816131d8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061326257607f821691505b6020821081036132755761327461321b565b5b50919050565b7f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60008201527f6572206f7220617070726f766564000000000000000000000000000000000000602082015250565b60006132d7602e836128ea565b91506132e28261327b565b604082019050919050565b60006020820190508181036000830152613306816132ca565b9050919050565b7f455243313135353a206163636f756e747320616e6420696473206c656e67746860008201527f206d69736d617463680000000000000000000000000000000000000000000000602082015250565b60006133696029836128ea565b91506133748261330d565b604082019050919050565b600060208201905081810360008301526133988161335c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613408826125c8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361343a576134396133ce565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134a16026836128ea565b91506134ac82613445565b604082019050919050565b600060208201905081810360008301526134d081613494565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061350d6020836128ea565b9150613518826134d7565b602082019050919050565b6000602082019050818103600083015261353c81613500565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026135a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613568565b6135af8683613568565b95508019841693508086168417925050509392505050565b6000819050919050565b60006135ec6135e76135e2846125c8565b6135c7565b6125c8565b9050919050565b6000819050919050565b613606836135d1565b61361a613612826135f3565b848454613575565b825550505050565b600090565b61362f613622565b61363a8184846135fd565b505050565b5b8181101561365e57613653600082613627565b600181019050613640565b5050565b601f8211156136a35761367481613543565b61367d84613558565b8101602085101561368c578190505b6136a061369885613558565b83018261363f565b50505b505050565b600082821c905092915050565b60006136c6600019846008026136a8565b1980831691505092915050565b60006136df83836136b5565b9150826002028217905092915050565b6136f8826128df565b67ffffffffffffffff8111156137115761371061273e565b5b61371b825461324a565b613726828285613662565b600060209050601f8311600181146137595760008415613747578287015190505b61375185826136d3565b8655506137b9565b601f19841661376786613543565b60005b8281101561378f5784890151825560018201915060208501945060208101905061376a565b868310156137ac57848901516137a8601f8916826136b5565b8355505b6001600288020188555050505b505050505050565b7f455243313135353a206d696e7420746f20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061381d6021836128ea565b9150613828826137c1565b604082019050919050565b6000602082019050818103600083015261384c81613810565b9050919050565b7f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060008201527f6d69736d61746368000000000000000000000000000000000000000000000000602082015250565b60006138af6028836128ea565b91506138ba82613853565b604082019050919050565b600060208201905081810360008301526138de816138a2565b9050919050565b60006138f0826125c8565b91506138fb836125c8565b9250828201905080821115613913576139126133ce565b5b92915050565b600060408201905081810360008301526139338185612e0e565b905081810360208301526139478184612e0e565b90509392505050565b7f455243313135353a207472616e7366657220746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006139ac6025836128ea565b91506139b782613950565b604082019050919050565b600060208201905081810360008301526139db8161399f565b9050919050565b7f455243313135353a20696e73756666696369656e742062616c616e636520666f60008201527f72207472616e7366657200000000000000000000000000000000000000000000602082015250565b6000613a3e602a836128ea565b9150613a49826139e2565b604082019050919050565b60006020820190508181036000830152613a6d81613a31565b9050919050565b7f455243313135353a206275726e2066726f6d20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613ad06023836128ea565b9150613adb82613a74565b604082019050919050565b60006020820190508181036000830152613aff81613ac3565b9050919050565b7f455243313135353a206275726e20616d6f756e7420657863656564732062616c60008201527f616e636500000000000000000000000000000000000000000000000000000000602082015250565b6000613b626024836128ea565b9150613b6d82613b06565b604082019050919050565b60006020820190508181036000830152613b9181613b55565b9050919050565b6000604082019050613bad600083018561263e565b613bba602083018461263e565b9392505050565b7f455243313135353a2073657474696e6720617070726f76616c2073746174757360008201527f20666f722073656c660000000000000000000000000000000000000000000000602082015250565b6000613c1d6029836128ea565b9150613c2882613bc1565b604082019050919050565b60006020820190508181036000830152613c4c81613c10565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000613c7a82613c53565b613c848185613c5e565b9350613c948185602086016128fb565b613c9d8161272d565b840191505092915050565b600060a082019050613cbd6000830188612f9c565b613cca6020830187612f9c565b8181036040830152613cdc8186612e0e565b90508181036060830152613cf08185612e0e565b90508181036080830152613d048184613c6f565b90509695505050505050565b600081519050613d1f81612694565b92915050565b600060208284031215613d3b57613d3a612560565b5b6000613d4984828501613d10565b91505092915050565b60008160e01c9050919050565b600060033d1115613d7e5760046000803e613d7b600051613d52565b90505b90565b600060443d10613e0e57613d93612556565b60043d036004823e80513d602482011167ffffffffffffffff82111715613dbb575050613e0e565b808201805167ffffffffffffffff811115613dd95750505050613e0e565b80602083010160043d038501811115613df6575050505050613e0e565b613e058260200185018661276d565b82955050505050505b90565b7f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560008201527f526563656976657220696d706c656d656e746572000000000000000000000000602082015250565b6000613e6d6034836128ea565b9150613e7882613e11565b604082019050919050565b60006020820190508181036000830152613e9c81613e60565b9050919050565b7f455243313135353a204552433131353552656365697665722072656a6563746560008201527f6420746f6b656e73000000000000000000000000000000000000000000000000602082015250565b6000613eff6028836128ea565b9150613f0a82613ea3565b604082019050919050565b60006020820190508181036000830152613f2e81613ef2565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000613f6b6014836128ea565b9150613f7682613f35565b602082019050919050565b60006020820190508181036000830152613f9a81613f5e565b9050919050565b600060a082019050613fb66000830188612f9c565b613fc36020830187612f9c565b613fd0604083018661263e565b613fdd606083018561263e565b8181036080830152613fef8184613c6f565b90509695505050505050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b60006140316010836128ea565b915061403c82613ffb565b602082019050919050565b6000602082019050818103600083015261406081614024565b9050919050565b7f455243313135353a206275726e20616d6f756e74206578636565647320746f7460008201527f616c537570706c79000000000000000000000000000000000000000000000000602082015250565b60006140c36028836128ea565b91506140ce82614067565b604082019050919050565b600060208201905081810360008301526140f2816140b6565b905091905056fea2646970667358221220c1a1ff5a74dea8f88fd64d7c2dfe7bfe2fee567b2d808eba812aee345ecc893564736f6c63430008120033