0x4e5653a7000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000001cdc6080604052348015600f57600080fd5b50604051611cdc380380611cdc833981016040819052602c9160a9565b806034336059565b600180546001600160a01b0319166001600160a01b03929092169190911790555060d7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121560ba57600080fd5b81516001600160a01b038116811460d057600080fd5b9392505050565b611bf6806100e66000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c80638d7f5dd6116100e3578063dc9abc531161008c578063ef3e7a0211610066578063ef3e7a0214610374578063f2fde38b1461038a578063fe5815a61461039d57600080fd5b8063dc9abc5314610328578063dde91ab114610348578063ee24e9561461035657600080fd5b8063b654c9cd116100bd578063b654c9cd146102d7578063be9a65551461030b578063d635d3b51461031357600080fd5b80638d7f5dd6146102a05780638da5cb5b146102b3578063b093c517146102c457600080fd5b80636886e1501161014557806372fc9e551161011f57806372fc9e551461025e5780638678074e146102665780638a5682991461027957600080fd5b80636886e150146102165780636c1011d61461022b578063715018a61461025657600080fd5b80634fca3d7c116101765780634fca3d7c146101db5780635ae725f7146101ee57806366087e231461020e57600080fd5b80631ba9998b1461019d578063213b5391146101a757806344691f7e146101c3575b600080fd5b6101a56103b1565b005b6101b061010081565b6040519081526020015b60405180910390f35b6101cb610446565b60405190151581526020016101ba565b6101a56101e936600461131b565b61047c565b6102016101fc36600461135d565b610515565b6040516101ba91906113bc565b6102016105af565b61021e6105bc565b6040516101ba91906113d6565b60015461023e906001600160a01b031681565b6040516001600160a01b0390911681526020016101ba565b6101a561062c565b61020161063e565b6101a561027436600461131b565b61064b565b60045461028d9062010000900461ffff1681565b60405161ffff90911681526020016101ba565b6101a56102ae366004611433565b610683565b6000546001600160a01b031661023e565b6101a56102d2366004611609565b610718565b6004546102f290600160701b900467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101ba565b6101a5610732565b61031b6107cc565b6040516101ba9190611717565b61033b61033636600461135d565b6108f5565b6040516101ba919061177c565b60045461028d9061ffff1681565b6004546102f2906601000000000000900467ffffffffffffffff1681565b60045461028d90640100000000900461ffff1681565b6101a561039836600461179a565b61095d565b6004546101cb90600160b81b900460ff1681565b6103b96109f2565b6103c1610446565b6103de576040516341f8463560e01b815260040160405180910390fd5b600454600160b81b900460ff1615610409576040516373f0033160e01b815260040160405180910390fd5b600454600160701b900467ffffffffffffffff16421061043c5760405163055665d360e51b815260040160405180910390fd5b610444610a4c565b565b600454600090600160b01b900460ff168061047757506004546601000000000000900467ffffffffffffffff164210155b905090565b6104846109f2565b61048c610446565b6104a9576040516341f8463560e01b815260040160405180910390fd5b600454600160b81b900460ff16156104d4576040516373f0033160e01b815260040160405180910390fd5b600454600160701b900467ffffffffffffffff1642106105075760405163055665d360e51b815260040160405180910390fd5b6105118282610b89565b5050565b6005602052600090815260409020805461052e906117b5565b80601f016020809104026020016040519081016040528092919081815260200182805461055a906117b5565b80156105a75780601f1061057c576101008083540402835291602001916105a7565b820191906000526020600020905b81548152906001019060200180831161058a57829003601f168201915b505050505081565b6003805461052e906117b5565b60606006805480602002602001604051908101604052809291908181526020016000905b82821015610623576000848152602090819020604080518082019091529084015460ff8082168352610100909104161515818301528252600190920191016105e0565b50505050905090565b6106346109f2565b6104446000610c0f565b6002805461052e906117b5565b6106536109f2565b61065b610446565b15610679576040516319f3b2f560e31b815260040160405180910390fd5b6105118282610c77565b61068b6109f2565b610693610446565b6106b0576040516341f8463560e01b815260040160405180910390fd5b600454600160b81b900460ff16156106db576040516373f0033160e01b815260040160405180910390fd5b600454600160701b900467ffffffffffffffff16421061070e5760405163055665d360e51b815260040160405180910390fd5b6105118282610cfd565b6107288888888888888888610e32565b5050505050505050565b61073a6109f2565b600454600160b81b900460ff161580156107675750600454600160701b900467ffffffffffffffff164210155b156107855760405163055665d360e51b815260040160405180910390fd5b6004805467ffffffffffffffff42166601000000000000027fffffffffffffffffff00ffffffffffffffff0000000000000000ffffffffffff90911617600160b01b179055565b60045460609061ffff1667ffffffffffffffff8111156107ee576107ee6114aa565b60405190808252806020026020018201604052801561082157816020015b606081526020019060019003908161080c5790505b50905060005b60045461ffff168110156108f1576000818152600560205260409020805461084e906117b5565b80601f016020809104026020016040519081016040528092919081815260200182805461087a906117b5565b80156108c75780601f1061089c576101008083540402835291602001916108c7565b820191906000526020600020905b8154815290600101906020018083116108aa57829003601f168201915b50505050508282815181106108de576108de6117ef565b6020908102919091010152600101610827565b5090565b60408051808201909152600080825260208201526006548210156109585760068281548110610926576109266117ef565b60009182526020918290206040805180820190915291015460ff80821683526101009091041615159181019190915290505b919050565b6109656109f2565b6001600160a01b0381166109e65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6109ef81610c0f565b50565b6000546001600160a01b031633146104445760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109dd565b600454640100000000900461ffff16600003610a7b57604051631386aa1d60e21b815260040160405180910390fd5b6000610a85611169565b90506000610a9161117f565b600454610aa2919061ffff1661181b565b9050805b610ab0828461182e565b811015610b065760068181548110610aca57610aca6117ef565b600091825260209091200154610100900460ff16610afe5760405163448f8ecf60e11b8152600481018290526024016109dd565b600101610aa6565b5060048054640100000000900461ffff169080610b2283611841565b91906101000a81548161ffff021916908361ffff1602179055505060048054906101000a900461ffff1661ffff1660000361051157600480547fffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b1790555050565b600454640100000000900461ffff16600003610bb857604051631386aa1d60e21b815260040160405180910390fd5b610bf482828080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061119c92505050565b60048054640100000000900461ffff169080610b2283611841565b600080546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60045461ffff168114610ca05760405163ef44ad6b60e01b8152600481018290526024016109dd565b60005b60045461ffff16811015610cf857828282818110610cc357610cc36117ef565b9050602002810190610cd5919061185f565b600083815260056020526040902091610cef9190836118ed565b50600101610ca3565b505050565b6000610d07611169565b90506000610d1361117f565b600454610d24919061ffff1661181b565b9050610d30818361182e565b84101580610d3d57508084105b15610d5e5760405163f5c8169d60e01b8152600481018590526024016109dd565b60068481548110610d7157610d716117ef565b600091825260209091200154610100900460ff1615610da6576040516392ccb24560e01b8152600481018590526024016109dd565b6040805180820190915260ff84168152600160208201526006805486908110610dd157610dd16117ef565b60009182526020808320845192018054949091015115156101000261ffff1990941660ff92831617939093179092556040519185169186917f72d9907a24d8b5f6dbcb90d51fd09cb323f09f467926eb754be4d7d7051278dc91a350505050565b6001546001600160a01b03163314610e5f57604051635aa8141760e11b81523360048201526024016109dd565b428467ffffffffffffffff1611610e8957604051632ca4094f60e21b815260040160405180910390fd5b8461ffff16825114610ebe578151604051631ba4743160e31b815261ffff8716600482015260248101919091526044016109dd565b6101008561ffff161115610eeb5760405163294896bb60e21b815261ffff861660048201526024016109dd565b610ef488610c0f565b6002610f018789836118ed565b50600480546dffffffffffffffff0000000000001916660100000000000067ffffffffffffffff8716021790556003610f3a82826119ad565b506004805461ffff191661ffff8716179055600260015b8661ffff16821015610f7d5780610f6781611a6c565b9150610f769050816002611b74565b9150610f51565b8661ffff168214610fa75760405163ef44ad6b60e01b815261ffff881660048201526024016109dd565b6004805465ffffffff000019166201000061ffff841690810265ffff000000001916919091176401000000009190910217905567ffffffffffffffff851615610ff05784610ffa565b67ffffffffffffffff5b6004600e6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060005b6004546110389060019061ffff16611b84565b61ffff168110156110f0576040805180820190915260008082526020820181815260068054600181018255925291517ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f9091018054925115156101000261ffff1990931660ff929092169190911791909117905584518590829081106110c0576110c06117ef565b60200260200101516005600083815260200190815260200160002090816110e791906119ad565b50600101611025565b5060045484906111069060019061ffff16611b84565b61ffff168151811061111a5761111a6117ef565b602090810291909101015160045460059060009061113e9060019061ffff16611b84565b61ffff168152602001908152602001600020908161115c91906119ad565b5050505050505050505050565b6000600261117561117f565b6104779190611b9e565b60045460009061047790640100000000900461ffff166002611b74565b60006111a661117f565b82519091506111b6600283611b9e565b81146111eb576111c7600283611b9e565b60405163a7dac49960e01b81526004810191909152602481018290526044016109dd565b60045460009061120090849061ffff1661181b565b905060005b828110156112c8576006611219838361182e565b81548110611229576112296117ef565b600091825260209091200154610100900460ff166112c057604051806040016040528086838151811061125e5761125e6117ef565b60209081029190910181015160ff16825260019101526006611280848461182e565b81548110611290576112906117ef565b6000918252602091829020835191018054939092015115156101000261ffff1990931660ff909116179190911790555b600101611205565b5050505050565b60008083601f8401126112e157600080fd5b50813567ffffffffffffffff8111156112f957600080fd5b6020830191508360208260051b850101111561131457600080fd5b9250929050565b6000806020838503121561132e57600080fd5b823567ffffffffffffffff81111561134557600080fd5b611351858286016112cf565b90969095509350505050565b60006020828403121561136f57600080fd5b5035919050565b6000815180845260005b8181101561139c57602081850181015186830182015201611380565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006113cf6020830184611376565b9392505050565b602080825282518282018190526000918401906040840190835b8181101561142857611412838551805160ff1682526020908101511515910152565b60209390930192604092909201916001016113f0565b509095945050505050565b6000806040838503121561144657600080fd5b82359150602083013560ff8116811461145e57600080fd5b809150509250929050565b80356001600160a01b038116811461095857600080fd5b803561ffff8116811461095857600080fd5b803567ffffffffffffffff8116811461095857600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156114e9576114e96114aa565b604052919050565b600082601f83011261150257600080fd5b813567ffffffffffffffff81111561151c5761151c6114aa565b61152f601f8201601f19166020016114c0565b81815284602083860101111561154457600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261157257600080fd5b813567ffffffffffffffff81111561158c5761158c6114aa565b8060051b61159c602082016114c0565b918252602081850181019290810190868411156115b857600080fd5b6020860192505b838310156115ff57823567ffffffffffffffff8111156115de57600080fd5b6115ed886020838a01016114f1565b835250602092830192909101906115bf565b9695505050505050565b60008060008060008060008060e0898b03121561162557600080fd5b61162e89611469565b9750602089013567ffffffffffffffff81111561164a57600080fd5b8901601f81018b1361165b57600080fd5b803567ffffffffffffffff81111561167257600080fd5b8b602082840101111561168457600080fd5b6020919091019750955061169a60408a01611480565b94506116a860608a01611492565b93506116b660808a01611492565b925060a089013567ffffffffffffffff8111156116d257600080fd5b6116de8b828c01611561565b92505060c089013567ffffffffffffffff8111156116fb57600080fd5b6117078b828c016114f1565b9150509295985092959890939650565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561177057603f1987860301845261175b858351611376565b9450602093840193919091019060010161173f565b50929695505050505050565b815160ff168152602080830151151590820152604081015b92915050565b6000602082840312156117ac57600080fd5b6113cf82611469565b600181811c908216806117c957607f821691505b6020821081036117e957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561179457611794611805565b8082018082111561179457611794611805565b600061ffff82168061185557611855611805565b6000190192915050565b6000808335601e1984360301811261187657600080fd5b83018035915067ffffffffffffffff82111561189157600080fd5b60200191503681900382131561131457600080fd5b601f821115610cf857806000526020600020601f840160051c810160208510156118cd5750805b601f840160051c820191505b818110156112c857600081556001016118d9565b67ffffffffffffffff831115611905576119056114aa565b6119198361191383546117b5565b836118a6565b6000601f84116001811461194d57600085156119355750838201355b600019600387901b1c1916600186901b1783556112c8565b600083815260209020601f19861690835b8281101561197e578685013582556020948501946001909201910161195e565b508682101561199b5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b815167ffffffffffffffff8111156119c7576119c76114aa565b6119db816119d584546117b5565b846118a6565b6020601f821160018114611a0f57600083156119f75750848201515b600019600385901b1c1916600184901b1784556112c8565b600084815260208120601f198516915b82811015611a3f5787850151825560209485019460019092019101611a1f565b5084821015611a5d5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b600061ffff821661ffff8103611a8457611a84611805565b60010192915050565b6001815b6001841115611ac857808504811115611aac57611aac611805565b6001841615611aba57908102905b60019390931c928002611a91565b935093915050565b600082611adf57506001611794565b81611aec57506000611794565b8160018114611b025760028114611b0c57611b28565b6001915050611794565b60ff841115611b1d57611b1d611805565b50506001821b611794565b5060208310610133831016604e8410600b8410161715611b4b575081810a611794565b611b586000198484611a8d565b8060001904821115611b6c57611b6c611805565b029392505050565b60006113cf61ffff841683611ad0565b61ffff828116828216039081111561179457611794611805565b600082611bbb57634e487b7160e01b600052601260045260246000fd5b50049056fea2646970667358221220ff1a6b249714a25a0e155e35d339711b36e49fd77610cd18ba46bda6e9f3e4d564736f6c634300081a003300000000