0x60a060405234801561001057600080fd5b5061001961002a565b6001600160a01b0316608052610067565b60006040516100389061005a565b604051809103906000f080158015610054573d6000803e3d6000fd5b50905090565b6111be8061074f83390190565b6080516106c7610088600039600081816056015261024401526106c76000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c80635c60da1b1461005157806393c44847146100a2578063d4277ebc146100eb578063ed547bf7146100fe575b600080fd5b6100787f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100de6040518060400160405280600581526020017f352e382e3300000000000000000000000000000000000000000000000000000081525081565b60405161009991906104c8565b6100786100f9366004610519565b610111565b61007861010c366004610519565b61013b565b6000806000610121868686610211565b9150915061012f8282610281565b925050505b9392505050565b60008160ff166000108015610153575060ff82168310155b6101be576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f496e76616c6964207468726573686f6c6400000000000000000000000000000060448201526064015b60405180910390fd5b6000806101cc868686610211565b9150915060006101dc8383610281565b905073ffffffffffffffffffffffffffffffffffffffff81163b61012f576102066000848461029d565b979650505050505050565b60006060600085858560405160200161022c939291906105a5565b604051602081830303815290604052905060006102697f0000000000000000000000000000000000000000000000000000000000000000836103fc565b82516020909301929092209791965090945050505050565b805160208201206000906102958482610472565b949350505050565b600083471015610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016101b5565b8151600003610374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016101b5565b8282516020840186f5905073ffffffffffffffffffffffffffffffffffffffff8116610134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f437265617465323a204661696c6564206f6e206465706c6f790000000000000060448201526064016101b5565b60607f600b380380600b3d393df3363d3d373d3d3d3d60368038038091363936013d738360601b7f5af43d3d93803e603457fd5bf30000000000000000000000000000000000000084855160405160200161045b959493929190610612565b604051602081830303815290604052905092915050565b60006101348383306000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b60005b838110156104bf5781810151838201526020016104a7565b50506000910152565b60208152600082518060208401526104e78160408501602087016104a4565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60008060006040848603121561052e57600080fd5b833567ffffffffffffffff8082111561054657600080fd5b818601915086601f83011261055a57600080fd5b81358181111561056957600080fd5b8760208260051b850101111561057e57600080fd5b6020928301955093505084013560ff8116811461059a57600080fd5b809150509250925092565b604080825281018390526000846060830182805b878110156105fa57833573ffffffffffffffffffffffffffffffffffffffff81168082146105e5578384fd5b845250602093840193909201916001016105b9565b5050809250505060ff83166020830152949350505050565b8581527fffffffffffffffffffffffffffffffffffffffff000000000000000000000000851660208201527fffffffffffffffffffffffffff00000000000000000000000000000000000000841660348201526000835161067a8160418501602088016104a4565b60419201918201929092526061019594505050505056fea2646970667358221220e5bebe4bf7322188b7ab046ad49259f7c61e4d5d985edb5908d7150dcaba278e64736f6c63430008130033608060405234801561001057600080fd5b5061119e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80636465e69f116100505780636465e69f146100b357806393c44847146100cd578063f7e83aee1461011657600080fd5b806322a8d6fc1461006c5780632e0ed23414610092575b600080fd5b61007f61007a366004610bb7565b610139565b6040519081526020015b60405180910390f35b6100a56100a0366004610bb7565b61014e565b604051610089929190610bf9565b6100bb600481565b60405160ff9091168152602001610089565b6101096040518060400160405280600581526020017f352e382e3300000000000000000000000000000000000000000000000000000081525081565b6040516100899190610c5d565b610129610124366004610cc9565b610179565b6040519015158152602001610089565b60006101458383610392565b90505b92915050565b6060600061015a610428565b80602001905181019061016d9190610dc9565b915091505b9250929050565b60008061018886868686610458565b9050600080610197868661014e565b9150915060008160ff1611610233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602c60248201527f4e6f204d756c746973696749534d207468726573686f6c642070726573656e7460448201527f20666f72206d657373616765000000000000000000000000000000000000000060648201526084015b60405180910390fd5b81516000805b8360ff1681101561038157600061028f876102558e8e86610660565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061067a92505050565b90505b83831080156102e657508583815181106102ae576102ae610ed6565b602002602001015173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b156102fb576102f483610f34565b9250610292565b838310610364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f217468726573686f6c6400000000000000000000000000000000000000000000604482015260640161022a565b61036d83610f34565b9250508061037a90610f34565b9050610239565b5060019a9950505050505050505050565b6000806103a161044884610f6c565b90506103ae604182610fae565b15610415576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f496e76616c6964207369676e617475726573206c656e67746800000000000000604482015260640161022a565b610420604182610fc2565b949350505050565b60608060203603803580820391506040519250602081018301604052808352602083018183823750919392505050565b6000610464858561069e565b63ffffffff1661047486866106d4565b63ffffffff1611156104e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f496e76616c6964206d65726b6c6520696e646578206d65746164617461000000604482015260640161022a565b600061054561052685858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506106f592505050565b6105308888610700565b61053a89896106d4565b63ffffffff16610736565b905061065661055485856107df565b61055e88886107ef565b836105698a8a61069e565b6105738b8b610818565b604080517fffffffff0000000000000000000000000000000000000000000000000000000060e097881b811660208084019190915260248301979097527f48595045524c414e45000000000000000000000000000000000000000000000060448301528251808303602d018152604d83018452805190880120606d830152608d8201959095529290951b90921660ad82015260b1808201929092528351808203909201825260d10190925281519101207f19457468657265756d205369676e6564204d6573736167653a0a3332000000006000908152601c91909152603c902090565b9695505050505050565b36600061066e858585610829565b91509150935093915050565b6000806000610689858561086f565b91509150610696816108b1565b509392505050565b600082610444836106b0826004610fd6565b61ffff16926106c193929190610ff8565b6106ca91611022565b60e01c9392505050565b6000826020836106e582600461106a565b60ff16926106c193929190610ff8565b805160209091012090565b610708610b56565b8260448361071861040083610fd6565b61ffff169261072993929190610ff8565b8101906101459190611083565b8260005b602081101561069657600183821c16600085836020811061075d5761075d610ed6565b602002015190508160010361079d5760408051602081018390529081018590526060016040516020818303038152906040528051906020012093506107ca565b60408051602081018690529081018290526060016040516020818303038152906040528051906020012093505b505080806107d790610f34565b91505061073a565b60006106c1600960058486610ff8565b60008281836107ff82602061106a565b60ff169261080f93929190610ff8565b61014591611102565b6000826024836107ff82602061106a565b3660008061083860418561113e565b61084490610448611155565b90506000610853604183611155565b90506108618183888a610ff8565b935093505050935093915050565b60008082516041036108a55760208301516040840151606085015160001a61089987828585610a67565b94509450505050610172565b50600090506002610172565b60008160048111156108c5576108c5610ea7565b036108cd5750565b60018160048111156108e1576108e1610ea7565b03610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f45434453413a20696e76616c6964207369676e61747572650000000000000000604482015260640161022a565b600281600481111561095c5761095c610ea7565b036109c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e67746800604482015260640161022a565b60038160048111156109d7576109d7610ea7565b03610a64576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f7565000000000000000000000000000000000000000000000000000000000000606482015260840161022a565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115610a9e5750600090506003610b4d565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015610af2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff8116610b4657600060019250925050610b4d565b9150600090505b94509492505050565b6040518061040001604052806020906020820280368337509192915050565b60008083601f840112610b8757600080fd5b50813567ffffffffffffffff811115610b9f57600080fd5b60208301915083602082850101111561017257600080fd5b60008060208385031215610bca57600080fd5b823567ffffffffffffffff811115610be157600080fd5b610bed85828601610b75565b90969095509350505050565b604080825283519082018190526000906020906060840190828701845b82811015610c4857815173ffffffffffffffffffffffffffffffffffffffff1684529284019290840190600101610c16565b50505060ff9490941692019190915250919050565b600060208083528351808285015260005b81811015610c8a57858101830151858201604001528201610c6e565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60008060008060408587031215610cdf57600080fd5b843567ffffffffffffffff80821115610cf757600080fd5b610d0388838901610b75565b90965094506020870135915080821115610d1c57600080fd5b50610d2987828801610b75565b95989497509550505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610dab57610dab610d35565b604052919050565b805160ff81168114610dc457600080fd5b919050565b60008060408385031215610ddc57600080fd5b825167ffffffffffffffff80821115610df457600080fd5b818501915085601f830112610e0857600080fd5b8151602082821115610e1c57610e1c610d35565b8160051b9250610e2d818401610d64565b8281529284018101928181019089851115610e4757600080fd5b948201945b84861015610e8b578551935073ffffffffffffffffffffffffffffffffffffffff84168414610e7b5760008081fd5b8382529482019490820190610e4c565b9650610e9a9050878201610db3565b9450505050509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610f6557610f65610f05565b5060010190565b8181038181111561014857610148610f05565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600082610fbd57610fbd610f7f565b500690565b600082610fd157610fd1610f7f565b500490565b61ffff818116838216019080821115610ff157610ff1610f05565b5092915050565b6000808585111561100857600080fd5b8386111561101557600080fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156110625780818660040360031b1b83161692505b505092915050565b60ff818116838216019081111561014857610148610f05565b600061040080838503121561109757600080fd5b83601f8401126110a657600080fd5b60405181810181811067ffffffffffffffff821117156110c8576110c8610d35565b6040529083019080858311156110dd57600080fd5b845b838110156110f75780358252602091820191016110df565b509095945050505050565b80356020831015610148577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b808202811582820484141761014857610148610f05565b8082018082111561014857610148610f0556fea2646970667358221220a1b35970b8e429ccc82c49ef73e641b9439eda93109c0439220528e6d47fd22064736f6c63430008130033