60a06040523480156200001157600080fd5b5060405162004cce38038062004cce83398101604081905262000034916200013b565b600054610100900460ff16620000515760005460ff16156200005b565b6200005b6200010e565b620000c35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840160405180910390fd5b600054610100900460ff16158015620000e6576000805461ffff19166101011790555b6001600160a01b038216608052801562000106576000805461ff00191690555b50506200016d565b600062000126306200012c60201b62001b101760201c565b15905090565b6001600160a01b03163b151590565b6000602082840312156200014e57600080fd5b81516001600160a01b03811681146200016657600080fd5b9392505050565b608051614b456200018960003960006125150152614b456000f3fe6080604052600436106103295760003560e01c80637ecebe00116101a5578063a9059cbb116100ec578063d45573f611610095578063dd62ed3e1161006f578063dd62ed3e146109b6578063dfad80a6146109fc578063e8a3d48514610a1c578063f1127ed814610a3157600080fd5b8063d45573f61461093f578063d505accf14610976578063d547741f1461099657600080fd5b8063c3cda520116100c6578063c3cda520146108cc578063ca15c873146108ec578063cb2ef6f71461090c57600080fd5b8063a9059cbb14610840578063ac9650d814610860578063c1b606e21461088d57600080fd5b8063938e3d7b1161014e578063a0a8e46011610128578063a0a8e460146107f7578063a217fddf1461080b578063a457c2d71461082057600080fd5b8063938e3d7b146107a257806395d89b41146107c25780639ab24eb0146107d757600080fd5b80638f0fefbb1161017f5780638f0fefbb146107285780639010d07c1461073b57806391d148541461075b57600080fd5b80637ecebe00146106d35780638456cb59146106f35780638e539e8c1461070857600080fd5b80633950935111610274578063587cde1e1161021d5780636f4f2837116101f75780636f4f2837146106285780636fcfff451461064857806370a082311461067d57806379cc6790146106b357600080fd5b8063587cde1e146105b55780635c19a95c146105ef5780635c975abb1461060f57600080fd5b806342966c681161024e57806342966c681461053c578063449a52f81461055c578063572b6c051461057c57600080fd5b806339509351146104e75780633a46b1a8146105075780633f4ba83a1461052757600080fd5b806323b872dd116102d6578063313ce567116102b0578063313ce567146104905780633644e515146104b257806336568abe146104c757600080fd5b806323b872dd1461041f578063248a9ca31461043f5780632f2ff15d1461047057600080fd5b8063095ea7b311610307578063095ea7b3146103be57806318160ddd146103de5780631e7ac488146103fd57600080fd5b806301ffc9a71461032e57806306fdde0314610363578063079fe40e14610385575b600080fd5b34801561033a57600080fd5b5061034e61034936600461410c565b610a7b565b60405190151581526020015b60405180910390f35b34801561036f57600080fd5b50610378610aa6565b60405161035a919061418e565b34801561039157600080fd5b506102c3546103a6906001600160a01b031681565b6040516001600160a01b03909116815260200161035a565b3480156103ca57600080fd5b5061034e6103d93660046141c6565b610b38565b3480156103ea57600080fd5b5060cb545b60405190815260200161035a565b34801561040957600080fd5b5061041d6104183660046141c6565b610b5a565b005b34801561042b57600080fd5b5061034e61043a3660046141f2565b610c48565b34801561044b57600080fd5b506103ef61045a366004614233565b600090815261025c602052604090206001015490565b34801561047c57600080fd5b5061041d61048b36600461424c565b610c78565b34801561049c57600080fd5b5060125b60405160ff909116815260200161035a565b3480156104be57600080fd5b506103ef610ca6565b3480156104d357600080fd5b5061041d6104e236600461424c565b610cb5565b3480156104f357600080fd5b5061034e6105023660046141c6565b610d51565b34801561051357600080fd5b506103ef6105223660046141c6565b610d9d565b34801561053357600080fd5b5061041d610e11565b34801561054857600080fd5b5061041d610557366004614233565b610e81565b34801561056857600080fd5b5061041d6105773660046141c6565b610e95565b34801561058857600080fd5b5061034e61059736600461427c565b6001600160a01b031660009081526065602052604090205460ff1690565b3480156105c157600080fd5b506103a66105d036600461427c565b6001600160a01b0390811660009081526101f860205260409020541690565b3480156105fb57600080fd5b5061041d61060a36600461427c565b610f17565b34801561061b57600080fd5b5061012d5460ff1661034e565b34801561063457600080fd5b5061041d61064336600461427c565b610f28565b34801561065457600080fd5b5061066861066336600461427c565b610f82565b60405163ffffffff909116815260200161035a565b34801561068957600080fd5b506103ef61069836600461427c565b6001600160a01b0316600090815260c9602052604090205490565b3480156106bf57600080fd5b5061041d6106ce3660046141c6565b610fa5565b3480156106df57600080fd5b506103ef6106ee36600461427c565b610fc1565b3480156106ff57600080fd5b5061041d610fe0565b34801561071457600080fd5b506103ef610723366004614233565b61104e565b61041d6107363660046142db565b6110ab565b34801561074757600080fd5b506103a6610756366004614338565b611215565b34801561076757600080fd5b5061034e61077636600461424c565b600091825261025c602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156107ae57600080fd5b5061041d6107bd36600461435a565b61122e565b3480156107ce57600080fd5b5061037861124f565b3480156107e357600080fd5b506103ef6107f236600461427c565b61125e565b34801561080357600080fd5b5060016104a0565b34801561081757600080fd5b506103ef600081565b34801561082c57600080fd5b5061034e61083b3660046141c6565b6112e7565b34801561084c57600080fd5b5061034e61085b3660046141c6565b6113a9565b34801561086c57600080fd5b5061088061087b36600461439c565b6113c1565b60405161035a9190614411565b34801561089957600080fd5b506108ad6108a83660046142db565b6114b6565b6040805192151583526001600160a01b0390911660208301520161035a565b3480156108d857600080fd5b5061041d6108e7366004614484565b611530565b3480156108f857600080fd5b506103ef610907366004614233565b611666565b34801561091857600080fd5b507f546f6b656e4552433230000000000000000000000000000000000000000000006103ef565b34801561094b57600080fd5b506102c2546102c154604080516001600160a01b03909316835261ffff90911660208301520161035a565b34801561098257600080fd5b5061041d6109913660046144de565b61167e565b3480156109a257600080fd5b5061041d6109b136600461424c565b6117c5565b3480156109c257600080fd5b506103ef6109d136600461454c565b6001600160a01b03918216600090815260ca6020908152604080832093909416825291909152205490565b348015610a0857600080fd5b5061041d610a173660046146ba565b6117ee565b348015610a2857600080fd5b506103786119fc565b348015610a3d57600080fd5b50610a51610a4c3660046147a3565b611a8b565b60408051825163ffffffff1681526020928301516001600160e01b0316928101929092520161035a565b60006001600160e01b03198216635a05180f60e01b1480610aa05750610aa082611b1f565b92915050565b606060cc8054610ab5906147da565b80601f0160208091040260200160405190810160405280929190818152602001828054610ae1906147da565b8015610b2e5780601f10610b0357610100808354040283529160200191610b2e565b820191906000526020600020905b815481529060010190602001808311610b1157829003601f168201915b5050505050905090565b600080610b43611b54565b9050610b50818585611b5e565b5060019392505050565b6000610b6d81610b68611b54565b611c82565b612710821115610bc45760405162461bcd60e51b815260206004820152600d60248201527f627073203c3d2031303030302e0000000000000000000000000000000000000060448201526064015b60405180910390fd5b6102c180546fffffffffffffffffffffffffffffffff191667ffffffffffffffff84161790556102c280546001600160a01b0385166001600160a01b0319909116811790915560408051918252602082018490527fe2497bd806ec41a6e0dd992c29a72efc0ef8fec9092d1978fd4a1e00b2f18304910160405180910390a1505050565b600080610c53611b54565b9050610c60858285611d03565b610c6b858585611d8f565b60019150505b9392505050565b600082815261025c6020526040902060010154610c9781610b68611b54565b610ca18383611f9d565b505050565b6000610cb0611fc0565b905090565b610cbd611b54565b6001600160a01b0316816001600160a01b031614610d435760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610bbb565b610d4d828261203d565b5050565b600080610d5c611b54565b6001600160a01b03808216600090815260ca6020908152604080832093891683529290522054909150610b509082908690610d98908790614825565b611b5e565b6000438210610dee5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610bbb565b6001600160a01b03831660009081526101f960205260409020610c719083612060565b610e3d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610776611b54565b610e775760405162461bcd60e51b815260206004820152600b60248201526a3737ba103830bab9b2b91760a91b6044820152606401610bbb565b610e7f61211d565b565b610e92610e8c611b54565b826121c1565b50565b610ec17f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6610776611b54565b610f0d5760405162461bcd60e51b815260206004820152600b60248201527f6e6f74206d696e7465722e0000000000000000000000000000000000000000006044820152606401610bbb565b610d4d82826121cb565b610e92610f22611b54565b8261221c565b6000610f3681610b68611b54565b6102c380546001600160a01b0319166001600160a01b0384169081179091556040517f299d17e95023f496e0ffc4909cff1a61f74bb5eb18de6f900f4155bfa1b3b33390600090a25050565b6001600160a01b03811660009081526101f96020526040812054610aa090612297565b610fb782610fb1611b54565b83611d03565b610d4d82826121c1565b6001600160a01b03811660009081526101c56020526040812054610aa0565b61100c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a610776611b54565b6110465760405162461bcd60e51b815260206004820152600b60248201526a3737ba103830bab9b2b91760a91b6044820152606401610bbb565b610e7f612317565b600043821061109f5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e6564006044820152606401610bbb565b610aa06101fa83612060565b600260015414156110fe5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610bbb565b600260015560006111108484846123a2565b9050600080611122602087018761427c565b6001600160a01b0316146111425761113d602086018661427c565b61114a565b61114a611b54565b905060008061115f604088016020890161427c565b6001600160a01b0316146111825761117d604087016020880161427c565b611190565b6102c3546001600160a01b03165b90506111b0816111a660a0890160808a0161427c565b88606001356124b8565b6111be8287604001356121cb565b816001600160a01b0316836001600160a01b03167fc4d88b1adde72eb5acf63f3e219ef5b223262233acf507c3b171277c91973c67886040516112019190614854565b60405180910390a350506001805550505050565b600082815261028e60205260408120610c71908361266c565b600061123c81610b68611b54565b6112496102c08484614003565b50505050565b606060cd8054610ab5906147da565b6001600160a01b03811660009081526101f9602052604081205480156112d4576001600160a01b03831660009081526101f9602052604090206112a26001836148f6565b815481106112b2576112b261490d565b60009182526020909120015464010000000090046001600160e01b03166112d7565b60005b6001600160e01b03169392505050565b6000806112f2611b54565b6001600160a01b03808216600090815260ca6020908152604080832093891683529290522054909150838110156113915760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610bbb565b61139e8286868403611b5e565b506001949350505050565b6000806113b4611b54565b9050610b50818585611d8f565b60608167ffffffffffffffff8111156113dc576113dc61457a565b60405190808252806020026020018201604052801561140f57816020015b60608152602001906001900390816113fa5790505b50905060005b828110156114af5761147f308585848181106114335761143361490d565b90506020028101906114459190614923565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061267892505050565b8282815181106114915761149161490d565b602002602001018190525080806114a79061496a565b915050611415565b5092915050565b60008060006114c6868686612783565b60e087013560009081526102c4602052604090205490915060ff1615801561152557506001600160a01b03811660009081527fcf538f10c1f1215bbb13c92e93f1a42742e59e1630f77a3f0756e058f253e6dd602052604090205460ff165b969095509350505050565b834211156115805760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e617475726520657870697265640000006044820152606401610bbb565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b0388169181019190915260608101869052608081018590526000906115fa906115f29060a001604051602081830303815290604052805190602001206127e7565b858585612835565b90506116058161285d565b86146116535760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e6365000000000000006044820152606401610bbb565b61165d818861221c565b50505050505050565b600081815261028e60205260408120610aa090612886565b834211156116ce5760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610bbb565b60006101c6548888886116e08c61285d565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050600061173b826127e7565b9050600061174b82878787612835565b9050896001600160a01b0316816001600160a01b0316146117ae5760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610bbb565b6117b98a8a8a611b5e565b50505050505050505050565b600082815261025c60205260409020600101546117e481610b68611b54565b610ca1838361203d565b600054610100900460ff166118095760005460ff161561180d565b303b155b61187f5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610bbb565b600054610100900460ff161580156118a1576000805461ffff19166101011790555b6118aa85612890565b6118b388612963565b6118bd88886129fa565b85516118d1906102c0906020890190614083565b506102c380546001600160a01b038087166001600160a01b0319928316179092556102c28054928616929091169190911790556102c180546001600160801b0384166fffffffffffffffffffffffffffffffff1990911617905561193660008a612a8c565b6119607f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c8a612a8c565b61198a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a68a612a8c565b6119b47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a8a612a8c565b6119df7f8502233096d909befbda0999bb8ea2f3a6be3c138b9fbf003752a4c8bce86f6c6000612a8c565b80156119f1576000805461ff00191690555b505050505050505050565b6102c08054611a0a906147da565b80601f0160208091040260200160405190810160405280929190818152602001828054611a36906147da565b8015611a835780601f10611a5857610100808354040283529160200191611a83565b820191906000526020600020905b815481529060010190602001808311611a6657829003601f168201915b505050505081565b60408051808201909152600080825260208201526001600160a01b03831660009081526101f960205260409020805463ffffffff8416908110611ad057611ad061490d565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6001600160a01b03163b151590565b60006001600160e01b03198216637965db0b60e01b1480610aa057506301ffc9a760e01b6001600160e01b0319831614610aa0565b6000610cb0612a96565b6001600160a01b038316611bc05760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610bbb565b6001600160a01b038216611c215760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610bbb565b6001600160a01b03838116600081815260ca602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600082815261025c602090815260408083206001600160a01b038516845290915290205460ff16610d4d57611cc1816001600160a01b03166014612ac0565b611ccc836020612ac0565b604051602001611cdd929190614985565b60408051601f198184030181529082905262461bcd60e51b8252610bbb9160040161418e565b6001600160a01b03838116600090815260ca602090815260408083209386168352929052205460001981146112495781811015611d825760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610bbb565b6112498484848403611b5e565b6001600160a01b038316611e0b5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610bbb565b6001600160a01b038216611e6d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610bbb565b611e78838383612c69565b6001600160a01b038316600090815260c9602052604090205481811015611f075760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152608401610bbb565b6001600160a01b03808516600090815260c96020526040808220858503905591851681529081208054849290611f3e908490614825565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611f8a91815260200190565b60405180910390a3611249848484612db8565b611fa78282612dc3565b600082815261028e60205260409020610ca19082612e68565b6000610cb07f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611ff06101915490565b610192546040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6120478282612e7d565b600082815261028e60205260409020610ca19082612f20565b8154600090815b818110156120c457600061207b8284612f35565b9050848682815481106120905761209061490d565b60009182526020909120015463ffffffff1611156120b0578092506120be565b6120bb816001614825565b91505b50612067565b811561210857846120d66001846148f6565b815481106120e6576120e661490d565b60009182526020909120015464010000000090046001600160e01b031661210b565b60005b6001600160e01b031695945050505050565b61012d5460ff166121705760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610bbb565b61012d805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6121a4611b54565b6040516001600160a01b03909116815260200160405180910390a1565b610d4d8282612f50565b6121d58282612f69565b816001600160a01b03167f3f2c9d57c068687834f0de942a9babb9e5acab57d516d3480a3c16ee165a42738260405161221091815260200190565b60405180910390a25050565b6001600160a01b0382811660008181526101f860208181526040808420805460c9845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4611249828483612f73565b600063ffffffff8211156123135760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201527f32206269747300000000000000000000000000000000000000000000000000006064820152608401610bbb565b5090565b61012d5460ff161561236b5760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610bbb565b61012d805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121a4611b54565b60008060006123b28686866114b6565b91509150816124035760405162461bcd60e51b815260206004820152601160248201527f696e76616c6964207369676e61747572650000000000000000000000000000006044820152606401610bbb565b4261241460c0880160a08901614a06565b6001600160801b03161115801561244357504261243760e0880160c08901614a06565b6001600160801b031610155b61248f5760405162461bcd60e51b815260206004820152600f60248201527f72657175657374206578706972656400000000000000000000000000000000006044820152606401610bbb565b60e086013560009081526102c460205260409020805460ff191660011790559150509392505050565b806124c257505050565b6102c154600090612710906124e0906001600160801b031684614a21565b6124ea9190614a40565b60405163085b49ad60e41b815230600482015260006024820181905291925081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906385b49ad0906044016040805180830381865afa15801561255b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257f9190614a62565b909250905060006127106125938387614a21565b61259d9190614a40565b90506001600160a01b03861673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415612613578434146126135760405162461bcd60e51b815260206004820152601660248201527f6d7573742073656e6420746f74616c2070726963652e000000000000000000006044820152606401610bbb565b6126328661261f611b54565b6102c2546001600160a01b0316876130b2565b6126458661263e611b54565b85846130b2565b61165d86612651611b54565b898461265d898b6148f6565b61266791906148f6565b6130b2565b6000610c7183836130fc565b60606001600160a01b0383163b6126f75760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610bbb565b600080846001600160a01b0316846040516127129190614a90565b600060405180830381855af49150503d806000811461274d576040519150601f19603f3d011682016040523d82523d6000602084013e612752565b606091505b509150915061277a8282604051806060016040528060278152602001614b1260279139613126565b95945050505050565b60006127df83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127d992506127cd915088905061315f565b805190602001206127e7565b90613253565b949350505050565b6000610aa06127f4611fc0565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061284687878787613277565b9150915061285381613364565b5095945050505050565b6001600160a01b03811660009081526101c5602052604090208054600181018255905b50919050565b6000610aa0825490565b600054610100900460ff166128fb5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610bbb565b60005b8151811015610d4d5760016065600084848151811061291f5761291f61490d565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790558061295b8161496a565b9150506128fe565b600054610100900460ff166129ce5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610bbb565b6129f181604051806040016040528060018152602001603160f81b81525061351f565b610e92816135a6565b600054610100900460ff16612a655760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610bbb565b8151612a789060cc906020850190614083565b508051610ca19060cd906020840190614083565b610d4d8282611f9d565b3360009081526065602052604081205460ff1615612abb575060131936013560601c90565b503390565b60606000612acf836002614a21565b612ada906002614825565b67ffffffffffffffff811115612af257612af261457a565b6040519080825280601f01601f191660200182016040528015612b1c576020820181803683370190505b509050600360fc1b81600081518110612b3757612b3761490d565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612b6657612b6661490d565b60200101906001600160f81b031916908160001a9053506000612b8a846002614a21565b612b95906001614825565b90505b6001811115612c1a577f303132333435363738396162636465660000000000000000000000000000000085600f1660108110612bd657612bd661490d565b1a60f81b828281518110612bec57612bec61490d565b60200101906001600160f81b031916908160001a90535060049490941c93612c1381614aac565b9050612b98565b508315610c715760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610bbb565b612c74838383613639565b600080527fb5795f43f55584b15429e81b8f953f506f3fda5f74ae532bfc787216c93b37366020527fd61a19a5865dc34bcdb6a4cbf3d3d73edfd2abc9fbcb992f6e6da26bc3a636695460ff16158015612cd657506001600160a01b03831615155b8015612cea57506001600160a01b03821615155b15610ca1576001600160a01b03831660009081527fb5795f43f55584b15429e81b8f953f506f3fda5f74ae532bfc787216c93b3736602052604090205460ff1680612d6c57506001600160a01b03821660009081527fb5795f43f55584b15429e81b8f953f506f3fda5f74ae532bfc787216c93b3736602052604090205460ff165b610ca15760405162461bcd60e51b815260206004820152601560248201527f7472616e736665727320726573747269637465642e00000000000000000000006044820152606401610bbb565b610ca18383836136b3565b600082815261025c602090815260408083206001600160a01b038516845290915290205460ff16610d4d57600082815261025c602090815260408083206001600160a01b03851684529091529020805460ff19166001179055612e24611b54565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610c71836001600160a01b0384166136e6565b600082815261025c602090815260408083206001600160a01b038516845290915290205460ff1615610d4d57600082815261025c602090815260408083206001600160a01b03851684529091529020805460ff19169055612edc611b54565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610c71836001600160a01b038416613735565b6000612f446002848418614a40565b610c7190848416614825565b612f5a8282613828565b6112496101fa61398983613995565b610d4d8282613b0e565b816001600160a01b0316836001600160a01b031614158015612f955750600081115b15610ca1576001600160a01b03831615613024576001600160a01b03831660009081526101f9602052604081208190612fd19061398985613995565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051613019929190918252602082015260400190565b60405180910390a250505b6001600160a01b03821615610ca1576001600160a01b03821660009081526101f960205260408120819061305b90613ba685613995565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516130a3929190918252602082015260400190565b60405180910390a25050505050565b806130bc57611249565b6001600160a01b03841673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156130f0576130eb8282613bb2565b611249565b61124984848484613c55565b60008260000182815481106131135761311361490d565b9060005260206000200154905092915050565b60608315613135575081610c71565b8251156131455782518084602001fd5b8160405162461bcd60e51b8152600401610bbb919061418e565b60607fbac245dbd9b8b2bb334c0675db20a7a7a8506de563990c4ce3207f4c3c5b75e161318f602084018461427c565b61319f604085016020860161427c565b604085013560608601356131b960a088016080890161427c565b6131c960c0890160a08a01614a06565b6131d960e08a0160c08b01614a06565b6040805160208101999099526001600160a01b03978816908901529486166060880152608087019390935260a086019190915290921660c08401526001600160801b0391821660e0808501919091529116610100830152830135610120820152610140016040516020818303038152906040529050919050565b60008060006132628585613dcf565b9150915061326f81613364565b509392505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156132ae575060009050600361335b565b8460ff16601b141580156132c657508460ff16601c14155b156132d7575060009050600461335b565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561332b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166133545760006001925092505061335b565b9150600090505b94509492505050565b600081600481111561337857613378614ac3565b14156133815750565b600181600481111561339557613395614ac3565b14156133e35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610bbb565b60028160048111156133f7576133f7614ac3565b14156134455760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610bbb565b600381600481111561345957613459614ac3565b14156134b25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610bbb565b60048160048111156134c6576134c6614ac3565b1415610e925760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610bbb565b600054610100900460ff1661358a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610bbb565b8151602092830120815191909201206101919190915561019255565b600054610100900460ff166136115760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610bbb565b507f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c96101c655565b61012d5460ff1615610ca15760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e7366657220776860448201527f696c6520706175736564000000000000000000000000000000000000000000006064820152608401610bbb565b6001600160a01b0383811660009081526101f86020526040808220548584168352912054610ca192918216911683612f73565b600081815260018301602052604081205461372d57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610aa0565b506000610aa0565b6000818152600183016020526040812054801561381e5760006137596001836148f6565b855490915060009061376d906001906148f6565b90508181146137d257600086600001828154811061378d5761378d61490d565b90600052602060002001549050808760000184815481106137b0576137b061490d565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806137e3576137e3614ad9565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610aa0565b6000915050610aa0565b6001600160a01b0382166138885760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610bbb565b61389482600083612c69565b6001600160a01b038216600090815260c96020526040902054818110156139085760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610bbb565b6001600160a01b038316600090815260c960205260408120838303905560cb80548492906139379084906148f6565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610ca183600084612db8565b6000610c7182846148f6565b8254600090819080156139e057856139ae6001836148f6565b815481106139be576139be61490d565b60009182526020909120015464010000000090046001600160e01b03166139e3565b60005b6001600160e01b031692506139fc83858763ffffffff16565b9150600081118015613a3a57504386613a166001846148f6565b81548110613a2657613a2661490d565b60009182526020909120015463ffffffff16145b15613a9a57613a4882613e3f565b86613a546001846148f6565b81548110613a6457613a6461490d565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550613b05565b856040518060400160405280613aaf43612297565b63ffffffff168152602001613ac385613e3f565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b613b188282613ebe565b60cb546001600160e01b031015613b975760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201527f766572666c6f77696e6720766f746573000000000000000000000000000000006064820152608401610bbb565b6112496101fa613ba683613995565b6000610c718284614825565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613bff576040519150601f19603f3d011682016040523d82523d6000602084013e613c04565b606091505b5050905080610ca15760405162461bcd60e51b815260206004820152601c60248201527f6e617469766520746f6b656e207472616e73666572206661696c6564000000006044820152606401610bbb565b816001600160a01b0316836001600160a01b03161415613c7457611249565b60006001600160a01b0384163014613d06576040516323b872dd60e01b81526001600160a01b0385811660048301528481166024830152604482018490528616906323b872dd906064016020604051808303816000875af1158015613cdd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d019190614aef565b613d79565b60405163a9059cbb60e01b81526001600160a01b0384811660048301526024820184905286169063a9059cbb906044016020604051808303816000875af1158015613d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d799190614aef565b905080613dc85760405162461bcd60e51b815260206004820152601960248201527f63757272656e6379207472616e73666572206661696c65642e000000000000006044820152606401610bbb565b5050505050565b600080825160411415613e065760208301516040840151606085015160001a613dfa87828585613277565b94509450505050613e38565b825160401415613e305760208301516040840151613e25868383613fb1565b935093505050613e38565b506000905060025b9250929050565b60006001600160e01b038211156123135760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203260448201527f32342062697473000000000000000000000000000000000000000000000000006064820152608401610bbb565b6001600160a01b038216613f145760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610bbb565b613f2060008383612c69565b8060cb6000828254613f329190614825565b90915550506001600160a01b038216600090815260c9602052604081208054839290613f5f908490614825565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610d4d60008383612db8565b6000807f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831681613fe760ff86901c601b614825565b9050613ff587828885613277565b935093505050935093915050565b82805461400f906147da565b90600052602060002090601f0160209004810192826140315760008555614077565b82601f1061404a5782800160ff19823516178555614077565b82800160010185558215614077579182015b8281111561407757823582559160200191906001019061405c565b506123139291506140f7565b82805461408f906147da565b90600052602060002090601f0160209004810192826140b15760008555614077565b82601f106140ca57805160ff1916838001178555614077565b82800160010185558215614077579182015b828111156140775782518255916020019190600101906140dc565b5b8082111561231357600081556001016140f8565b60006020828403121561411e57600080fd5b81356001600160e01b031981168114610c7157600080fd5b60005b83811015614151578181015183820152602001614139565b838111156112495750506000910152565b6000815180845261417a816020860160208601614136565b601f01601f19169290920160200192915050565b602081526000610c716020830184614162565b6001600160a01b0381168114610e9257600080fd5b80356141c1816141a1565b919050565b600080604083850312156141d957600080fd5b82356141e4816141a1565b946020939093013593505050565b60008060006060848603121561420757600080fd5b8335614212816141a1565b92506020840135614222816141a1565b929592945050506040919091013590565b60006020828403121561424557600080fd5b5035919050565b6000806040838503121561425f57600080fd5b823591506020830135614271816141a1565b809150509250929050565b60006020828403121561428e57600080fd5b8135610c71816141a1565b60008083601f8401126142ab57600080fd5b50813567ffffffffffffffff8111156142c357600080fd5b602083019150836020828501011115613e3857600080fd5b60008060008385036101208112156142f257600080fd5b6101008082121561430257600080fd5b859450840135905067ffffffffffffffff81111561431f57600080fd5b61432b86828701614299565b9497909650939450505050565b6000806040838503121561434b57600080fd5b50508035926020909101359150565b6000806020838503121561436d57600080fd5b823567ffffffffffffffff81111561438457600080fd5b61439085828601614299565b90969095509350505050565b600080602083850312156143af57600080fd5b823567ffffffffffffffff808211156143c757600080fd5b818501915085601f8301126143db57600080fd5b8135818111156143ea57600080fd5b8660208260051b85010111156143ff57600080fd5b60209290920196919550909350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561446657603f19888603018452614454858351614162565b94509285019290850190600101614438565b5092979650505050505050565b803560ff811681146141c157600080fd5b60008060008060008060c0878903121561449d57600080fd5b86356144a8816141a1565b955060208701359450604087013593506144c460608801614473565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a0312156144f957600080fd5b8735614504816141a1565b96506020880135614514816141a1565b9550604088013594506060880135935061453060808901614473565b925060a0880135915060c0880135905092959891949750929550565b6000806040838503121561455f57600080fd5b823561456a816141a1565b91506020830135614271816141a1565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156145b9576145b961457a565b604052919050565b600082601f8301126145d257600080fd5b813567ffffffffffffffff8111156145ec576145ec61457a565b6145ff601f8201601f1916602001614590565b81815284602083860101111561461457600080fd5b816020850160208301376000918101602001919091529392505050565b600082601f83011261464257600080fd5b8135602067ffffffffffffffff82111561465e5761465e61457a565b8160051b61466d828201614590565b928352848101820192828101908785111561468757600080fd5b83870192505b848310156146af5782356146a0816141a1565b8252918301919083019061468d565b979650505050505050565b600080600080600080600080610100898b0312156146d757600080fd5b6146e0896141b6565b9750602089013567ffffffffffffffff808211156146fd57600080fd5b6147098c838d016145c1565b985060408b013591508082111561471f57600080fd5b61472b8c838d016145c1565b975060608b013591508082111561474157600080fd5b61474d8c838d016145c1565b965060808b013591508082111561476357600080fd5b506147708b828c01614631565b94505061477f60a08a016141b6565b925061478d60c08a016141b6565b915060e089013590509295985092959890939650565b600080604083850312156147b657600080fd5b82356147c1816141a1565b9150602083013563ffffffff8116811461427157600080fd5b600181811c908216806147ee57607f821691505b6020821081141561288057634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600082198211156148385761483861480f565b500190565b80356001600160801b03811681146141c157600080fd5b61010081018235614864816141a1565b6001600160a01b039081168352602084013590614880826141a1565b80821660208501526040850135604085015260608501356060850152608085013591506148ac826141a1565b1660808301526148be60a0840161483d565b6001600160801b031660a08301526148d860c0840161483d565b6001600160801b03811660c08401525060e092830135919092015290565b6000828210156149085761490861480f565b500390565b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261493a57600080fd5b83018035915067ffffffffffffffff82111561495557600080fd5b602001915036819003821315613e3857600080fd5b600060001982141561497e5761497e61480f565b5060010190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516149bd816017850160208801614136565b7f206973206d697373696e6720726f6c652000000000000000000000000000000060179184019182015283516149fa816028840160208801614136565b01602801949350505050565b600060208284031215614a1857600080fd5b610c718261483d565b6000816000190483118215151615614a3b57614a3b61480f565b500290565b600082614a5d57634e487b7160e01b600052601260045260246000fd5b500490565b60008060408385031215614a7557600080fd5b8251614a80816141a1565b6020939093015192949293505050565b60008251614aa2818460208701614136565b9190910192915050565b600081614abb57614abb61480f565b506000190190565b634e487b7160e01b600052602160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b600060208284031215614b0157600080fd5b81518015158114610c7157600080fdfe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c634300080c000a0000000000000000000000008c4b615040ebd2618e8fc3b20cefe9abafdeb0ea