0x60e06040523480156200001157600080fd5b5060405162001ccc38038062001ccc833981016040819052620000349162000078565b6001600160601b0319606093841b811660805290831b811660a052911b1660c052620000c1565b80516001600160a01b03811681146200007357600080fd5b919050565b6000806000606084860312156200008d578283fd5b62000098846200005b565b9250620000a8602085016200005b565b9150620000b8604085016200005b565b90509250925092565b60805160601c60a05160601c60c05160601c611bc6620001066000398061015152806108d352508061012d52508061032c52806105f152806107435250611bc66000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063c45a01551161005b578063c45a0155146100cb578063c550b186146100d3578063cdca1753146100f3578063fa461e33146101165761007d565b80634aa4a4fc1461008257806368e0d4e1146100a0578063891e50c6146100a8575b600080fd5b61008a61012b565b60405161009791906118e9565b60405180910390f35b61008a61014f565b6100bb6100b636600461172c565b610173565b6040516100979493929190611abb565b61008a61032a565b6100e66100e13660046116b5565b61034e565b6040516100979190611a00565b610106610101366004611597565b610372565b6040516100979493929190611a20565b6101296101243660046115fd565b6105c0565b005b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6020810151815160608301516000928392839283926001600160a01b03808216908416109284926101a49290610729565b90506001600160a01b0381166101c95760008060008095509550955095505050610323565b60005a9050816001600160a01b031663128acb0830856101ec8c604001516107d4565b60808d01516001600160a01b031615610209578c6080015161022f565b876102285773fffd8963efd1fc6a506488495d951d5263988d2561022f565b6401000276a45b8d600001518e606001518f60200151604051602001610250939291906118b6565b6040516020818303038152906040526040518663ffffffff1660e01b815260040161027f959493929190611948565b6040805180830381600087803b15801561029857600080fd5b505af19250505080156102c8575060408051601f3d908101601f191682019092526102c5918101906115da565b60015b61031d573d8080156102f6576040519150601f19603f3d011682016040523d82523d6000602084013e6102fb565b606091505b505a8203945061030c8184876107ea565b975097509750975050505050610323565b50505050505b9193509193565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061036c82606001518360000151846020015185604001516108a3565b92915050565b6000606080600061038286610a17565b67ffffffffffffffff8111801561039857600080fd5b506040519080825280602002602001820160405280156103c2578160200160208202803683370190505b5092506103ce86610a17565b67ffffffffffffffff811180156103e457600080fd5b5060405190808252806020026020018201604052801561040e578160200160208202803683370190505b50915060005b60008060006104228a610a28565b92509250925062400000811660020b60001461047d576104766040518060800160405280856001600160a01b03168152602001846001600160a01b031681526020016000151581526020018b81525061034e565b985061057f565b62200000811660020b156104c9576104766040518060800160405280856001600160a01b03168152602001846001600160a01b031681526020016001151581526020018b81525061034e565b60008060008061051d6040518060a00160405280896001600160a01b03168152602001886001600160a01b031681526020018f81526020018760020b815260200160006001600160a01b0316815250610173565b9350935093509350828b898151811061053257fe5b60200260200101906001600160a01b031690816001600160a01b031681525050818a898151811061055f57fe5b63ffffffff90921660209283029190910190910152929b50505094909401935b60019093019261058e8a610a59565b156105a35761059c8a610a61565b99506105af565b889750505050506105b7565b505050610414565b92959194509250565b60008313806105cf5750600082135b6105d857600080fd5b60008060006105e684610a28565b9250925092506106187f0000000000000000000000000000000000000000000000000000000000000000848484610a78565b506000806000881361064257846001600160a01b0316846001600160a01b0316108860000361065c565b836001600160a01b0316856001600160a01b031610876000035b91509150600061066d868686610729565b9050600080826001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160c06040518083038186803b1580156106ab57600080fd5b505afa1580156106bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106e391906117b4565b5050505091509150841561070857604051848152826020820152816040820152606081fd5b60405162461bcd60e51b8152600401610720906119cb565b60405180910390fd5b6040516328af8d0b60e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906328af8d0b9061077c90879087908790600401611921565b60206040518083038186803b15801561079457600080fd5b505afa1580156107a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107cc919061157b565b949350505050565b6000600160ff1b82106107e657600080fd5b5090565b600080600080600080876001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160c06040518083038186803b15801561082c57600080fd5b505afa158015610840573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086491906117b4565b5092955061087893508c9250610a97915050565b919750955090506108936001600160a01b0389168383610b1b565b9350869250505093509350935093565b6000806000846001600160a01b0316866001600160a01b0316106108c85784866108cb565b85855b9150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379bc57d58484886040518463ffffffff1660e01b8152600401610921939291906118fd565b60206040518083038186803b15801561093957600080fd5b505afa15801561094d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610971919061157b565b90506001600160a01b03811661098d57600093505050506107cc565b6040516378a051ad60e11b81526001600160a01b0382169063f140a35a906109bb908b908b90600401611a09565b60206040518083038186803b1580156109d357600080fd5b505afa1580156109e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a0b9190611830565b98975050505050505050565b80516017601319909101045b919050565b60008080610a3684826110a4565b9250610a43846014611132565b9050610a508460176110a4565b91509193909250565b516042111590565b805160609061036c90839060179060161901611200565b6000610a8e85610a8986868661132b565b61137f565b95945050505050565b60008060008351606014610afa57604484511015610ac75760405162461bcd60e51b8152600401610720906119a1565b60048401935083806020019051810190610ae1919061164b565b60405162461bcd60e51b8152600401610720919061198e565b83806020019051810190610b0e9190611848565b9250925092509193909250565b60008060008060008060008060088b6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b6257600080fd5b505afa158015610b76573d6000803e3d6000fd5b505050506040513d6020811015610b8c57600080fd5b5051600290810b908c900b81610b9e57fe5b0560020b901d905060006101008c6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610be457600080fd5b505afa158015610bf8573d6000803e3d6000fd5b505050506040513d6020811015610c0e57600080fd5b5051600290810b908d900b81610c2057fe5b0560020b81610c2b57fe5b079050600060088d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c6b57600080fd5b505afa158015610c7f573d6000803e3d6000fd5b505050506040513d6020811015610c9557600080fd5b5051600290810b908d900b81610ca757fe5b0560020b901d905060006101008e6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ced57600080fd5b505afa158015610d01573d6000803e3d6000fd5b505050506040513d6020811015610d1757600080fd5b5051600290810b908e900b81610d2957fe5b0560020b81610d3457fe5b07905060008160ff166001901b8f6001600160a01b0316635339c296856040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b158015610d8857600080fd5b505afa158015610d9c573d6000803e3d6000fd5b505050506040513d6020811015610db257600080fd5b505116118015610e3857508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610df657600080fd5b505afa158015610e0a573d6000803e3d6000fd5b505050506040513d6020811015610e2057600080fd5b5051600290810b908d900b81610e3257fe5b0760020b155b8015610e4957508b60020b8d60020b135b945060008360ff166001901b8f6001600160a01b0316635339c296876040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b158015610e9c57600080fd5b505afa158015610eb0573d6000803e3d6000fd5b505050506040513d6020811015610ec657600080fd5b505116118015610f4c57508d6001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0a57600080fd5b505afa158015610f1e573d6000803e3d6000fd5b505050506040513d6020811015610f3457600080fd5b5051600290810b908e900b81610f4657fe5b0760020b155b8015610f5d57508b60020b8d60020b125b95508160010b8460010b1280610f8957508160010b8460010b148015610f8957508060ff168360ff1611155b15610f9f57839950829750819850809650610fac565b8199508097508398508296505b505060001960ff87161b9150505b8560010b8760010b1361107c578560010b8760010b1415610fe15760001960ff858103161c165b6000818c6001600160a01b0316635339c2968a6040518263ffffffff1660e01b8152600401808260010b815260200191505060206040518083038186803b15801561102b57600080fd5b505afa15801561103f573d6000803e3d6000fd5b505050506040513d602081101561105557600080fd5b5051169050611063816113a2565b61ffff1698909801975050600190950194600019610fba565b8115611089576001880397505b8215611096576001880397505b505050505050509392505050565b6000818260140110156110e3576040805162461bcd60e51b8152602060048201526002602482015261414f60f01b604482015290519081900360640190fd5b8160140183511015611122576040805162461bcd60e51b815260206004820152600360248201526220a7a160e91b604482015290519081900360640190fd5b500160200151600160601b900490565b600081826003011015611171576040805162461bcd60e51b8152602060048201526002602482015261554f60f01b604482015290519081900360640190fd5b81600301835110156111b0576040805162461bcd60e51b81526020600482015260036024820152622aa7a160e91b604482015290519081900360640190fd5b82820160030151627fffff62ffffff821611156111f9576040805162461bcd60e51b8152602060048201526002602482015261494f60f01b604482015290519081900360640190fd5b9392505050565b60608182601f01101561123f576040805162461bcd60e51b8152602060048201526002602482015261534f60f01b604482015290519081900360640190fd5b82828401101561127b576040805162461bcd60e51b8152602060048201526002602482015261534f60f01b604482015290519081900360640190fd5b818301845110156112b9576040805162461bcd60e51b815260206004820152600360248201526229a7a160e91b604482015290519081900360640190fd5b6060821580156112d85760405191506000825260208201604052611322565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156113115780518352602092830192016112f9565b5050858452601f01601f1916604052505b50949350505050565b6113336114f8565b826001600160a01b0316846001600160a01b03161115611351579192915b50604080516060810182526001600160a01b03948516815292909316602083015260020b9181019190915290565b600061138b83836113bd565b9050336001600160a01b0382161461036c57600080fd5b6000805b821561036c576000198301909216916001016113a6565b600081602001516001600160a01b031682600001516001600160a01b0316106113e557600080fd5b6111f9836001600160a01b031663cefa77996040518163ffffffff1660e01b815260040160206040518083038186803b15801561142157600080fd5b505afa158015611435573d6000803e3d6000fd5b505050506040513d602081101561144b57600080fd5b5051835160208581015160408088015181516001600160a01b0395861681860152949092168482015260029190910b6060808501919091528151808503909101815260809093019052815191012085604051733d602d80600a3d3981f3363d3d373d3d3d363d7360601b8152606093841b60148201526f5af43d82803e903d91602b57fd5bf3ff60801b6028820152921b6038830152604c8201526037808220606c830152605591012090565b604080516060810182526000808252602082018190529181019190915290565b600082601f830112611528578081fd5b813561153b61153682611b09565b611ae5565b81815284602083860101111561154f578283fd5b816020850160208301379081016020019190915292915050565b805161ffff81168114610a2357600080fd5b60006020828403121561158c578081fd5b81516111f981611b5b565b600080604083850312156115a9578081fd5b823567ffffffffffffffff8111156115bf578182fd5b6115cb85828601611518565b95602094909401359450505050565b600080604083850312156115ec578182fd5b505080516020909101519092909150565b600080600060608486031215611611578081fd5b8335925060208401359150604084013567ffffffffffffffff811115611635578182fd5b61164186828701611518565b9150509250925092565b60006020828403121561165c578081fd5b815167ffffffffffffffff811115611672578182fd5b8201601f81018413611682578182fd5b805161169061153682611b09565b8181528560208385010111156116a4578384fd5b610a8e826020830160208601611b2b565b6000608082840312156116c6578081fd5b6040516080810181811067ffffffffffffffff821117156116e357fe5b60405282356116f181611b5b565b8152602083013561170181611b5b565b6020820152604083013561171481611b73565b60408201526060928301359281019290925250919050565b600060a0828403121561173d578081fd5b60405160a0810181811067ffffffffffffffff8211171561175a57fe5b604052823561176881611b5b565b8152602083013561177881611b5b565b602082015260408381013590820152606083013561179581611b81565b606082015260808301356117a881611b5b565b60808201529392505050565b60008060008060008060c087890312156117cc578384fd5b86516117d781611b5b565b60208801519096506117e881611b81565b94506117f660408801611569565b935061180460608801611569565b925061181260808801611569565b915060a087015161182281611b73565b809150509295509295509295565b600060208284031215611841578081fd5b5051919050565b60008060006060848603121561185c578081fd5b83519250602084015161186e81611b5b565b604085015190925061187f81611b81565b809150509250925092565b600081518084526118a2816020860160208601611b2b565b601f01601f19169290920160200192915050565b6bffffffffffffffffffffffff19606094851b8116825260029390930b60e81b6014820152921b166017820152602b0190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152901515604082015260600190565b6001600160a01b03938416815291909216602082015260029190910b604082015260600190565b6001600160a01b0386811682528515156020830152604082018590528316606082015260a0608082018190526000906119839083018461188a565b979650505050505050565b6000602082526111f9602083018461188a565b60208082526010908201526f2ab732bc3832b1ba32b21032b93937b960811b604082015260600190565b6020808252818101527f4578616374206f75747075742071756f7465206e6f7420737570706f72746564604082015260600190565b90815260200190565b9182526001600160a01b0316602082015260400190565b600060808201868352602060808185015281875180845260a0860191508289019350845b81811015611a695784516001600160a01b031683529383019391830191600101611a44565b505084810360408601528651808252908201925081870190845b81811015611aa557825163ffffffff1685529383019391830191600101611a83565b5050505060609290920192909252949350505050565b9384526001600160a01b0392909216602084015263ffffffff166040830152606082015260800190565b60405181810167ffffffffffffffff81118282101715611b0157fe5b604052919050565b600067ffffffffffffffff821115611b1d57fe5b50601f01601f191660200190565b60005b83811015611b46578181015183820152602001611b2e565b83811115611b55576000848401525b50505050565b6001600160a01b0381168114611b7057600080fd5b50565b8015158114611b7057600080fd5b8060020b8114611b7057600080fdfea2646970667358221220d8b7b4521c9ed7c788309c7ddf0d17416635c0b7b5364eb2efd1164ce7a9799464736f6c634300070600330000000000000000000000005e7bb104d84c7cb9b682aac2f3d509f5f406809a000000000000000000000000420dd381b31aef6683db6b902084cb0ffece40da0000000000000000000000004200000000000000000000000000000000000006