60806040525f80555f60015534801562000017575f80fd5b50620000266012600a620001d9565b6200003590620f4240620001f0565b335f8181526002602090815260408083209490945530825260038152838220737a250d5630b4cf539739df2c5dacb4c659f2488d835290529182205f199055907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef620000a46012600a620001d9565b620000b390620f4240620001f0565b60405190815260200160405180910390a36200020a565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200011e57815f1904821115620001025762000102620000ca565b808516156200011057918102915b93841c9390800290620000e3565b509250929050565b5f826200013657506001620001d3565b816200014457505f620001d3565b81600181146200015d5760028114620001685762000188565b6001915050620001d3565b60ff8411156200017c576200017c620000ca565b50506001821b620001d3565b5060208310610133831016604e8410600b8410161715620001ad575081810a620001d3565b620001b98383620000de565b805f1904821115620001cf57620001cf620000ca565b0290505b92915050565b5f620001e960ff84168362000126565b9392505050565b8082028115828204841417620001d357620001d3620000ca565b610ac780620002185f395ff3fe60806040526004361061009d575f3560e01c8063313ce56711610062578063313ce5671461018457806370a08231146101aa5780638a8c523c146101d557806395d89b41146100a8578063a9059cbb146101e9578063dd62ed3e14610208575f80fd5b806306fdde03146100a8578063095ea7b3146100f35780630b78f9c01461012257806318160ddd1461014357806323b872dd14610165575f80fd5b366100a457005b5f80fd5b3480156100b3575f80fd5b506100dd6040518060400160405280600a815260200169119b185c1c1e509a5c9960b21b81525081565b6040516100ea919061077f565b60405180910390f35b3480156100fe575f80fd5b5061011261010d3660046107e5565b61023e565b60405190151581526020016100ea565b34801561012d575f80fd5b5061014161013c36600461080d565b6102aa565b005b34801561014e575f80fd5b506101576102e7565b6040519081526020016100ea565b348015610170575f80fd5b5061011261017f36600461082d565b610303565b34801561018f575f80fd5b50610198601281565b60405160ff90911681526020016100ea565b3480156101b5575f80fd5b506101576101c4366004610866565b60026020525f908152604090205481565b3480156101e0575f80fd5b50610141610350565b3480156101f4575f80fd5b506101126102033660046107e5565b61039a565b348015610213575f80fd5b5061015761022236600461087f565b600360209081525f928352604080842090915290825290205481565b335f8181526003602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906102989086815260200190565b60405180910390a35060015b92915050565b33733e47da7601ceeb2631b1aabb9181b450de4f2f1a146102dd57604051629af2b160e81b815260040160405180910390fd5b5f91909155600155565b6102f36012600a6109a4565b61030090620f42406109b2565b81565b6001600160a01b0383165f9081526003602090815260408083203384529091528120805483919083906103379084906109c9565b9091555061034890508484846103ad565b949350505050565b33733e47da7601ceeb2631b1aabb9181b450de4f2f1a1461036f575f80fd5b600454600160a81b900460ff1615610385575f80fd5b6004805460ff60a81b1916600160a81b179055565b5f6103a63384846103ad565b9392505050565b6004545f90600160a81b900460ff16806103e357506001600160a01b038416733e47da7601ceeb2631b1aabb9181b450de4f2f1a145b8061040a57506001600160a01b038316733e47da7601ceeb2631b1aabb9181b450de4f2f1a145b610412575f80fd5b600454600160a81b900460ff1615801561043557506004546001600160a01b0316155b801561044057505f82115b1561046157600480546001600160a01b0319166001600160a01b0385161790555b6001600160a01b0384165f90815260026020526040812080548492906104889084906109c9565b90915550506004546001600160a01b0384811691161480156104b45750600454600160a01b900460ff16155b80156104f2575060646104c96012600a6109a4565b6104d690620f42406109b2565b6104e091906109dc565b305f9081526002602052604090205410155b1561067b576004805460ff60a01b1916600160a01b1790556040805160028082526060820183525f9260208301908036833701905050905030815f8151811061053d5761053d6109fb565b60200260200101906001600160a01b031690816001600160a01b03168152505073c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110610585576105856109fb565b6001600160a01b0390921660209283029190910190910152737a250d5630b4cf539739df2c5dacb4c659f2488d63791ac94760646105c56012600a6109a4565b6105d290620f42406109b2565b6105dc91906109dc565b5f8430426040518663ffffffff1660e01b8152600401610600959493929190610a0f565b5f604051808303815f87803b158015610617575f80fd5b505af1158015610629573d5f803e3d5ffd5b5050604051733e47da7601ceeb2631b1aabb9181b450de4f2f1a92504780156108fc029250905f818181858888f1935050505015801561066b573d5f803e3d5ffd5b50506004805460ff60a01b191690555b6001600160a01b03841630146106fa576004545f906064906001600160a01b038781169116146106ad576001546106b0565b5f545b6106ba90856109b2565b6106c491906109dc565b90506106d081846109c9565b305f908152600260205260408120805492955083929091906106f3908490610a7e565b9091555050505b6001600160a01b0383165f9081526002602052604081208054849290610721908490610a7e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161076d91815260200190565b60405180910390a35060019392505050565b5f6020808352835180828501525f5b818110156107aa5785810183015185820160400152820161078e565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b03811681146107e0575f80fd5b919050565b5f80604083850312156107f6575f80fd5b6107ff836107ca565b946020939093013593505050565b5f806040838503121561081e575f80fd5b50508035926020909101359150565b5f805f6060848603121561083f575f80fd5b610848846107ca565b9250610856602085016107ca565b9150604084013590509250925092565b5f60208284031215610876575f80fd5b6103a6826107ca565b5f8060408385031215610890575f80fd5b610899836107ca565b91506108a7602084016107ca565b90509250929050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156108fe57815f19048211156108e4576108e46108b0565b808516156108f157918102915b93841c93908002906108c9565b509250929050565b5f82610914575060016102a4565b8161092057505f6102a4565b816001811461093657600281146109405761095c565b60019150506102a4565b60ff841115610951576109516108b0565b50506001821b6102a4565b5060208310610133831016604e8410600b841016171561097f575081810a6102a4565b61098983836108c4565b805f190482111561099c5761099c6108b0565b029392505050565b5f6103a660ff841683610906565b80820281158282048414176102a4576102a46108b0565b818103818111156102a4576102a46108b0565b5f826109f657634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015610a5d5784516001600160a01b031683529383019391830191600101610a38565b50506001600160a01b03969096166060850152505050608001529392505050565b808201808211156102a4576102a46108b056fea2646970667358221220358af8f47abaa4a9a21a8f013dc31a453c0725902d3c312db3361618f85d185564736f6c63430008150033