0x608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f9578063a457c2d711610097578063d505accf11610071578063d505accf146103b4578063dd62ed3e146103c7578063f1127ed814610400578063f2fde38b1461043d57600080fd5b8063a457c2d71461037b578063a9059cbb1461038e578063c3cda520146103a157600080fd5b80638e539e8c116100d35780638e539e8c1461033a57806395d89b411461034d5780639ab24eb0146103555780639dc29fac1461036857600080fd5b8063715018a61461030e5780637ecebe00146103165780638da5cb5b1461032957600080fd5b80633950935111610166578063587cde1e11610140578063587cde1e146102665780635c19a95c146102aa5780636fcfff45146102bd57806370a08231146102e557600080fd5b8063395093511461022b5780633a46b1a81461023e57806340c10f191461025157600080fd5b806306fdde03146101ae578063095ea7b3146101cc57806318160ddd146101ef57806323b872dd14610201578063313ce567146102145780633644e51514610223575b600080fd5b6101b6610450565b6040516101c39190611c96565b60405180910390f35b6101df6101da366004611d07565b6104e2565b60405190151581526020016101c3565b6002545b6040519081526020016101c3565b6101df61020f366004611d31565b6104fa565b604051601281526020016101c3565b6101f361051e565b6101df610239366004611d07565b61052d565b6101f361024c366004611d07565b61056c565b61026461025f366004611d07565b6105eb565b005b610292610274366004611d6d565b6001600160a01b039081166000908152600760205260409020541690565b6040516001600160a01b0390911681526020016101c3565b6102646102b8366004611d6d565b610623565b6102d06102cb366004611d6d565b610630565b60405163ffffffff90911681526020016101c3565b6101f36102f3366004611d6d565b6001600160a01b031660009081526020819052604090205490565b610264610658565b6101f3610324366004611d6d565b61068e565b6005546001600160a01b0316610292565b6101f3610348366004611d88565b6106ac565b6101b6610708565b6101f3610363366004611d6d565b610717565b610264610376366004611d07565b61079e565b6101df610389366004611d07565b6107d2565b6101df61039c366004611d07565b610864565b6102646103af366004611db2565b610872565b6102646103c2366004611e0a565b6109a8565b6101f36103d5366004611e74565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61041361040e366004611ea7565b610b0c565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016101c3565b61026461044b366004611d6d565b610b90565b60606003805461045f90611ee7565b80601f016020809104026020016040519081016040528092919081815260200182805461048b90611ee7565b80156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b5050505050905090565b6000336104f0818585610c28565b5060019392505050565b600033610508858285610d4c565b610513858585610dde565b506001949350505050565b6000610528610fb2565b905090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906104f09082908690610567908790611f32565b610c28565b60004382106105c25760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b6001600160a01b03831660009081526008602052604090206105e490836110d9565b9392505050565b6005546001600160a01b031633146106155760405162461bcd60e51b81526004016105b990611f4a565b61061f8282611196565b5050565b61062d33826111a0565b50565b6001600160a01b03811660009081526008602052604081205461065290611219565b92915050565b6005546001600160a01b031633146106825760405162461bcd60e51b81526004016105b990611f4a565b61068c6000611282565b565b6001600160a01b038116600090815260066020526040812054610652565b60004382106106fd5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064016105b9565b6106526009836110d9565b60606004805461045f90611ee7565b6001600160a01b038116600090815260086020526040812054801561078b576001600160a01b0383166000908152600860205260409020610759600183611f7f565b8154811061076957610769611f96565b60009182526020909120015464010000000090046001600160e01b031661078e565b60005b6001600160e01b03169392505050565b6005546001600160a01b031633146107c85760405162461bcd60e51b81526004016105b990611f4a565b61061f82826112d4565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156108575760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b9565b6105138286868403610c28565b6000336104f0818585610dde565b834211156108c25760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105b9565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b03881691810191909152606081018690526080810185905260009061093c906109349060a001604051602081830303815290604052805190602001206112de565b85858561132c565b905061094781611354565b86146109955760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105b9565b61099f81886111a0565b50505050505050565b834211156109f85760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105b9565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610a278c611354565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610a82826112de565b90506000610a928287878761132c565b9050896001600160a01b0316816001600160a01b031614610af55760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105b9565b610b008a8a8a610c28565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600860205260409020805463ffffffff8416908110610b5057610b50611f96565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6005546001600160a01b03163314610bba5760405162461bcd60e51b81526004016105b990611f4a565b6001600160a01b038116610c1f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b9565b61062d81611282565b6001600160a01b038316610c8a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b9565b6001600160a01b038216610ceb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b9565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610dd85781811015610dcb5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b9565b610dd88484848403610c28565b50505050565b6001600160a01b038316610e425760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b9565b6001600160a01b038216610ea45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b9565b6001600160a01b03831660009081526020819052604090205481811015610f1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b9565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610f53908490611f32565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f9f91815260200190565b60405180910390a3610dd8848484611381565b6000306001600160a01b037f000000000000000000000000f344b01da08b142d2466dae9e47e333f22e645881614801561100b57507f000000000000000000000000000000000000000000000000000000000000000146145b1561103557507f03db843de9b48e8528f83b1f26add7805b408859186e862519f6457e3393997290565b50604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f78350ec25436ffb5e9bf2ca80e536345fcd046f5f24ee99edb7a648a268ea6aa828401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b8181101561113d5760006110f4828461138c565b90508486828154811061110957611109611f96565b60009182526020909120015463ffffffff16111561112957809250611137565b611134816001611f32565b91505b506110e0565b8115611181578461114f600184611f7f565b8154811061115f5761115f611f96565b60009182526020909120015464010000000090046001600160e01b0316611184565b60005b6001600160e01b031695945050505050565b61061f82826113a7565b6001600160a01b038281166000818152600760208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610dd8828483611431565b600063ffffffff82111561127e5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105b9565b5090565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61061f828261156e565b60006106526112eb610fb2565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061133d87878787611586565b9150915061134a81611673565b5095945050505050565b6001600160a01b03811660009081526006602052604090208054600181018255905b50919050565b505050565b61137c83838361182e565b600061139b6002848418611fac565b6105e490848416611f32565b6113b18282611860565b6002546001600160e01b0310156114235760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105b9565b610dd8600961194783611953565b816001600160a01b0316836001600160a01b0316141580156114535750600081115b1561137c576001600160a01b038316156114e1576001600160a01b0383166000908152600860205260408120819061148e90611acc85611953565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114d6929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561137c576001600160a01b038216600090815260086020526040812081906115179061194785611953565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161155f929190918252602082015260400190565b60405180910390a25050505050565b6115788282611ad8565b610dd86009611acc83611953565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115bd575060009050600361166a565b8460ff16601b141580156115d557508460ff16601c14155b156115e6575060009050600461166a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561163a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116635760006001925092505061166a565b9150600090505b94509492505050565b600081600481111561168757611687611fce565b14156116905750565b60018160048111156116a4576116a4611fce565b14156116f25760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105b9565b600281600481111561170657611706611fce565b14156117545760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105b9565b600381600481111561176857611768611fce565b14156117c15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105b9565b60048160048111156117d5576117d5611fce565b141561062d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016105b9565b6001600160a01b0383811660009081526007602052604080822054858416835291205461137c92918216911683611431565b6001600160a01b0382166118b65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b9565b80600260008282546118c89190611f32565b90915550506001600160a01b038216600090815260208190526040812080548392906118f5908490611f32565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361061f60008383611381565b60006105e48284611f32565b82546000908190801561199e578561196c600183611f7f565b8154811061197c5761197c611f96565b60009182526020909120015464010000000090046001600160e01b03166119a1565b60005b6001600160e01b031692506119ba83858763ffffffff16565b91506000811180156119f8575043866119d4600184611f7f565b815481106119e4576119e4611f96565b60009182526020909120015463ffffffff16145b15611a5857611a0682611c2d565b86611a12600184611f7f565b81548110611a2257611a22611f96565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611ac3565b856040518060400160405280611a6d43611219565b63ffffffff168152602001611a8185611c2d565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b60006105e48284611f7f565b6001600160a01b038216611b385760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b9565b6001600160a01b03821660009081526020819052604090205481811015611bac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b9565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611bdb908490611f7f565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361137c83600084611381565b60006001600160e01b0382111561127e5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105b9565b600060208083528351808285015260005b81811015611cc357858101830151858201604001528201611ca7565b81811115611cd5576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114611d0257600080fd5b919050565b60008060408385031215611d1a57600080fd5b611d2383611ceb565b946020939093013593505050565b600080600060608486031215611d4657600080fd5b611d4f84611ceb565b9250611d5d60208501611ceb565b9150604084013590509250925092565b600060208284031215611d7f57600080fd5b6105e482611ceb565b600060208284031215611d9a57600080fd5b5035919050565b803560ff81168114611d0257600080fd5b60008060008060008060c08789031215611dcb57600080fd5b611dd487611ceb565b95506020870135945060408701359350611df060608801611da1565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611e2557600080fd5b611e2e88611ceb565b9650611e3c60208901611ceb565b95506040880135945060608801359350611e5860808901611da1565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611e8757600080fd5b611e9083611ceb565b9150611e9e60208401611ceb565b90509250929050565b60008060408385031215611eba57600080fd5b611ec383611ceb565b9150602083013563ffffffff81168114611edc57600080fd5b809150509250929050565b600181811c90821680611efb57607f821691505b6020821081141561137657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115611f4557611f45611f1c565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082821015611f9157611f91611f1c565b500390565b634e487b7160e01b600052603260045260246000fd5b600082611fc957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000809000a
0x6101606040527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9610140523480156200003757600080fd5b506040518060400160405280600981526020016846656d626f7944414f60b81b81525080604051806040016040528060018152602001603160f81b8152506040518060400160405280600981526020016846656d626f7944414f60b81b8152506040518060400160405280600381526020016246454d60e81b8152508160039080519060200190620000cb929190620001ea565b508051620000e1906004906020840190620001ea565b505050620000fe620000f86200019460201b60201c565b62000198565b815160209283012081519183019190912060e08290526101008190524660a0818152604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818801819052818301969096526060810194909452608080850193909352308483018190528151808603909301835260c0948501909152815191909501209052919091526101205250620002cd565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b828054620001f89062000290565b90600052602060002090601f0160209004810192826200021c576000855562000267565b82601f106200023757805160ff191683800117855562000267565b8280016001018555821562000267579182015b82811115620002675782518255916020019190600101906200024a565b506200027592915062000279565b5090565b5b808211156200027557600081556001016200027a565b600181811c90821680620002a557607f821691505b60208210811415620002c757634e487b7160e01b600052602260045260246000fd5b50919050565b60805160a05160c05160e051610100516101205161014051611ff16200032860003960006109fc0152600061103c0152600061108b0152600061106601526000610fbf01526000610fe9015260006110130152611ff16000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c8063715018a6116100f9578063a457c2d711610097578063d505accf11610071578063d505accf146103b4578063dd62ed3e146103c7578063f1127ed814610400578063f2fde38b1461043d57600080fd5b8063a457c2d71461037b578063a9059cbb1461038e578063c3cda520146103a157600080fd5b80638e539e8c116100d35780638e539e8c1461033a57806395d89b411461034d5780639ab24eb0146103555780639dc29fac1461036857600080fd5b8063715018a61461030e5780637ecebe00146103165780638da5cb5b1461032957600080fd5b80633950935111610166578063587cde1e11610140578063587cde1e146102665780635c19a95c146102aa5780636fcfff45146102bd57806370a08231146102e557600080fd5b8063395093511461022b5780633a46b1a81461023e57806340c10f191461025157600080fd5b806306fdde03146101ae578063095ea7b3146101cc57806318160ddd146101ef57806323b872dd14610201578063313ce567146102145780633644e51514610223575b600080fd5b6101b6610450565b6040516101c39190611c96565b60405180910390f35b6101df6101da366004611d07565b6104e2565b60405190151581526020016101c3565b6002545b6040519081526020016101c3565b6101df61020f366004611d31565b6104fa565b604051601281526020016101c3565b6101f361051e565b6101df610239366004611d07565b61052d565b6101f361024c366004611d07565b61056c565b61026461025f366004611d07565b6105eb565b005b610292610274366004611d6d565b6001600160a01b039081166000908152600760205260409020541690565b6040516001600160a01b0390911681526020016101c3565b6102646102b8366004611d6d565b610623565b6102d06102cb366004611d6d565b610630565b60405163ffffffff90911681526020016101c3565b6101f36102f3366004611d6d565b6001600160a01b031660009081526020819052604090205490565b610264610658565b6101f3610324366004611d6d565b61068e565b6005546001600160a01b0316610292565b6101f3610348366004611d88565b6106ac565b6101b6610708565b6101f3610363366004611d6d565b610717565b610264610376366004611d07565b61079e565b6101df610389366004611d07565b6107d2565b6101df61039c366004611d07565b610864565b6102646103af366004611db2565b610872565b6102646103c2366004611e0a565b6109a8565b6101f36103d5366004611e74565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b61041361040e366004611ea7565b610b0c565b60408051825163ffffffff1681526020928301516001600160e01b031692810192909252016101c3565b61026461044b366004611d6d565b610b90565b60606003805461045f90611ee7565b80601f016020809104026020016040519081016040528092919081815260200182805461048b90611ee7565b80156104d85780601f106104ad576101008083540402835291602001916104d8565b820191906000526020600020905b8154815290600101906020018083116104bb57829003601f168201915b5050505050905090565b6000336104f0818585610c28565b5060019392505050565b600033610508858285610d4c565b610513858585610dde565b506001949350505050565b6000610528610fb2565b905090565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091906104f09082908690610567908790611f32565b610c28565b60004382106105c25760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064015b60405180910390fd5b6001600160a01b03831660009081526008602052604090206105e490836110d9565b9392505050565b6005546001600160a01b031633146106155760405162461bcd60e51b81526004016105b990611f4a565b61061f8282611196565b5050565b61062d33826111a0565b50565b6001600160a01b03811660009081526008602052604081205461065290611219565b92915050565b6005546001600160a01b031633146106825760405162461bcd60e51b81526004016105b990611f4a565b61068c6000611282565b565b6001600160a01b038116600090815260066020526040812054610652565b60004382106106fd5760405162461bcd60e51b815260206004820152601f60248201527f4552433230566f7465733a20626c6f636b206e6f7420796574206d696e65640060448201526064016105b9565b6106526009836110d9565b60606004805461045f90611ee7565b6001600160a01b038116600090815260086020526040812054801561078b576001600160a01b0383166000908152600860205260409020610759600183611f7f565b8154811061076957610769611f96565b60009182526020909120015464010000000090046001600160e01b031661078e565b60005b6001600160e01b03169392505050565b6005546001600160a01b031633146107c85760405162461bcd60e51b81526004016105b990611f4a565b61061f82826112d4565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190838110156108575760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b9565b6105138286868403610c28565b6000336104f0818585610dde565b834211156108c25760405162461bcd60e51b815260206004820152601d60248201527f4552433230566f7465733a207369676e6174757265206578706972656400000060448201526064016105b9565b604080517fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60208201526001600160a01b03881691810191909152606081018690526080810185905260009061093c906109349060a001604051602081830303815290604052805190602001206112de565b85858561132c565b905061094781611354565b86146109955760405162461bcd60e51b815260206004820152601960248201527f4552433230566f7465733a20696e76616c6964206e6f6e63650000000000000060448201526064016105b9565b61099f81886111a0565b50505050505050565b834211156109f85760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e6500000060448201526064016105b9565b60007f0000000000000000000000000000000000000000000000000000000000000000888888610a278c611354565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610a82826112de565b90506000610a928287878761132c565b9050896001600160a01b0316816001600160a01b031614610af55760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e6174757265000060448201526064016105b9565b610b008a8a8a610c28565b50505050505050505050565b60408051808201909152600080825260208201526001600160a01b0383166000908152600860205260409020805463ffffffff8416908110610b5057610b50611f96565b60009182526020918290206040805180820190915291015463ffffffff8116825264010000000090046001600160e01b0316918101919091529392505050565b6005546001600160a01b03163314610bba5760405162461bcd60e51b81526004016105b990611f4a565b6001600160a01b038116610c1f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016105b9565b61062d81611282565b6001600160a01b038316610c8a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b9565b6001600160a01b038216610ceb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b9565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610dd85781811015610dcb5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b9565b610dd88484848403610c28565b50505050565b6001600160a01b038316610e425760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b9565b6001600160a01b038216610ea45760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b9565b6001600160a01b03831660009081526020819052604090205481811015610f1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b9565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610f53908490611f32565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f9f91815260200190565b60405180910390a3610dd8848484611381565b6000306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801561100b57507f000000000000000000000000000000000000000000000000000000000000000046145b1561103557507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b8154600090815b8181101561113d5760006110f4828461138c565b90508486828154811061110957611109611f96565b60009182526020909120015463ffffffff16111561112957809250611137565b611134816001611f32565b91505b506110e0565b8115611181578461114f600184611f7f565b8154811061115f5761115f611f96565b60009182526020909120015464010000000090046001600160e01b0316611184565b60005b6001600160e01b031695945050505050565b61061f82826113a7565b6001600160a01b038281166000818152600760208181526040808420805485845282862054949093528787166001600160a01b03198416811790915590519190951694919391928592917f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a4610dd8828483611431565b600063ffffffff82111561127e5760405162461bcd60e51b815260206004820152602660248201527f53616665436173743a2076616c756520646f65736e27742066697420696e203360448201526532206269747360d01b60648201526084016105b9565b5090565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b61061f828261156e565b60006106526112eb610fb2565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b600080600061133d87878787611586565b9150915061134a81611673565b5095945050505050565b6001600160a01b03811660009081526006602052604090208054600181018255905b50919050565b505050565b61137c83838361182e565b600061139b6002848418611fac565b6105e490848416611f32565b6113b18282611860565b6002546001600160e01b0310156114235760405162461bcd60e51b815260206004820152603060248201527f4552433230566f7465733a20746f74616c20737570706c79207269736b73206f60448201526f766572666c6f77696e6720766f74657360801b60648201526084016105b9565b610dd8600961194783611953565b816001600160a01b0316836001600160a01b0316141580156114535750600081115b1561137c576001600160a01b038316156114e1576001600160a01b0383166000908152600860205260408120819061148e90611acc85611953565b91509150846001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a72483836040516114d6929190918252602082015260400190565b60405180910390a250505b6001600160a01b0382161561137c576001600160a01b038216600090815260086020526040812081906115179061194785611953565b91509150836001600160a01b03167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724838360405161155f929190918252602082015260400190565b60405180910390a25050505050565b6115788282611ad8565b610dd86009611acc83611953565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08311156115bd575060009050600361166a565b8460ff16601b141580156115d557508460ff16601c14155b156115e6575060009050600461166a565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa15801561163a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166116635760006001925092505061166a565b9150600090505b94509492505050565b600081600481111561168757611687611fce565b14156116905750565b60018160048111156116a4576116a4611fce565b14156116f25760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e6174757265000000000000000060448201526064016105b9565b600281600481111561170657611706611fce565b14156117545760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e6774680060448201526064016105b9565b600381600481111561176857611768611fce565b14156117c15760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b60648201526084016105b9565b60048160048111156117d5576117d5611fce565b141561062d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b60648201526084016105b9565b6001600160a01b0383811660009081526007602052604080822054858416835291205461137c92918216911683611431565b6001600160a01b0382166118b65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b9565b80600260008282546118c89190611f32565b90915550506001600160a01b038216600090815260208190526040812080548392906118f5908490611f32565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361061f60008383611381565b60006105e48284611f32565b82546000908190801561199e578561196c600183611f7f565b8154811061197c5761197c611f96565b60009182526020909120015464010000000090046001600160e01b03166119a1565b60005b6001600160e01b031692506119ba83858763ffffffff16565b91506000811180156119f8575043866119d4600184611f7f565b815481106119e4576119e4611f96565b60009182526020909120015463ffffffff16145b15611a5857611a0682611c2d565b86611a12600184611f7f565b81548110611a2257611a22611f96565b9060005260206000200160000160046101000a8154816001600160e01b0302191690836001600160e01b03160217905550611ac3565b856040518060400160405280611a6d43611219565b63ffffffff168152602001611a8185611c2d565b6001600160e01b0390811690915282546001810184556000938452602093849020835194909301519091166401000000000263ffffffff909316929092179101555b50935093915050565b60006105e48284611f7f565b6001600160a01b038216611b385760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b9565b6001600160a01b03821660009081526020819052604090205481811015611bac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b9565b6001600160a01b0383166000908152602081905260408120838303905560028054849290611bdb908490611f7f565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361137c83600084611381565b60006001600160e01b0382111561127e5760405162461bcd60e51b815260206004820152602760248201527f53616665436173743a2076616c756520646f65736e27742066697420696e20326044820152663234206269747360c81b60648201526084016105b9565b600060208083528351808285015260005b81811015611cc357858101830151858201604001528201611ca7565b81811115611cd5576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114611d0257600080fd5b919050565b60008060408385031215611d1a57600080fd5b611d2383611ceb565b946020939093013593505050565b600080600060608486031215611d4657600080fd5b611d4f84611ceb565b9250611d5d60208501611ceb565b9150604084013590509250925092565b600060208284031215611d7f57600080fd5b6105e482611ceb565b600060208284031215611d9a57600080fd5b5035919050565b803560ff81168114611d0257600080fd5b60008060008060008060c08789031215611dcb57600080fd5b611dd487611ceb565b95506020870135945060408701359350611df060608801611da1565b92506080870135915060a087013590509295509295509295565b600080600080600080600060e0888a031215611e2557600080fd5b611e2e88611ceb565b9650611e3c60208901611ceb565b95506040880135945060608801359350611e5860808901611da1565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611e8757600080fd5b611e9083611ceb565b9150611e9e60208401611ceb565b90509250929050565b60008060408385031215611eba57600080fd5b611ec383611ceb565b9150602083013563ffffffff81168114611edc57600080fd5b809150509250929050565b600181811c90821680611efb57607f821691505b6020821081141561137657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115611f4557611f45611f1c565b500190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082821015611f9157611f91611f1c565b500390565b634e487b7160e01b600052603260045260246000fd5b600082611fc957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052602160045260246000fdfea164736f6c6343000809000a