60e0604052620000126012600a62000435565b62000023906461f313f8806200044c565b608052600680546001600160a81b0319169055600780546001600160a01b03191661dead1790555f60a081905260c081905260088190556126ac6009556001600a55600b5534801562000074575f80fd5b506040518060400160405280600b81526020016a5065706520507572706c6560a81b81525060405180604001604052806005815260200164050455045560dc1b815250620000d1620000cb620001e960201b60201c565b620001ed565b6004620000df838262000505565b506005620000ee828262000505565b50505062000105336080516200023c60201b60201c565b60068054600160ff199182168117909255335f908152600c60205260409081902080549092169092179055516364e329cb60e11b815230600482015273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26024820152735c69bee701ef814a2b6a3edd4b1652cb9cc5aa6f9063c9c65396906044016020604051808303815f875af115801562000197573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001bd9190620005cd565b600660016101000a8154816001600160a01b0302191690836001600160a01b031602179055506200060b565b3390565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038216620002975760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060035f828254620002aa9190620005f5565b90915550506001600160a01b0382165f9081526001602052604081208054839290620002d8908490620005f5565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200037a57815f19048211156200035e576200035e62000326565b808516156200036c57918102915b93841c93908002906200033f565b509250929050565b5f8262000392575060016200042f565b81620003a057505f6200042f565b8160018114620003b95760028114620003c457620003e4565b60019150506200042f565b60ff841115620003d857620003d862000326565b50506001821b6200042f565b5060208310610133831016604e8410600b841016171562000409575081810a6200042f565b6200041583836200033a565b805f19048211156200042b576200042b62000326565b0290505b92915050565b5f6200044560ff84168362000382565b9392505050565b80820281158282048414176200042f576200042f62000326565b634e487b7160e01b5f52604160045260245ffd5b600181811c908216806200048f57607f821691505b602082108103620004ae57634e487b7160e01b5f52602260045260245ffd5b50919050565b601f82111562000321575f81815260208120601f850160051c81016020861015620004dc5750805b601f850160051c820191505b81811015620004fd57828155600101620004e8565b505050505050565b81516001600160401b0381111562000521576200052162000466565b62000539816200053284546200047a565b84620004b4565b602080601f8311600181146200056f575f8415620005575750858301515b5f19600386901b1c1916600185901b178555620004fd565b5f85815260208120601f198616915b828110156200059f578886015182559484019460019091019084016200057e565b5085821015620005bd57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b5f60208284031215620005de575f80fd5b81516001600160a01b038116811462000445575f80fd5b808201808211156200042f576200042f62000326565b60805160a05160c051611139620006415f395f81816101960152610a3c01525f81816101df01526109a701525f50506111395ff3fe608060405234801561000f575f80fd5b5060043610610127575f3560e01c806370a08231116100a9578063a70978291161006e578063a7097829146102a1578063a9059cbb146102a9578063d5aed6bf146102bc578063dd62ed3e146102cf578063f2fde38b14610307575f80fd5b806370a0823114610246578063715018a61461026e5780638da5cb5b1461027657806395d89b4114610286578063a457c2d71461028e575f80fd5b8063313ce567116100ef578063313ce567146101b857806339509351146101c757806347062402146101da57806349bd5a5e146102015780636338d14114610231575f80fd5b806306fdde031461012b578063095ea7b31461014957806318160ddd1461016c57806323b872dd1461017e5780632b14ca5614610191575b5f80fd5b61013361031a565b6040516101409190610ced565b60405180910390f35b61015c610157366004610d53565b6103aa565b6040519015158152602001610140565b6003545b604051908152602001610140565b61015c61018c366004610d7b565b6103c0565b6101707f000000000000000000000000000000000000000000000000000000000000000081565b60405160128152602001610140565b61015c6101d5366004610d53565b61046d565b6101707f000000000000000000000000000000000000000000000000000000000000000081565b6006546102199061010090046001600160a01b031681565b6040516001600160a01b039091168152602001610140565b61024461023f366004610e51565b6104a8565b005b610170610254366004610eb1565b6001600160a01b03165f9081526001602052604090205490565b6102446104ef565b5f546001600160a01b0316610219565b610133610523565b61015c61029c366004610d53565b610532565b6101706105ca565b61015c6102b7366004610d53565b610622565b6102446102ca366004610eb1565b61062e565b6101706102dd366004610ed1565b6001600160a01b039182165f90815260026020908152604080832093909416825291909152205490565b610244610315366004610eb1565b61067f565b60606004805461032990610f02565b80601f016020809104026020016040519081016040528092919081815260200182805461035590610f02565b80156103a05780601f10610377576101008083540402835291602001916103a0565b820191905f5260205f20905b81548152906001019060200180831161038357829003601f168201915b5050505050905090565b5f6103b6338484610719565b5060015b92915050565b5f6103cc84848461083c565b6001600160a01b0384165f908152600260209081526040808320338452909152902054828110156104555760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6104628533858403610719565b506001949350505050565b335f8181526002602090815260408083206001600160a01b038716845290915281205490916103b69185906104a3908690610f4e565b610719565b5f546001600160a01b031633146104d15760405162461bcd60e51b815260040161044c90610f61565b60046104dd8382610fe3565b5060056104ea8282610fe3565b505050565b5f546001600160a01b031633146105185760405162461bcd60e51b815260040161044c90610f61565b6105215f610ad2565b565b60606005805461032990610f02565b335f9081526002602090815260408083206001600160a01b0386168452909152812054828110156105b35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161044c565b6105c03385858403610719565b5060019392505050565b5f606442336040516020016105fb92919091825260601b6bffffffffffffffffffffffff1916602082015260340190565b604051602081830303815290604052805190602001205f1c61061d91906110b3565b905090565b5f6103b633848461083c565b5f546001600160a01b031633146106575760405162461bcd60e51b815260040161044c90610f61565b600680546001600160a01b0390921661010002610100600160a81b0319909216919091179055565b5f546001600160a01b031633146106a85760405162461bcd60e51b815260040161044c90610f61565b6001600160a01b03811661070d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161044c565b61071681610ad2565b50565b6001600160a01b03831661077b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161044c565b6001600160a01b0382166107dc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161044c565b6001600160a01b038381165f8181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60065460ff1615156001146108935760405162461bcd60e51b815260206004820152601c60248201527f436f6e74726163743a207472616465206973206e6f74206f70656e2100000000604482015260640161044c565b60065461010090046001600160a01b03161580156108b8575060065460ff1615156001145b15610930575f546001600160a01b03848116911614806108e457505f546001600160a01b038381169116145b6109305760405162461bcd60e51b815260206004820181905260248201527f436f6e74726163743a2074726164696e67206973206e6f742073746172746564604482015260640161044c565b600654819061010090046001600160a01b03161580159061095e57505f546001600160a01b03858116911614155b801561097757505f546001600160a01b03848116911614155b15610ac1576006545f906001600160a01b036101009091048116908616036109e857600a54600b5410156109cb577f00000000000000000000000000000000000000000000000000000000000000006109cf565b6008545b9050600b5460016109e09190610f4e565b600b55610a78565b6006546001600160a01b03610100909104811690851603610a78576001600160a01b0385165f908152600c602052604090205460ff161515600103610a2e57505f610a78565b600a54600b541015610a60577f0000000000000000000000000000000000000000000000000000000000000000610a75565b610a686105ca565b600954610a759190610f4e565b90505b8015610abf575f612710610a8c83866110c6565b610a9691906110dd565b9050610aa281856110f0565b600754909350610abd9087906001600160a01b031683610b21565b505b505b610acc848483610b21565b50505050565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038316610b855760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161044c565b6001600160a01b038216610be75760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161044c565b6001600160a01b0383165f9081526001602052604090205481811015610c5e5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161044c565b6001600160a01b038085165f90815260016020526040808220858503905591851681529081208054849290610c94908490610f4e565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ce091815260200190565b60405180910390a3610acc565b5f6020808352835180828501525f5b81811015610d1857858101830151858201604001528201610cfc565b505f604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610d4e575f80fd5b919050565b5f8060408385031215610d64575f80fd5b610d6d83610d38565b946020939093013593505050565b5f805f60608486031215610d8d575f80fd5b610d9684610d38565b9250610da460208501610d38565b9150604084013590509250925092565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112610dd7575f80fd5b813567ffffffffffffffff80821115610df257610df2610db4565b604051601f8301601f19908116603f01168101908282118183101715610e1a57610e1a610db4565b81604052838152866020858801011115610e32575f80fd5b836020870160208301375f602085830101528094505050505092915050565b5f8060408385031215610e62575f80fd5b823567ffffffffffffffff80821115610e79575f80fd5b610e8586838701610dc8565b93506020850135915080821115610e9a575f80fd5b50610ea785828601610dc8565b9150509250929050565b5f60208284031215610ec1575f80fd5b610eca82610d38565b9392505050565b5f8060408385031215610ee2575f80fd5b610eeb83610d38565b9150610ef960208401610d38565b90509250929050565b600181811c90821680610f1657607f821691505b602082108103610f3457634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b808201808211156103ba576103ba610f3a565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b601f8211156104ea575f81815260208120601f850160051c81016020861015610fbc5750805b601f850160051c820191505b81811015610fdb57828155600101610fc8565b505050505050565b815167ffffffffffffffff811115610ffd57610ffd610db4565b6110118161100b8454610f02565b84610f96565b602080601f831160018114611044575f841561102d5750858301515b5f19600386901b1c1916600185901b178555610fdb565b5f85815260208120601f198616915b8281101561107257888601518255948401946001909101908401611053565b508582101561108f57878501515f19600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b5f52601260045260245ffd5b5f826110c1576110c161109f565b500690565b80820281158282048414176103ba576103ba610f3a565b5f826110eb576110eb61109f565b500490565b818103818111156103ba576103ba610f3a56fea264697066735822122004c58277e77cabf7830079bb604beb1223d49253cb8d538069282089d5748b4864736f6c63430008140033