60a0604052306080523480156200001557600080fd5b506200002062000026565b620000e7565b600054610100900460ff1615620000935760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e5576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b608051612ac86200011f600039600081816106a5015281816106e501528181610bbf01528181610bff0152610c7b0152612ac86000f3fe6080604052600436106101315760003560e01c806301ffc9a7146101365780630408aded1461016b57806306fdde031461019c578063081812fc146101be578063095ea7b3146101f657806323b872dd1461021857806332f3c629146102385780633659cfe61461025957806341d5b8031461027957806342842e0e14610299578063457c964c146102b9578063485cc955146102d95780634f1ef286146102f957806352d1902d1461030c5780636352211e1461032f57806370a082311461034f578063715018a61461036f5780638da5cb5b1461038457806395d89b41146103995780639f181b5e146103ae578063a22cb465146103c5578063b88d4fde146103e5578063c87b56dd14610405578063e985e9c514610425578063f2fde38b14610445578063f851a44014610465575b600080fd5b34801561014257600080fd5b50610156610151366004612087565b610486565b60405190151581526020015b60405180910390f35b34801561017757600080fd5b506101566101863660046120a4565b6101626020526000908152604090205460ff1681565b3480156101a857600080fd5b506101b1610497565b604051610162919061210d565b3480156101ca57600080fd5b506101de6101d93660046120a4565b610529565b6040516001600160a01b039091168152602001610162565b34801561020257600080fd5b5061021661021136600461213c565b610550565b005b34801561022457600080fd5b50610216610233366004612166565b61066a565b34801561024457600080fd5b50610161546101de906001600160a01b031681565b34801561026557600080fd5b506102166102743660046121a2565b61069b565b34801561028557600080fd5b50610216610294366004612272565b610763565b3480156102a557600080fd5b506102166102b4366004612166565b6107a2565b3480156102c557600080fd5b506102166102d4366004612352565b6107bd565b3480156102e557600080fd5b506102166102f4366004612417565b610a0d565b610216610307366004612272565b610bb5565b34801561031857600080fd5b50610321610c6e565b604051908152602001610162565b34801561033b57600080fd5b506101de61034a3660046120a4565b610d1c565b34801561035b57600080fd5b5061032161036a3660046121a2565b610d50565b34801561037b57600080fd5b50610216610dd6565b34801561039057600080fd5b506101de610dea565b3480156103a557600080fd5b506101b1610df9565b3480156103ba57600080fd5b5061032161015f5481565b3480156103d157600080fd5b506102166103e036600461244a565b610e08565b3480156103f157600080fd5b50610216610400366004612486565b610e13565b34801561041157600080fd5b506101b16104203660046120a4565b610e4b565b34801561043157600080fd5b50610156610440366004612417565b610e56565b34801561045157600080fd5b506102166104603660046121a2565b610e84565b34801561047157600080fd5b50610160546101de906001600160a01b031681565b600061049182610efa565b92915050565b6060606580546104a6906124ed565b80601f01602080910402602001604051908101604052809291908181526020018280546104d2906124ed565b801561051f5780601f106104f45761010080835404028352916020019161051f565b820191906000526020600020905b81548152906001019060200180831161050257829003601f168201915b5050505050905090565b600061053482610f1f565b506000908152606960205260409020546001600160a01b031690565b600061055b82610d1c565b9050806001600160a01b0316836001600160a01b0316036105cd5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105e957506105e98133610e56565b61065b5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016105c4565b6106658383610f44565b505050565b6106743382610fb2565b6106905760405162461bcd60e51b81526004016105c490612527565b610665838383611011565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036106e35760405162461bcd60e51b81526004016105c490612574565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610715611163565b6001600160a01b03161461073b5760405162461bcd60e51b81526004016105c4906125ae565b6107448161117f565b6040805160008082526020820190925261076091839190611187565b50565b61076b6112f2565b6107788261015f54611351565b61078561015f548261144c565b600161015f600082825461079991906125e8565b90915550505050565b61066583838360405180602001604052806000815250610e13565b6000818152610162602052604090205460ff16156108125760405162461bcd60e51b8152602060048201526012602482015271139bdb98d948185b1c9958591e481d5cd95960721b60448201526064016105c4565b8163ffffffff164211156108605760405162461bcd60e51b815260206004820152601560248201527414da59db985d1d5c99481a185cc8195e1c1a5c9959605a1b60448201526064016105c4565b6000868686858560405160200161087b95949392919061263c565b6040516020818303038152906040528051906020012090506000816040516020016108d191907b0ca2ba3432b932bab69029b4b3b732b21026b2b9b9b0b3b29d05199960211b8152601c810191909152603c0190565b60405160208183030381529060405280519060200120905060006108f58287611508565b610160549091506001600160a01b0380831691161461094c5760405162461bcd60e51b815260206004820152601360248201527229b4b3b732b91034b9903737ba1030b236b4b760691b60448201526064016105c4565b61016154604051631ac8311560e21b81526001600160a01b0390911690636b20c454906109819033908d908d906004016126b4565b600060405180830381600087803b15801561099b57600080fd5b505af11580156109af573d6000803e3d6000fd5b505050600085815261016260205260409020805460ff191660011790555061015f546109dc903390611351565b6109e961015f548861144c565b600161015f60008282546109fd91906125e8565b9091555050505050505050505050565b600054610100900460ff1615808015610a2d5750600054600160ff909116105b80610a4e5750610a3c3061152c565b158015610a4e575060005460ff166001145b610ab15760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105c4565b6000805460ff191660011790558015610ad4576000805461ff0019166101001790555b610b1b6040518060400160405280600a81526020016952756e6545524337323160b01b81525060405180604001604052806003815260200162524e4560e81b81525061153b565b610b2361156c565b610b2b611593565b610b3361156c565b61016080546001600160a01b038086166001600160a01b031992831617909255610161805492851692909116919091179055600061015f558015610665576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610bfd5760405162461bcd60e51b81526004016105c490612574565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c2f611163565b6001600160a01b031614610c555760405162461bcd60e51b81526004016105c4906125ae565b610c5e8261117f565b610c6a82826001611187565b5050565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610d095760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b60648201526084016105c4565b50600080516020612a2c83398151915290565b600080610d28836115c2565b90506001600160a01b0381166104915760405162461bcd60e51b81526004016105c4906126ea565b60006001600160a01b038216610dba5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105c4565b506001600160a01b031660009081526068602052604090205490565b610dde6112f2565b610de860006115dd565b565b60c9546001600160a01b031690565b6060606680546104a6906124ed565b610c6a33838361162f565b610e1d3383610fb2565b610e395760405162461bcd60e51b81526004016105c490612527565b610e45848484846116f9565b50505050565b60606104918261172c565b6001600160a01b039182166000908152606a6020908152604080832093909416825291909152205460ff1690565b610e8c6112f2565b6001600160a01b038116610ef15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105c4565b610760816115dd565b60006001600160e01b03198216632483248360e11b1480610491575061049182611834565b610f2881611884565b6107605760405162461bcd60e51b81526004016105c4906126ea565b600081815260696020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f7982610d1c565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610fbe83610d1c565b9050806001600160a01b0316846001600160a01b03161480610fe55750610fe58185610e56565b806110095750836001600160a01b0316610ffe84610529565b6001600160a01b0316145b949350505050565b826001600160a01b031661102482610d1c565b6001600160a01b03161461104a5760405162461bcd60e51b81526004016105c49061271c565b6001600160a01b0382166110ac5760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105c4565b826001600160a01b03166110bf82610d1c565b6001600160a01b0316146110e55760405162461bcd60e51b81526004016105c49061271c565b600081815260696020908152604080832080546001600160a01b03199081169091556001600160a01b038781168086526068855283862080546000190190559087168086528386208054600101905586865260679094528285208054909216841790915590518493600080516020612a7383398151915291a4505050565b600080516020612a2c833981519152546001600160a01b031690565b6107606112f2565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156111ba57610665836118a1565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611214575060408051601f3d908101601f1916820190925261121191810190612761565b60015b6112775760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b60648201526084016105c4565b600080516020612a2c83398151915281146112e65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b60648201526084016105c4565b5061066583838361193b565b336112fb610dea565b6001600160a01b031614610de85760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016105c4565b6001600160a01b0382166113a75760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105c4565b6113b081611884565b156113cd5760405162461bcd60e51b81526004016105c49061277a565b6113d681611884565b156113f35760405162461bcd60e51b81526004016105c49061277a565b6001600160a01b038216600081815260686020908152604080832080546001019055848352606790915280822080546001600160a01b031916841790555183929190600080516020612a73833981519152908290a45050565b61145582611884565b6114b85760405162461bcd60e51b815260206004820152602e60248201527f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60448201526d32bc34b9ba32b73a103a37b5b2b760911b60648201526084016105c4565b60008281526097602052604090206114d082826127fe565b506040518281527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce79060200160405180910390a15050565b60008060006115178585611960565b91509150611524816119a5565b509392505050565b6001600160a01b03163b151590565b600054610100900460ff166115625760405162461bcd60e51b81526004016105c4906128bd565b610c6a8282611aea565b600054610100900460ff16610de85760405162461bcd60e51b81526004016105c4906128bd565b600054610100900460ff166115ba5760405162461bcd60e51b81526004016105c4906128bd565b610de8611b2a565b6000908152606760205260409020546001600160a01b031690565b60c980546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361168c5760405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b60448201526064016105c4565b6001600160a01b038381166000818152606a6020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611704848484611011565b61171084848484611b5a565b610e455760405162461bcd60e51b81526004016105c490612908565b606061173782610f1f565b60008281526097602052604081208054611750906124ed565b80601f016020809104026020016040519081016040528092919081815260200182805461177c906124ed565b80156117c95780601f1061179e576101008083540402835291602001916117c9565b820191906000526020600020905b8154815290600101906020018083116117ac57829003601f168201915b5050505050905060006117e760408051602081019091526000815290565b905080516000036117f9575092915050565b81511561182b57808260405160200161181392919061295a565b60405160208183030381529060405292505050919050565b61100984611c62565b60006001600160e01b031982166380ac58cd60e01b148061186557506001600160e01b03198216635b5e139f60e01b145b8061049157506301ffc9a760e01b6001600160e01b0319831614610491565b600080611890836115c2565b6001600160a01b0316141592915050565b6118aa8161152c565b61190c5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016105c4565b600080516020612a2c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b61194483611cd6565b6000825111806119515750805b1561066557610e458383611d16565b60008082516041036119965760208301516040840151606085015160001a61198a87828585611d3b565b9450945050505061199e565b506000905060025b9250929050565b60008160048111156119b9576119b9612989565b036119c15750565b60018160048111156119d5576119d5612989565b03611a1d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b60448201526064016105c4565b6002816004811115611a3157611a31612989565b03611a7e5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105c4565b6003816004811115611a9257611a92612989565b036107605760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105c4565b600054610100900460ff16611b115760405162461bcd60e51b81526004016105c4906128bd565b6065611b1d83826127fe565b50606661066582826127fe565b600054610100900460ff16611b515760405162461bcd60e51b81526004016105c4906128bd565b610de8336115dd565b6000611b6e846001600160a01b031661152c565b15611c5757604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611ba590339089908890889060040161299f565b6020604051808303816000875af1925050508015611be0575060408051601f3d908101601f19168201909252611bdd918101906129d2565b60015b611c3d573d808015611c0e576040519150601f19603f3d011682016040523d82523d6000602084013e611c13565b606091505b508051600003611c355760405162461bcd60e51b81526004016105c490612908565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611009565b506001949350505050565b6060611c6d82610f1f565b6000611c8460408051602081019091526000815290565b90506000815111611ca45760405180602001604052806000815250611ccf565b80611cae84611df5565b604051602001611cbf92919061295a565b6040516020818303038152906040525b9392505050565b611cdf816118a1565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6060611ccf8383604051806060016040528060278152602001612a4c60279139611e87565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b03831115611d685750600090506003611dec565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015611dbc573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116611de557600060019250925050611dec565b9150600090505b94509492505050565b60606000611e0283611eff565b60010190506000816001600160401b03811115611e2157611e216121bd565b6040519080825280601f01601f191660200182016040528015611e4b576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084611e5557509392505050565b6060600080856001600160a01b031685604051611ea491906129ef565b600060405180830381855af49150503d8060008114611edf576040519150601f19603f3d011682016040523d82523d6000602084013e611ee4565b606091505b5091509150611ef586838387611fd5565b9695505050505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310611f3e5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6904ee2d6d415b85acef8160201b8310611f68576904ee2d6d415b85acef8160201b830492506020015b662386f26fc100008310611f8657662386f26fc10000830492506010015b6305f5e1008310611f9e576305f5e100830492506008015b6127108310611fb257612710830492506004015b60648310611fc4576064830492506002015b600a83106104915760010192915050565b6060831561204257825160000361203b57611fef8561152c565b61203b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105c4565b5081611009565b61100983838151156120575781518083602001fd5b8060405162461bcd60e51b81526004016105c4919061210d565b6001600160e01b03198116811461076057600080fd5b60006020828403121561209957600080fd5b8135611ccf81612071565b6000602082840312156120b657600080fd5b5035919050565b60005b838110156120d85781810151838201526020016120c0565b50506000910152565b600081518084526120f98160208601602086016120bd565b601f01601f19169290920160200192915050565b602081526000611ccf60208301846120e1565b80356001600160a01b038116811461213757600080fd5b919050565b6000806040838503121561214f57600080fd5b61215883612120565b946020939093013593505050565b60008060006060848603121561217b57600080fd5b61218484612120565b925061219260208501612120565b9150604084013590509250925092565b6000602082840312156121b457600080fd5b611ccf82612120565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156121fb576121fb6121bd565b604052919050565b600082601f83011261221457600080fd5b81356001600160401b0381111561222d5761222d6121bd565b612240601f8201601f19166020016121d3565b81815284602083860101111561225557600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561228557600080fd5b61228e83612120565b915060208301356001600160401b038111156122a957600080fd5b6122b585828601612203565b9150509250929050565b600082601f8301126122d057600080fd5b813560206001600160401b038211156122eb576122eb6121bd565b8160051b6122fa8282016121d3565b928352848101820192828101908785111561231457600080fd5b83870192505b848310156123335782358252918301919083019061231a565b979650505050505050565b803563ffffffff8116811461213757600080fd5b60008060008060008060c0878903121561236b57600080fd5b86356001600160401b038082111561238257600080fd5b61238e8a838b016122bf565b975060208901359150808211156123a457600080fd5b6123b08a838b016122bf565b965060408901359150808211156123c657600080fd5b6123d28a838b01612203565b955060608901359150808211156123e857600080fd5b506123f589828a01612203565b9350506124046080880161233e565b915060a087013590509295509295509295565b6000806040838503121561242a57600080fd5b61243383612120565b915061244160208401612120565b90509250929050565b6000806040838503121561245d57600080fd5b61246683612120565b91506020830135801515811461247b57600080fd5b809150509250929050565b6000806000806080858703121561249c57600080fd5b6124a585612120565b93506124b360208601612120565b92506040850135915060608501356001600160401b038111156124d557600080fd5b6124e187828801612203565b91505092959194509250565b600181811c9082168061250157607f821691505b60208210810361252157634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b6020808252602c90820152600080516020612a0c83398151915260408201526b19195b1959d85d1958d85b1b60a21b606082015260800190565b6020808252602c90820152600080516020612a0c83398151915260408201526b6163746976652070726f787960a01b606082015260800190565b8082018082111561049157634e487b7160e01b600052601160045260246000fd5b60008151602080840160005b8381101561263157815187529582019590820190600101612615565b509495945050505050565b600061265161264b8389612609565b87612609565b8551612661818360208a016120bd565b60e09590951b6001600160e01b0319169401938452505060048201526024019392505050565b80518083526020928301926000919080840183831561263157815187529582019590820190600101612615565b6001600160a01b03841681526060602082018190526000906126d890830185612687565b8281036040840152611ef58185612687565b602080825260189082015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b604082015260600190565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60006020828403121561277357600080fd5b5051919050565b6020808252601c908201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b604082015260600190565b601f82111561066557600081815260208120601f850160051c810160208610156127d75750805b601f850160051c820191505b818110156127f6578281556001016127e3565b505050505050565b81516001600160401b03811115612817576128176121bd565b61282b8161282584546124ed565b846127b0565b602080601f83116001811461286057600084156128485750858301515b600019600386901b1c1916600185901b1785556127f6565b600085815260208120601f198616915b8281101561288f57888601518255948401946001909101908401612870565b50858210156128ad5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6000835161296c8184602088016120bd565b8351908301906129808183602088016120bd565b01949350505050565b634e487b7160e01b600052602160045260246000fd5b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090611ef5908301846120e1565b6000602082840312156129e457600080fd5b8151611ccf81612071565b60008251612a018184602087016120bd565b919091019291505056fe46756e6374696f6e206d7573742062652063616c6c6564207468726f75676820360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208acb3cb43aea30ed8b9204abbb03829cd5ac332f61bfb957c2d5f6428a1bf7e564736f6c63430008130033