0x60806040523480156200001157600080fd5b50600054610100900460ff1615808015620000335750600054600160ff909116105b8062000063575062000050306200013d60201b620009ae1760201c565b15801562000063575060005460ff166001145b620000cb5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b6000805460ff191660011790558015620000ef576000805461ff0019166101001790555b801562000136576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b506200014c565b6001600160a01b03163b151590565b611b31806200015c6000396000f3fe60806040526004361061014f5760003560e01c80637ecebe00116100b6578063b760faf91161006f578063b760faf9146103d8578063c2eeeebd146103eb578063c820f1461461040b578063d0e30db01461042b578063d505accf14610433578063dd62ed3e1461045357600080fd5b80637ecebe001461030b5780638c2a993e1461032b5780638fa74a0e1461034b57806395d89b4114610383578063a457c2d714610398578063a9059cbb146103b857600080fd5b8063313ce56711610108578063313ce5671461023e5780633644e5151461026057806339509351146102755780634000aea01461029557806370a08231146102b557806374f4f547146102eb57600080fd5b806306fdde0314610164578063095ea7b31461018f57806318160ddd146101bf578063205c2878146101de57806323b872dd146101fe5780632e1a7d4d1461021e57600080fd5b3661015f5761015d33610473565b005b600080fd5b34801561017057600080fd5b50610179610480565b604051610186919061159b565b60405180910390f35b34801561019b57600080fd5b506101af6101aa3660046115d1565b610512565b6040519015158152602001610186565b3480156101cb57600080fd5b506035545b604051908152602001610186565b3480156101ea57600080fd5b5061015d6101f93660046115d1565b61052c565b34801561020a57600080fd5b506101af6102193660046115fb565b6105d4565b34801561022a57600080fd5b5061015d610239366004611637565b6105f8565b34801561024a57600080fd5b5060385460405160ff9091168152602001610186565b34801561026c57600080fd5b506101d0610602565b34801561028157600080fd5b506101af6102903660046115d1565b610611565b3480156102a157600080fd5b506101af6102b03660046116dc565b610633565b3480156102c157600080fd5b506101d06102d0366004611747565b6001600160a01b031660009081526033602052604090205490565b3480156102f757600080fd5b5061015d6103063660046115d1565b6106a9565b34801561031757600080fd5b506101d0610326366004611747565b610711565b34801561033757600080fd5b5061015d6103463660046115d1565b61072f565b34801561035757600080fd5b5060cc5461036b906001600160a01b031681565b6040516001600160a01b039091168152602001610186565b34801561038f57600080fd5b50610179610768565b3480156103a457600080fd5b506101af6103b33660046115d1565b610777565b3480156103c457600080fd5b506101af6103d33660046115d1565b6107f2565b61015d6103e6366004611747565b610473565b3480156103f757600080fd5b5060cd5461036b906001600160a01b031681565b34801561041757600080fd5b5061015d610426366004611793565b610800565b61015d610814565b34801561043f57600080fd5b5061015d61044e366004611829565b61081f565b34801561045f57600080fd5b506101d061046e366004611893565b610983565b61047d81346109bd565b50565b60606036805461048f906118c6565b80601f01602080910402602001604051908101604052809291908181526020018280546104bb906118c6565b80156105085780601f106104dd57610100808354040283529160200191610508565b820191906000526020600020905b8154815290600101906020018083116104eb57829003601f168201915b5050505050905090565b600033610520818585610a6d565b60019150505b92915050565b6105363382610b91565b6000826001600160a01b0316826040515b60006040518083038185875af1925050503d8060008114610584576040519150601f19603f3d011682016040523d82523d6000602084013e610589565b606091505b50509050806105cf5760405162461bcd60e51b815260206004820152600d60248201526c2320a4a62faa2920a729a322a960991b60448201526064015b60405180910390fd5b505050565b6000336105e2858285610cb3565b6105ed858585610d2d565b506001949350505050565b61047d338261052c565b600061060c610ec6565b905090565b6000336105208185856106248383610983565b61062e91906118fa565b610a6d565b600061063f84846107f2565b50836001600160a01b0316336001600160a01b03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16858560405161068592919061191b565b60405180910390a3833b1561069f5761069f848484610f41565b5060019392505050565b60cc546001600160a01b031633146106f25760405162461bcd60e51b815260206004820152600c60248201526b4f4e4c595f4741544557415960a01b60448201526064016105c6565b6106fc8282610b91565b6000336001600160a01b031682604051610547565b6001600160a01b038116600090815260996020526040812054610526565b60405162461bcd60e51b815260206004820152600e60248201526d1393d7d094925111d157d352539560921b60448201526064016105c6565b60606037805461048f906118c6565b600033816107858286610983565b9050838110156107e55760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105c6565b6105ed8286868403610a6d565b600033610520818585610d2d565b61080d8585858585610fab565b5050505050565b61081d33610473565b565b8342111561086f5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105c6565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861089e8c611076565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108f98261109e565b90506000610909828787876110ec565b9050896001600160a01b0316816001600160a01b03161461096c5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105c6565b6109778a8a8a610a6d565b50505050505050505050565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6001600160a01b03163b151590565b6001600160a01b038216610a135760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105c6565b8060356000828254610a2591906118fa565b90915550506001600160a01b038216600081815260336020908152604080832080548601905551848152600080516020611adc833981519152910160405180910390a35b5050565b6001600160a01b038316610acf5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105c6565b6001600160a01b038216610b305760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105c6565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038216610bf15760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105c6565b6001600160a01b03821660009081526033602052604090205481811015610c655760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105c6565b6001600160a01b0383166000818152603360209081526040808320868603905560358054879003905551858152919291600080516020611adc833981519152910160405180910390a3505050565b6000610cbf8484610983565b90506000198114610d275781811015610d1a5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105c6565b610d278484848403610a6d565b50505050565b6001600160a01b038316610d915760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105c6565b6001600160a01b038216610df35760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105c6565b6001600160a01b03831660009081526033602052604090205481811015610e6b5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105c6565b6001600160a01b038085166000818152603360205260408082208686039055928616808252908390208054860190559151600080516020611adc83398151915290610eb99086815260200190565b60405180910390a3610d27565b600061060c7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610ef560655490565b6066546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b604051635260769b60e11b815283906001600160a01b0382169063a4c0ed3690610f739033908790879060040161193c565b600060405180830381600087803b158015610f8d57600080fd5b505af1158015610fa1573d6000803e3d6000fd5b5050505050505050565b6001600160a01b038216610ff35760405162461bcd60e51b815260206004820152600f60248201526e494e56414c49445f4741544557415960881b60448201526064016105c6565b60cc546001600160a01b03161561103b5760405162461bcd60e51b815260206004820152600c60248201526b1053149150511657d253925560a21b60448201526064016105c6565b60cc80546001600160a01b038085166001600160a01b03199283161790925560cd80549284169290911691909117905561080d858585611114565b6001600160a01b03811660009081526099602052604090208054600181018255905b50919050565b60006105266110ab610ec6565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b60008060006110fd87878787611248565b9150915061110a81611302565b5095945050505050565b600054610100900460ff16158080156111345750600054600160ff909116105b806111555750611143306109ae565b158015611155575060005460ff166001145b6111b85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016105c6565b6000805460ff1916600117905580156111db576000805461ff0019166101001790555b6111e484611447565b6111ee8484611491565b6038805460ff191660ff84161790558015610d27576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383111561127557506000905060036112f9565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156112c9573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166112f2576000600192509250506112f9565b9150600090505b94509492505050565b60008160048111156113165761131661196c565b0361131e5750565b60018160048111156113325761133261196c565b0361137a5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b60448201526064016105c6565b600281600481111561138e5761138e61196c565b036113db5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105c6565b60038160048111156113ef576113ef61196c565b0361047d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105c6565b600054610100900460ff1661146e5760405162461bcd60e51b81526004016105c690611982565b61047d81604051806040016040528060018152602001603160f81b8152506114c2565b600054610100900460ff166114b85760405162461bcd60e51b81526004016105c690611982565b610a698282611503565b600054610100900460ff166114e95760405162461bcd60e51b81526004016105c690611982565b815160209283012081519190920120606591909155606655565b600054610100900460ff1661152a5760405162461bcd60e51b81526004016105c690611982565b60366115368382611a1b565b5060376115438282611a1b565b50506038805460ff1916601217905550565b6000815180845260005b8181101561157b5760208185018101518683018201520161155f565b506000602082860101526020601f19601f83011685010191505092915050565b6020815260006115ae6020830184611555565b9392505050565b80356001600160a01b03811681146115cc57600080fd5b919050565b600080604083850312156115e457600080fd5b6115ed836115b5565b946020939093013593505050565b60008060006060848603121561161057600080fd5b611619846115b5565b9250611627602085016115b5565b9150604084013590509250925092565b60006020828403121561164957600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b600067ffffffffffffffff8084111561168157611681611650565b604051601f8501601f19908116603f011681019082821181831017156116a9576116a9611650565b816040528093508581528686860111156116c257600080fd5b858560208301376000602087830101525050509392505050565b6000806000606084860312156116f157600080fd5b6116fa846115b5565b925060208401359150604084013567ffffffffffffffff81111561171d57600080fd5b8401601f8101861361172e57600080fd5b61173d86823560208401611666565b9150509250925092565b60006020828403121561175957600080fd5b6115ae826115b5565b600082601f83011261177357600080fd5b6115ae83833560208501611666565b803560ff811681146115cc57600080fd5b600080600080600060a086880312156117ab57600080fd5b853567ffffffffffffffff808211156117c357600080fd5b6117cf89838a01611762565b965060208801359150808211156117e557600080fd5b506117f288828901611762565b94505061180160408701611782565b925061180f606087016115b5565b915061181d608087016115b5565b90509295509295909350565b600080600080600080600060e0888a03121561184457600080fd5b61184d886115b5565b965061185b602089016115b5565b9550604088013594506060880135935061187760808901611782565b925060a0880135915060c0880135905092959891949750929550565b600080604083850312156118a657600080fd5b6118af836115b5565b91506118bd602084016115b5565b90509250929050565b600181811c908216806118da57607f821691505b60208210810361109857634e487b7160e01b600052602260045260246000fd5b8082018082111561052657634e487b7160e01b600052601160045260246000fd5b8281526040602082015260006119346040830184611555565b949350505050565b60018060a01b03841681528260208201526060604082015260006119636060830184611555565b95945050505050565b634e487b7160e01b600052602160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b601f8211156105cf57600081815260208120601f850160051c810160208610156119f45750805b601f850160051c820191505b81811015611a1357828155600101611a00565b505050505050565b815167ffffffffffffffff811115611a3557611a35611650565b611a4981611a4384546118c6565b846119cd565b602080601f831160018114611a7e5760008415611a665750858301515b600019600386901b1c1916600185901b178555611a13565b600085815260208120601f198616915b82811015611aad57888601518255948401946001909101908401611a8e565b5085821015611acb5787850151600019600388901b60f8161c191681555b5050505050600190811b0190555056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220063b0558c7925f6f64a3cfd55198e25f922d459abfe1f7226f60cee92fa4a7d464736f6c63430008100033