0x608060405234801561001057600080fd5b50604051615ad8380380615ad883398101604081905261002f91610370565b610037610094565b604080513360248201526001600160a01b0384166044808301919091528251808303909101815260649091019091526020810180516001600160e01b031663485cc95560e01b17905261008c828260006100c6565b50505061040c565b6000806040516100a390610363565b604051809103906000f0801580156100bf573d6000803e3d6000fd5b5092915050565b6100cf836100fc565b6000825111806100dc5750805b156100f7576100f5838361013c60201b6100291760201c565b505b505050565b61010581610168565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101618383604051806060016040528060278152602001615ab16027913961023a565b9392505050565b61017b8161031860201b6100551760201c565b6101e25760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806102197f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61032760201b6100711760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606001600160a01b0384163b6102a25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101d9565b600080856001600160a01b0316856040516102bd91906103bd565b600060405180830381855af49150503d80600081146102f8576040519150601f19603f3d011682016040523d82523d6000602084013e6102fd565b606091505b50909250905061030e82828661032a565b9695505050505050565b6001600160a01b03163b151590565b90565b60608315610339575081610161565b8251156103495782518084602001fd5b8160405162461bcd60e51b81526004016101d991906103d9565b6153748061073d83390190565b60006020828403121561038257600080fd5b81516001600160a01b038116811461016157600080fd5b60005b838110156103b457818101518382015260200161039c565b50506000910152565b600082516103cf818460208701610399565b9190910192915050565b60208152600082518060208401526103f8816040850160208701610399565b601f01601f19169190910160400192915050565b6103228061041b6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610074565b6100b9565b565b606061004e83836040518060600160405280602781526020016102ef602791396100dd565b9392505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b90565b60006100b47f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b3660008037600080366000845af43d6000803e8080156100d8573d6000f35b3d6000fd5b606073ffffffffffffffffffffffffffffffffffffffff84163b610188576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e7472616374000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b6000808573ffffffffffffffffffffffffffffffffffffffff16856040516101b09190610281565b600060405180830381855af49150503d80600081146101eb576040519150601f19603f3d011682016040523d82523d6000602084013e6101f0565b606091505b509150915061020082828661020a565b9695505050505050565b6060831561021957508161004e565b8251156102295782518084602001fd5b816040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161017f919061029d565b60005b83811015610278578181015183820152602001610260565b50506000910152565b6000825161029381846020870161025d565b9190910192915050565b60208152600082518060208401526102bc81604085016020870161025d565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000810000a60a06040523060805234801561001457600080fd5b5060805161532861004c60003960008181610b7201528181610c0801528181611069015281816110ff015261154001526153286000f3fe6080604052600436106101d85760003560e01c80638b0a776511610102578063d3c7c2c711610095578063f1d2ec1d11610064578063f1d2ec1d14610637578063f2fde38b14610657578063ff22f27214610677578063ff3787191461069757600080fd5b8063d3c7c2c714610599578063d3e95ea4146105bc578063d4f82322146105dc578063eba7fb77146105fc57600080fd5b8063b805f321116100d1578063b805f32114610519578063c11d9ecb14610539578063c5d7ca0014610559578063ce7f79b91461057957600080fd5b80638b0a7765146104815780638f487dc9146104b9578063a5c9c66c146104d9578063b75252e7146104f957600080fd5b80634f1ef2861161017a57806360a2da981161014957806360a2da98146103845780637fe0282b146103c9578063827c87cc1461041357806389a734c01461043357600080fd5b80634f1ef2861461030e578063515147ab1461032157806352d1902d1461034157806354d6a2b71461036457600080fd5b806335eff30f116101b657806335eff30f1461028e5780633659cfe6146102ae57806337b90a4f146102ce578063485cc955146102ee57600080fd5b8063051119f5146101dd5780631e2a6075146101ff5780632335093c1461024c575b600080fd5b3480156101e957600080fd5b506101fd6101f8366004614ae8565b6106cd565b005b34801561020b57600080fd5b5061021f61021a366004614b03565b61090e565b604080516001600160a01b0394851681529390921660208401521515908201526060015b60405180910390f35b34801561025857600080fd5b5061027c610267366004614ae8565b60666020526000908152604090205460ff1681565b60405160ff9091168152602001610243565b34801561029a57600080fd5b506101fd6102a9366004614b31565b610985565b3480156102ba57600080fd5b506101fd6102c9366004614ae8565b610b68565b3480156102da57600080fd5b506101fd6102e9366004614b5d565b610d05565b3480156102fa57600080fd5b506101fd610309366004614b98565b610edb565b6101fd61031c366004614c40565b61105f565b34801561032d57600080fd5b506101fd61033c366004614d04565b6111ed565b34801561034d57600080fd5b50610356611533565b604051908152602001610243565b34801561037057600080fd5b506101fd61037f366004614b03565b6115f8565b34801561039057600080fd5b506103a461039f366004614d43565b61176b565b604080516001600160a01b03909316835264ffffffffff909116602083015201610243565b3480156103d557600080fd5b506103fd6103e4366004614ae8565b60996020526000908152604090205464ffffffffff1681565b60405164ffffffffff9091168152602001610243565b34801561041f57600080fd5b506101fd61042e366004614d74565b6117e4565b34801561043f57600080fd5b5061046961044e366004614dc8565b609a602052600090815260409020546001600160a01b031681565b6040516001600160a01b039091168152602001610243565b34801561048d57600080fd5b5061035661049c366004614df4565b60281b65ff0000000000166000908152609b602052604090205490565b3480156104c557600080fd5b506101fd6104d4366004614b5d565b6119ab565b3480156104e557600080fd5b506101fd6104f4366004614e0f565b611cb5565b34801561050557600080fd5b506101fd610514366004614e88565b611f8a565b34801561052557600080fd5b506101fd610534366004614ae8565b612466565b34801561054557600080fd5b506101fd610554366004614f54565b612477565b34801561056557600080fd5b506101fd610574366004615014565b6125ac565b34801561058557600080fd5b506101fd610594366004614b5d565b61298c565b3480156105a557600080fd5b506105ae612b5a565b604051610243929190615048565b3480156105c857600080fd5b506103566105d7366004614b98565b612d50565b3480156105e857600080fd5b506101fd6105f73660046150cf565b612dd3565b34801561060857600080fd5b506040517f044d0000000000000000000000000000000000000000000000000000000000008152602001610243565b34801561064357600080fd5b506101fd610652366004614d43565b612e38565b34801561066357600080fd5b506101fd610672366004614ae8565b612fcb565b34801561068357600080fd5b506101fd610692366004614ae8565b61302f565b3480156106a357600080fd5b506104696106b2366004614df4565b6065602052600090815260409020546001600160a01b031681565b3360008181526099602052604081205464ffffffffff169081900361075f5760405162461bcd60e51b815260206004820152602360248201527f546865207369676e657220646f6573206e6f742072656769737465722061207060448201527f6f6f6c000000000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b64ffffffffff81166000908152609a60205260409020546001600160a01b038381169116146107f65760405162461bcd60e51b815260206004820152602160248201527f4e6565642074686520706f6f6c206f776e657220617320746865207369676e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610756565b6001600160a01b03831660009081526099602052604090205464ffffffffff82811691161461088d5760405162461bcd60e51b815260206004820152602c60248201527f41646472206973206e6f7420617574686f72697a656420666f7220746865207360448201527f69676e6572277320706f6f6c00000000000000000000000000000000000000006064820152608401610756565b6001600160a01b03831660008181526099602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000169055905191825264ffffffffff8316917f475b83c893df40ee19fd0783cf26478cdb58478dff65bb62560e1e7c36e0f22f91015b60405180910390a2505050565b600081815260ce60205260408120546001600160a01b03602882901c16919078ffffffffffffffffffffffffffffffffffffffffffffffffff16801515908361095a576000925061097d565b64ffffffffff81166000908152609a60205260409020546001600160a01b031692505b509193909250565b600082815260ce602052604090205478ffffffffffffffffffffffffffffffffffffffffffffffffff16600181116109ff5760405162461bcd60e51b815260206004820152601360248201527f5377617020646f6573206e6f74206578697374000000000000000000000000006044820152606401610756565b8064ffffffffff1615610a545760405162461bcd60e51b815260206004820152601b60248201527f5377617020626f6e64656420746f20616e6f7468657220706f6f6c00000000006044820152606401610756565b3360009081526099602052604090205464ffffffffff838116911614610ae25760405162461bcd60e51b815260206004820152603860248201527f5369676e65722073686f756c6420626520616e20617574686f72697a6564206160448201527f646472657373206f662074686520676976656e20706f6f6c00000000000000006064820152608401610756565b600083815260ce602052604080822080547fffffffffffffff000000000000000000000000000000000000000000000000001664ffffffffff861678ffffffffffffffffffffffffffffffffffffffffffffffffff8616171790555184917f60a99b51ae498c44acbbe11031aed2a06a32be66d2122e6e2a7a16c087865cc991a2505050565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163003610c065760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610756565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610c617f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b031614610cdd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610756565b610ce681613263565b60408051600080825260208201909252610d02918391906132be565b50565b60008211610d555760405162461bcd60e51b815260206004820152601760248201527f416d6f756e74206d75737420626520706f7369746976650000000000000000006044820152606401610756565b8064ffffffffff8116600003610dad5760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f7420757365203020617320706f6f6c20696e6465780000000000006044820152606401610756565b3360009081526099602052604090205464ffffffffff828116911614610e3b5760405162461bcd60e51b815260206004820152602860248201527f4e65656420616e20617574686f72697a6564206164647265737320617320746860448201527f65207369676e65720000000000000000000000000000000000000000000000006064820152608401610756565b65ffffffffffff82166000908152609b602052604081208054859290610e62908490615128565b909155505060ff602883901c16600081815260656020526040902054610e93906001600160a01b031633868461347c565b8265ffffffffffff167f7d7d1df74ef3a6434d8d63dc0a25d13d5fa94dbe738c38a3cce26e6f892e2a7685604051610ecd91815260200190565b60405180910390a250505050565b600054610100900460ff1615808015610efb5750600054600160ff909116105b80610f155750303b158015610f15575060005460ff166001145b610f875760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610756565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610fe557600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610fee8361370f565b610ff7826137d0565b801561105a57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001630036110fd5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610756565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166111587f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b6001600160a01b0316146111d45760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610756565b6111dd82613263565b6111e9828260016132be565b5050565b8360016111fa8260f81c90565b60ff161461124a5760405162461bcd60e51b815260206004820152601a60248201527f496e636f727265637420656e636f64696e672076657273696f6e0000000000006044820152606401610756565b8461044d6112588260201c90565b61ffff16146112a95760405162461bcd60e51b815260206004820152601760248201527f53776170206e6f7420666f72207468697320636861696e0000000000000000006044820152606401610756565b60006112b587856138b7565b6000818152610101602052604090205490915069ffffffffffffffffffff16156113215760405162461bcd60e51b815260206004820152601360248201527f5377617020616c726561647920657869737473000000000000000000000000006044820152606401610756565b61132d87878787613918565b3360009081526099602052604081205464ffffffffff16908190036113ba5760405162461bcd60e51b815260206004820152602f60248201527f43616c6c6572206e6f7420726567697374657265642e2043616c6c206465706f60448201527f736974416e6452656769737465722e00000000000000000000000000000000006064820152608401610756565b60006113c86104b042615128565b90506113e161012c64ffffffffff60308c901c1661513b565b81106114555760405162461bcd60e51b815260206004820152602560248201527f43616e6e6f74206c6f636b20626563617573652065787069726554732069732060448201527f736f6f6e2e0000000000000000000000000000000000000000000000000000006064820152608401610756565b64ffffffffff82811660108b901b65ff00000000001617906114849060588c901c81169060d08d901c1661513b565b65ffffffffffff82166000908152609b6020526040812080549091906114ab90849061513b565b90915550506000848152610101602052604080822080547fffffffffffffffffffffffffffffffffffffffffffff000000000000000000001664ffffffffff8716602887901b69ffffffffff00000000001617179055518b917fbfb879c34323c5601fafe832c3a8a1e31e12c288695838726ddeada86034edb491a250505050505050505050565b6000306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115d35760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610756565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b600081815260ce602052604090205478ffffffffffffffffffffffffffffffffffffffffffffffffff16600181116116725760405162461bcd60e51b815260206004820152601360248201527f5377617020646f6573206e6f74206578697374000000000000000000000000006044820152606401610756565b42603083901c64ffffffffff16106116cc5760405162461bcd60e51b815260206004820152601460248201527f53776170206973207374696c6c206c6f636b65640000000000000000000000006044820152606401610756565b600082815260ce6020908152604080832080547fffffffffffffff0000000000000000000000000000000000000000000000000016905560ff851683526065909152902054829061173b906001600160a01b0390811690602885901c1664ffffffffff60d085901c1684613c16565b60405183907ff6b6b4f7a13f02512c1b3aa8dcc4a07d7775a6a4becbd439efcbd37c5408e67f90600090a2505050565b600080600061177a85856138b7565b6000818152610101602052604090205490915069ffffffffffffffffffff1660018190036117af5760019350600092506117db565b64ffffffffff8082166000908152609a60205260409020546001600160a01b03169450602882901c1692505b50509250929050565b600085815260ce602052604090205478ffffffffffffffffffffffffffffffffffffffffffffffffff166001811161185e5760405162461bcd60e51b815260206004820152601360248201527f5377617020646f6573206e6f74206578697374000000000000000000000000006044820152606401610756565b61186a610e1042615128565b603087901c64ffffffffff1610156118b557600086815260ce6020526040902080547fffffffffffffff000000000000000000000000000000000000000000000000001690556118ed565b600086815260ce6020526040902080547fffffffffffffff000000000000000000000000000000000000000000000000001660011790555b61190786848787602886901c6001600160a01b0316613df5565b858183156119595764ffffffffff818116602884901b65ff000000000016176000908152609b60205260408120805460d08c901c939093169290919061194e908490615128565b909155506119a19050565b60ff821660009081526065602090815260408083205464ffffffffff8581168552609a9093529220546119a1926001600160a01b039081169291169060d08c901c1685613c16565b5050505050505050565b600082116119fb5760405162461bcd60e51b815260206004820152601760248201527f416d6f756e74206d75737420626520706f7369746976650000000000000000006044820152606401610756565b338164ffffffffff8116600003611a545760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f7420757365203020617320706f6f6c20696e6465780000000000006044820152606401610756565b64ffffffffff81166000908152609a60205260409020546001600160a01b031615611ac15760405162461bcd60e51b815260206004820152601d60248201527f506f6f6c20696e64657820616c726561647920726567697374657265640000006044820152606401610756565b6001600160a01b03821660009081526099602052604090205464ffffffffff1615611b545760405162461bcd60e51b815260206004820152602160248201527f5369676e6572206164647265737320616c72656164792072656769737465726560448201527f64000000000000000000000000000000000000000000000000000000000000006064820152608401610756565b64ffffffffff81166000818152609a6020908152604080832080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03881690811790915583526099825280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001690941790935565ffffffffffff86168252609b90529081208054869290611bf6908490615128565b909155505060ff602884901c16600081815260656020526040902054611c27906001600160a01b031684878461347c565b6040516001600160a01b038416815264ffffffffff8316907fb8d9c35a714d4e29eaf036b9bf8183a093c5573ac809453b4e8434e25c9126d29060200160405180910390a28365ffffffffffff167f7d7d1df74ef3a6434d8d63dc0a25d13d5fa94dbe738c38a3cce26e6f892e2a7686604051611ca691815260200190565b60405180910390a25050505050565b333214611d2a5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f742062652063616c6c6564207468726f75676820636f6e7472616360448201527f74730000000000000000000000000000000000000000000000000000000000006064820152608401610756565b794000000000000000000000000000000000000000000000000000851615801590611d5757611d5761419f565b6000611d6387856138b7565b6000818152610101602052604090205490915069ffffffffffffffffffff1660018111611dd25760405162461bcd60e51b815260206004820152601360248201527f5377617020646f6573206e6f74206578697374000000000000000000000000006044820152606401610756565b6001600160a01b038416611e285760405162461bcd60e51b815260206004820181905260248201527f526563697069656e742063616e6e6f74206265207a65726f20616464726573736044820152606401610756565b42603089901c64ffffffffff1611611e825760405162461bcd60e51b815260206004820152601e60248201527f43616e6e6f742072656c656173652062656361757365206578706972656400006044820152606401610756565b611e8f8885898989613df5565b60008281526101016020526040812080547fffffffffffffffffffffffffffffffffffffffffffff00000000000000000000166001179055611ed18960181c90565b90506000611ef164ffffffffff60588c901c81169060d08d901c1661513b565b905084611f46576000611f038b614222565b9050611f0f818361513b565b60108c901b65ff0000000000166000908152609b6020526040812080549294508392909190611f3f908490615128565b9091555050505b611f538a83898985614247565b6040518a907ffa628b578e095243f0544bfad9255f49d79d03a5bbf6c85875d05a215e247ad290600090a250505050505050505050565b846001611f978260f81c90565b60ff1614611fe75760405162461bcd60e51b815260206004820152601a60248201527f496e636f727265637420656e636f64696e672076657273696f6e0000000000006044820152606401610756565b8561044d611ff58260081c90565b61ffff16146120465760405162461bcd60e51b815260206004820152601760248201527f53776170206e6f7420666f72207468697320636861696e0000000000000000006044820152606401610756565b600087815260ce602052604090205478ffffffffffffffffffffffffffffffffffffffffffffffffff16156120bd5760405162461bcd60e51b815260206004820152601360248201527f5377617020616c726561647920657869737473000000000000000000000000006044820152606401610756565b64ffffffffff60d088901c1664174876e8008111156121445760405162461bcd60e51b815260206004820152603760248201527f466f7220736563757269747920726561736f6e2c20616d6f756e742063616e6e60448201527f6f742062652067726561746572207468616e203130306b0000000000000000006064820152608401610756565b600061215b4264ffffffffff60308c901c1661513b565b9050610e1081116121ae5760405162461bcd60e51b815260206004820152601360248201527f45787069726520747320746f6f206561726c79000000000000000000000000006044820152606401610756565b611c2081106121ff5760405162461bcd60e51b815260206004820152601260248201527f45787069726520747320746f6f206c61746500000000000000000000000000006044820152606401610756565b8564ffffffffff81161561229b573360009081526099602052604090205464ffffffffff82811691161461229b5760405162461bcd60e51b815260206004820152603860248201527f5369676e65722073686f756c6420626520616e20617574686f72697a6564206160448201527f646472657373206f662074686520676976656e20706f6f6c00000000000000006064820152608401610756565b6000602888901c6001600160a01b03166040517ffe9fbb800000000000000000000000000000000000000000000000000000000081526001600160a01b0380831660048301529192509088169063fe9fbb8090602401602060405180830381865afa15801561230e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612332919061514e565b6123a45760405162461bcd60e51b815260206004820152602160248201527f5369676e6572206e6f7420617574686f72697a656420627920636f6e7472616360448201527f74000000000000000000000000000000000000000000000000000000000000006064820152608401610756565b6123b08b8b8b84613918565b60008b815260ce6020526040812080547fffffffffffffff000000000000000000000000000000000000000000000000001678ffffffffffffffffffffffffffffffffffffffffffffffffff8b161790558b60ff811660009081526065602052604090205490915061242d906001600160a01b031689878461347c565b6040518c907f5ce4019f772fda6cb703b26bce3ec3006eb36b73f1d3a0eb441213317d9f5e9d90600090a2505050505050505050505050565b61246e61419f565b610d02816137d0565b610134546001600160a01b031633146124d25760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610756565b80518251146125495760405162461bcd60e51b815260206004820152602e60248201527f546f6b656e7320616e6420696e64657865732073686f756c642068617665207460448201527f68652073616d65206c656e6774680000000000000000000000000000000000006064820152608401610756565b60005b82518160ff16101561105a5761259a838260ff16815181106125705761257061516b565b6020026020010151838360ff168151811061258d5761258d61516b565b60200260200101516142cf565b806125a48161519a565b91505061254c565b8360016125b98260f81c90565b60ff16146126095760405162461bcd60e51b815260206004820152601a60248201527f496e636f727265637420656e636f64696e672076657273696f6e0000000000006044820152606401610756565b8461044d6126178260081c90565b61ffff16146126685760405162461bcd60e51b815260206004820152601760248201527f53776170206e6f7420666f72207468697320636861696e0000000000000000006044820152606401610756565b600086815260ce602052604090205478ffffffffffffffffffffffffffffffffffffffffffffffffff16156126df5760405162461bcd60e51b815260206004820152601360248201527f5377617020616c726561647920657869737473000000000000000000000000006044820152606401610756565b64ffffffffff60d087901c1664174876e8008111156127665760405162461bcd60e51b815260206004820152603760248201527f466f7220736563757269747920726561736f6e2c20616d6f756e742063616e6e60448201527f6f742062652067726561746572207468616e203130306b0000000000000000006064820152608401610756565b600061277d4264ffffffffff60308b901c1661513b565b9050610e1081116127d05760405162461bcd60e51b815260206004820152601360248201527f45787069726520747320746f6f206561726c79000000000000000000000000006044820152606401610756565b611c2081106128215760405162461bcd60e51b815260206004820152601260248201527f45787069726520747320746f6f206c61746500000000000000000000000000006044820152606401610756565b8464ffffffffff8116156128bd573360009081526099602052604090205464ffffffffff8281169116146128bd5760405162461bcd60e51b815260206004820152603860248201527f5369676e65722073686f756c6420626520616e20617574686f72697a6564206160448201527f646472657373206f662074686520676976656e20706f6f6c00000000000000006064820152608401610756565b6001600160a01b03602887901c166128d78a8a8a84613918565b60008a815260ce6020526040812080547fffffffffffffff000000000000000000000000000000000000000000000000001678ffffffffffffffffffffffffffffffffffffffffffffffffff8a161790558a60ff8116600090815260656020526040902054909150612954906001600160a01b031683878461347c565b6040518b907f5ce4019f772fda6cb703b26bce3ec3006eb36b73f1d3a0eb441213317d9f5e9d90600090a25050505050505050505050565b600082116129dc5760405162461bcd60e51b815260206004820152601760248201527f416d6f756e74206d75737420626520706f7369746976650000000000000000006044820152606401610756565b8064ffffffffff8116600003612a345760405162461bcd60e51b815260206004820152601a60248201527f43616e6e6f7420757365203020617320706f6f6c20696e6465780000000000006044820152606401610756565b64ffffffffff81166000908152609a60205260409020546001600160a01b03163314612ac85760405162461bcd60e51b815260206004820152602160248201527f4e6565642074686520706f6f6c206f776e657220617320746865207369676e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610756565b65ffffffffffff82166000908152609b602052604081208054859290612aef90849061513b565b909155505060ff602883901c16600081815260656020526040902054612b20906001600160a01b0316338684613c16565b8265ffffffffffff167f34c3d1c46f89307d63d8818fcc5c2a9c07a5f7a01ea4319bfba1899f40c6f40085604051610ecd91815260200190565b6060806000805b60ff8260ff161015612bbf576000606581612b7d8560016151b9565b60ff1681526020810191909152604001600020546001600160a01b031614612bad5780612ba98161519a565b9150505b81612bb78161519a565b925050612b61565b8060ff1667ffffffffffffffff811115612bdb57612bdb614bc2565b604051908082528060200260200182016040528015612c04578160200160208202803683370190505b5093508060ff1667ffffffffffffffff811115612c2357612c23614bc2565b604051908082528060200260200182016040528015612c4c578160200160208202803683370190505b50925060008092505b60ff8360ff161015612d49576000606581612c718660016151b9565b60ff1681526020810191909152604001600020546001600160a01b031614612d375760656000612ca28560016151b9565b60ff1660ff16815260200190815260200160002060009054906101000a90046001600160a01b0316858260ff1681518110612cdf57612cdf61516b565b6001600160a01b0390921660209283029190910190910152612d028360016151b9565b848260ff1681518110612d1757612d1761516b565b60ff9092166020928302919091019091015280612d338161519a565b9150505b82612d418161519a565b935050612c55565b5050509091565b6001600160a01b0380831660009081526066602090815260408083205493851683526099909152812054909160ff169064ffffffffff16801580612d95575060ff8216155b15612da557600092505050612dcd565b64ffffffffff1660289190911b65ff000000000016176000908152609b602052604090205490505b92915050565b610134546001600160a01b03163314612e2e5760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610756565b6111e982826142cf565b6000612e4483836138b7565b6000818152610101602052604090205490915069ffffffffffffffffffff1660018111612eb35760405162461bcd60e51b815260206004820152601360248201527f5377617020646f6573206e6f74206578697374000000000000000000000000006044820152606401610756565b42602882901c64ffffffffff1610612f0d5760405162461bcd60e51b815260206004820152601260248201527f53776170207374696c6c20696e206c6f636b00000000000000000000000000006044820152606401610756565b64ffffffffff818116601086901b65ff0000000000161790612f3c90605887901c81169060d088901c1661513b565b65ffffffffffff82166000908152609b602052604081208054909190612f63908490615128565b90915550506000838152610101602052604080822080547fffffffffffffffffffffffffffffffffffffffffffff000000000000000000001690555186917fac7d23c4f0137a4cc35b0e4b4bc8061ea6cb65805e87ceb0a77ca0c85814858c91a25050505050565b610134546001600160a01b031633146130265760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610756565b610d028161370f565b6001600160a01b03811660009081526099602052604090205464ffffffffff16156130c25760405162461bcd60e51b815260206004820152602360248201527f4164647220697320617574686f72697a656420666f7220616e6f74686572207060448201527f6f6f6c00000000000000000000000000000000000000000000000000000000006064820152608401610756565b3360008181526099602052604081205464ffffffffff169081900361314f5760405162461bcd60e51b815260206004820152602360248201527f546865207369676e657220646f6573206e6f742072656769737465722061207060448201527f6f6f6c00000000000000000000000000000000000000000000000000000000006064820152608401610756565b64ffffffffff81166000908152609a60205260409020546001600160a01b038381169116146131e65760405162461bcd60e51b815260206004820152602160248201527f4e6565642074686520706f6f6c206f776e657220617320746865207369676e6560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610756565b6001600160a01b03831660008181526099602090815260409182902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000001664ffffffffff8616908117909155915192835290917fd49cde4f679ccef3d23ff07aae4f6845e1c661e23e9fe6a54da26f0723fb695f9101610901565b610134546001600160a01b03163314610d025760405162461bcd60e51b815260206004820152601760248201527f43616c6c6572206973206e6f7420746865206f776e65720000000000000000006044820152606401610756565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156132f15761105a836144cb565b826001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015613369575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201909252613366918101906151d2565b60015b6133db5760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610756565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146134705760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610756565b5061105a8383836145a1565b6001600160a01b0384166134d25760405162461bcd60e51b815260206004820152601360248201527f546f6b656e206e6f7420737570706f72746564000000000000000000000000006044820152606401610756565b600082116135225760405162461bcd60e51b815260206004820181905260248201527f416d6f756e74206d7573742062652067726561746572207468616e207a65726f6044820152606401610756565b6001600160a01b0384163b61359f5760405162461bcd60e51b815260206004820152602960248201527f54686520676976656e20746f6b656e2061646472657373206973206e6f74206160448201527f20636f6e747261637400000000000000000000000000000000000000000000006064820152608401610756565b6135a8816145cc565b156135bf576135bc64e8d4a51000836151eb565b91505b604080516001600160a01b038581166024830152306044830152606480830186905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd00000000000000000000000000000000000000000000000000000000179052915160009283929088169161364f919061524c565b6000604051808303816000865af19150503d806000811461368c576040519150601f19603f3d011682016040523d82523d6000602084013e613691565b606091505b50915091508180156136bb5750805115806136bb5750808060200190518101906136bb919061514e565b6137075760405162461bcd60e51b815260206004820152601360248201527f7472616e7366657246726f6d206661696c6564000000000000000000000000006044820152606401610756565b505050505050565b6001600160a01b0381166137655760405162461bcd60e51b815260206004820181905260248201527f4e6577206f776e65722063616e6e6f74206265207a65726f20616464726573736044820152606401610756565b61013480546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8934ce4adea8d9ce0d714d2c22b86790e41b7731c84b926fbbdc1d40ff6533c990600090a35050565b6001600160a01b03811661384c5760405162461bcd60e51b815260206004820152602360248201527f4e6577207072656d69756d206d616e61676572206265207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610756565b61013580546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f4798f31ad3d0ccde6359edf35fc39b882e4e1cff2968ca749b72074d373db27a90600090a35050565b600082826040516020016138fa92919091825260601b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016602082015260340190565b60405160208183030381529060405280519060200120905092915050565b6001600160a01b03811661396e5760405162461bcd60e51b815260206004820152601e60248201527f5369676e65722063616e6e6f7420626520656d707479206164647265737300006044820152606401610756565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660006139a260ff85901c601b615128565b90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613a145760405162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e61747572650000000000000000000000000000006044820152606401610756565b790800000000000000000000000000000000000000000000000000861615156000600888901c61ffff1660c303613ae65781613a70577f1954524f4e205369676e6564204d6573736167653a0a33320a00000000000000613a92565b7f1954524f4e205369676e6564204d6573736167653a0a33330a000000000000005b6040517fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009091166020820152603981018990526059015b604051602081830303815290604052805190602001209050613b59565b8115613b24576040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101899052605c01613ac9565b506000878152602080822090527f9862d877599564bcd97c37305a7b0fdbe621d9c2a125026f2ad601f754a75abc8152604090205b60408051600081526020810180835283905260ff851691810191909152606081018890526080810185905260019060a0016020604051602081039080840390855afa158015613bac573d6000803e3d6000fd5b505050602060405103516001600160a01b0316856001600160a01b0316146119a15760405162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e61747572650000000000000000000000000000006044820152606401610756565b6001600160a01b0384163b613c935760405162461bcd60e51b815260206004820152602960248201527f54686520676976656e20746f6b656e2061646472657373206973206e6f74206160448201527f20636f6e747261637400000000000000000000000000000000000000000000006064820152608401610756565b613c9c816145cc565b15613cb357613cb064e8d4a51000836151eb565b91505b604080516001600160a01b038581166024830152604480830186905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790529151600092839290881691613d3d919061524c565b6000604051808303816000865af19150503d8060008114613d7a576040519150601f19603f3d011682016040523d82523d6000602084013e613d7f565b606091505b5091509150818015613da9575080511580613da9575080806020019051810190613da9919061514e565b6137075760405162461bcd60e51b815260206004820152600f60248201527f7472616e73666572206661696c656400000000000000000000000000000000006044820152606401610756565b6001600160a01b038116613e4b5760405162461bcd60e51b815260206004820152601e60248201527f5369676e65722063616e6e6f7420626520656d707479206164647265737300006044820152606401610756565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82166000613e7f60ff85901c601b615128565b90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0821115613ef15760405162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e61747572650000000000000000000000000000006044820152606401610756565b790800000000000000000000000000000000000000000000000000871615156000600889901c61ffff1660c303613fef5781613f4d577f1954524f4e205369676e6564204d6573736167653a0a33320a00000000000000613f6f565b7f1954524f4e205369676e6564204d6573736167653a0a35330a000000000000005b6040517fffffffffffffffffffffffffffffffffffffffffffffffffff000000000000009091166020820152603981018a90527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a901b166059820152606d015b6040516020818303038152906040528051906020012090506140d7565b8115614059576040517f19457468657265756d205369676e6564204d6573736167653a0a3532000000006020820152603c81018a90527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608a901b16605c820152607001613fd2565b60006140658a60201c90565b61ffff1660c314614096577f743e50106a7f059b52151dd4ba27a5f6c87b925ddfbdcf1c332e800da4b3df926140b8565b7f28cf5b919ed55db2b14d9e8b261a523eafb98bab117d3a8a56e559791415d17c5b9050886014528960005260346000206020528060005260406000209150505b60408051600081526020810180835283905260ff851691810191909152606081018890526080810185905260019060a0016020604051602081039080840390855afa15801561412a573d6000803e3d6000fd5b505050602060405103516001600160a01b0316856001600160a01b0316146141945760405162461bcd60e51b815260206004820152601160248201527f496e76616c6964207369676e61747572650000000000000000000000000000006044820152606401610756565b505050505050505050565b610135546001600160a01b031633146142205760405162461bcd60e51b815260206004820152602160248201527f43616c6c6572206973206e6f7420746865207072656d69756d206d616e61676560448201527f72000000000000000000000000000000000000000000000000000000000000006064820152608401610756565b565b600061271061423d600a64ffffffffff60d086901c166151eb565b612dcd9190615268565b79800000000000000000000000000000000000000000000000000085166142a05760ff841660009081526065602052604090205461429b906001600160a01b0316838584886142968b60801c90565b6145e6565b6142c8565b60ff84166000908152606560205260409020546142c8906001600160a01b0316838387613c16565b5050505050565b8060ff166000036143225760405162461bcd60e51b815260206004820152601b60248201527f43616e6e6f7420757365203020617320746f6b656e20696e64657800000000006044820152606401610756565b6001600160a01b0382166143785760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f7420757365207a65726f20616464726573730000000000000000006044820152606401610756565b6001600160a01b03821660009081526066602052604090205460ff16156143e15760405162461bcd60e51b815260206004820152601b60248201527f546f6b656e20686173206265656e206164646564206265666f726500000000006044820152606401610756565b60ff81166000908152606560205260409020546001600160a01b03161561444a5760405162461bcd60e51b815260206004820152601360248201527f496e64657820686173206265656e2075736564000000000000000000000000006044820152606401610756565b6001600160a01b039091166000818152606660209081526040808320805460ff9096167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090961686179055938252606590529190912080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b6001600160a01b0381163b6145485760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610756565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b6145aa83614941565b6000825111806145b75750805b1561105a576145c68383614981565b50505050565b600060208260ff16118015612dcd57505060ff9081161090565b6001600160a01b0386163b6146635760405162461bcd60e51b815260206004820152602960248201527f54686520676976656e20746f6b656e2061646472657373206973206e6f74206160448201527f20636f6e747261637400000000000000000000000000000000000000000000006064820152608401610756565b6001600160a01b0385163b6146e05760405162461bcd60e51b815260206004820152602d60248201527f54686520676976656e20726563697069656e742061646472657373206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610756565b60ff603882901c1660018111156147395760405162461bcd60e51b815260206004820152601160248201527f556e6b6e6f776e206d6574686f642069640000000000000000000000000000006044820152606401610756565b614742836145cc565b156147595761475664e8d4a51000856151eb565b93505b6040517f095ea7b30000000000000000000000000000000000000000000000000000000081526001600160a01b0387811660048301526024820186905288169063095ea7b3906044016020604051808303816000875af11580156147c1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906147e5919061514e565b508060ff1660000361489b576040517fbff4163f0000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201869052868116604483015267ffffffffffffffff8416606483015287169063bff4163f906084016020604051808303816000875af1158015614871573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190614895919061514e565b50614938565b8060ff16600103614938576040517fe8eda9df0000000000000000000000000000000000000000000000000000000081526001600160a01b03888116600483015260248201869052868116604483015261ffff602885901c16606483015287169063e8eda9df90608401600060405180830381600087803b15801561491f57600080fd5b505af1158015614933573d6000803e3d6000fd5b505050505b50505050505050565b61494a816144cb565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606001600160a01b0383163b614a005760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f60448201527f6e747261637400000000000000000000000000000000000000000000000000006064820152608401610756565b600080846001600160a01b031684604051614a1b919061524c565b600060405180830381855af49150503d8060008114614a56576040519150601f19603f3d011682016040523d82523d6000602084013e614a5b565b606091505b5091509150614a8382826040518060600160405280602781526020016152f560279139614a8c565b95945050505050565b60608315614a9b575081614ac5565b825115614aab5782518084602001fd5b8160405162461bcd60e51b815260040161075691906152a3565b9392505050565b80356001600160a01b0381168114614ae357600080fd5b919050565b600060208284031215614afa57600080fd5b614ac582614acc565b600060208284031215614b1557600080fd5b5035919050565b803564ffffffffff81168114614ae357600080fd5b60008060408385031215614b4457600080fd5b82359150614b5460208401614b1c565b90509250929050565b60008060408385031215614b7057600080fd5b82359150602083013565ffffffffffff81168114614b8d57600080fd5b809150509250929050565b60008060408385031215614bab57600080fd5b614bb483614acc565b9150614b5460208401614acc565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614c3857614c38614bc2565b604052919050565b60008060408385031215614c5357600080fd5b614c5c83614acc565b915060208084013567ffffffffffffffff80821115614c7a57600080fd5b818601915086601f830112614c8e57600080fd5b813581811115614ca057614ca0614bc2565b614cd0847fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601614bf1565b91508082528784828501011115614ce657600080fd5b80848401858401376000848284010152508093505050509250929050565b60008060008060808587031215614d1a57600080fd5b843593506020850135925060408501359150614d3860608601614acc565b905092959194509250565b60008060408385031215614d5657600080fd5b82359150614b5460208401614acc565b8015158114610d0257600080fd5b600080600080600060a08688031215614d8c57600080fd5b853594506020860135935060408601359250614daa60608701614acc565b91506080860135614dba81614d66565b809150509295509295909350565b600060208284031215614dda57600080fd5b614ac582614b1c565b803560ff81168114614ae357600080fd5b600060208284031215614e0657600080fd5b614ac582614de3565b600080600080600060a08688031215614e2757600080fd5b853594506020860135935060408601359250614e4560608701614acc565b9150614e5360808701614acc565b90509295509295909350565b803578ffffffffffffffffffffffffffffffffffffffffffffffffff81168114614ae357600080fd5b600080600080600060a08688031215614ea057600080fd5b853594506020860135935060408601359250614e4560608701614e5f565b600067ffffffffffffffff821115614ed857614ed8614bc2565b5060051b60200190565b600082601f830112614ef357600080fd5b81356020614f08614f0383614ebe565b614bf1565b82815260059290921b84018101918181019086841115614f2757600080fd5b8286015b84811015614f4957614f3c81614de3565b8352918301918301614f2b565b509695505050505050565b60008060408385031215614f6757600080fd5b823567ffffffffffffffff80821115614f7f57600080fd5b818501915085601f830112614f9357600080fd5b81356020614fa3614f0383614ebe565b82815260059290921b84018101918181019089841115614fc257600080fd5b948201945b83861015614fe757614fd886614acc565b82529482019490820190614fc7565b96505086013592505080821115614ffd57600080fd5b5061500a85828601614ee2565b9150509250929050565b6000806000806080858703121561502a57600080fd5b843593506020850135925060408501359150614d3860608601614e5f565b604080825283519082018190526000906020906060840190828701845b8281101561508a5781516001600160a01b031684529284019290840190600101615065565b5050508381038285015284518082528583019183019060005b818110156150c257835160ff16835292840192918401916001016150a3565b5090979650505050505050565b600080604083850312156150e257600080fd5b6150eb83614acc565b9150614b5460208401614de3565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80820180821115612dcd57612dcd6150f9565b81810381811115612dcd57612dcd6150f9565b60006020828403121561516057600080fd5b8151614ac581614d66565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060ff821660ff81036151b0576151b06150f9565b60010192915050565b60ff8181168382160190811115612dcd57612dcd6150f9565b6000602082840312156151e457600080fd5b5051919050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615615223576152236150f9565b500290565b60005b8381101561524357818101518382015260200161522b565b50506000910152565b6000825161525e818460208701615228565b9190910192915050565b60008261529e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60208152600082518060208401526152c2816040850160208701615228565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000810000a416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564000000000000000000000000666d6b8a44d226150ca9058beebafe0e3ac065a2