61020060405234801561001157600080fd5b506040516138dc3803806138dc833981016040819052610030916103c7565b83838383838383838280604051806040016040528060018152602001603160f81b815250600a6207a120888888816003908161006c91906104eb565b50600461007982826104eb565b50505060008061008e836101d660201b60201c565b915091508161009e5760126100a0565b805b60ff1660a05250506001600160a01b031660805260008290036100d6576040516337f1632160e11b815260040160405180910390fd5b60c09190915260e05260016005556100ed336102b4565b815160208084019190912082519183019190912061016082905261018081905246610120527f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6101828184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6101005230610140526101a0525050336101c052508291505060058111156101ac576101ac6105aa565b6101e08160058111156101c1576101c16105aa565b815250505050505050505050505050506105f5565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b17905290516000918291829182916001600160a01b0387169161021d916105c0565b6000604051808303816000865af19150503d806000811461025a576040519150601f19603f3d011682016040523d82523d6000602084013e61025f565b606091505b509150915081801561027357506020815110155b156102a75760008180602001905181019061028e91906105dc565b905060ff81116102a5576001969095509350505050565b505b5060009485945092505050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561033757818101518382015260200161031f565b50506000910152565b600082601f83011261035157600080fd5b81516001600160401b038082111561036b5761036b610306565b604051601f8301601f19908116603f0116810190828211818310171561039357610393610306565b816040528381528660208588010111156103ac57600080fd5b6103bd84602083016020890161031c565b9695505050505050565b600080600080608085870312156103dd57600080fd5b84516001600160a01b03811681146103f457600080fd5b60208601519094506001600160401b038082111561041157600080fd5b61041d88838901610340565b9450604087015191508082111561043357600080fd5b5061044087828801610340565b92505060608501516006811061045557600080fd5b939692955090935050565b600181811c9082168061047457607f821691505b60208210810361049457634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156104e6576000816000526020600020601f850160051c810160208610156104c35750805b601f850160051c820191505b818110156104e2578281556001016104cf565b5050505b505050565b81516001600160401b0381111561050457610504610306565b610518816105128454610460565b8461049a565b602080601f83116001811461054d57600084156105355750858301515b600019600386901b1c1916600185901b1785556104e2565b600085815260208120601f198616915b8281101561057c5788860151825594840194600190910190840161055d565b508582101561059a5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052602160045260246000fd5b600082516105d281846020870161031c565b9190910192915050565b6000602082840312156105ee57600080fd5b5051919050565b60805160a05160c05160e05161010051610120516101405161016051610180516101a0516101c0516101e0516132096106d36000396000818161032d0152612004015260008181610572015281816109a7015281816118aa01528181611b1501528181611ba901528181611bde01528181611c1a01528181611fd501526122e6015260006112d601526000611325015260006113000152600061125901526000611283015260006112ad0152600081816105380152611eeb01526000818161044e01526115c801526000610363015260006103aa01526132096000f3fe608060405234801561001057600080fd5b50600436106102675760003560e01c806301e1d1141461026c57806306fdde031461028757806307a2d13a1461029c578063095ea7b3146102af5780630a28a477146102d25780630b2d9070146102e557806318160ddd146102f8578063222d6b4d1461030057806323b872dd1461031557806330fa738c14610328578063313ce5671461035c5780633466a8861461038d5780633644e515146103a057806338d52e0f146103a857806339509351146103d7578063402d267d146103ea57806340f99a94146103fd5780634c412cd2146104105780634cdad5061461029c578063538db9231461042357806362a0d2cb1461043657806366b0dede146104495780636927d679146104705780636c2467c6146104835780636e553f651461049657806370a08231146104a9578063715018a6146104bc5780637a3e60e9146104c45780637ecebe00146104d75780638da031df146104ea5780638da5cb5b146104fd57806394bf804d1461050557806395d89b41146105185780639a6b255a14610520578063a44282dc14610533578063a457c2d71461055a578063a8aa1b311461056d578063a9059cbb14610594578063ada6f64b146105a7578063af3cdec9146105af578063b3d7f6b9146105c2578063b460af94146105d5578063ba087652146105e8578063c63d75b6146105fb578063c6e6f5921461060e578063ce96cb7714610621578063d505accf14610634578063d905777e14610647578063dd62ed3e146102e5578063ee2eb6001461065a578063ef8b30f71461060e578063f2fde38b1461066d578063f55f545c14610680575b600080fd5b6102746106a0565b6040519081526020015b60405180910390f35b61028f6106b0565b60405161027e9190612b77565b6102746102aa366004612b8a565b610742565b6102c26102bd366004612bb8565b610755565b604051901515815260200161027e565b6102746102e0366004612b8a565b610770565b6102746102f3366004612be4565b61077d565b600254610274565b61031361030e366004612c1d565b6107ad565b005b6102c2610323366004612c3a565b6107ba565b61034f7f000000000000000000000000000000000000000000000000000000000000000081565b60405161027e9190612cb3565b60405160ff7f000000000000000000000000000000000000000000000000000000000000000016815260200161027e565b61027461039b366004612be4565b6107de565b610274610836565b7f00000000000000000000000000000000000000000000000000000000000000005b60405161027e9190612cc1565b6102c26103e5366004612bb8565b610840565b6102746103f8366004612c1d565b61085b565b6103ca61040b366004612bb8565b610879565b61031361041e366004612cd5565b61089b565b610313610431366004612c1d565b610900565b610313610444366004612cd5565b61090a565b6102747f000000000000000000000000000000000000000000000000000000000000000081565b61031361047e366004612d1b565b610969565b6102c2610491366004612bb8565b610a67565b6102746104a4366004612dbb565b610a73565b6102746104b7366004612c1d565b610aeb565b610313610af6565b6102746104d2366004612c1d565b610b0a565b6102746104e5366004612c1d565b610b2b565b6102c26104f8366004612be4565b610b49565b6103ca610b7c565b610274610513366004612dbb565b610b8b565b61028f610bfc565b6102c261052e366004612bb8565b610c0b565b6102747f000000000000000000000000000000000000000000000000000000000000000081565b6102c2610568366004612bb8565b610c23565b6103ca7f000000000000000000000000000000000000000000000000000000000000000081565b6102c26105a2366004612bb8565b610c3e565b610313610c4b565b6102c26105bd366004612bb8565b610c54565b6102746105d0366004612b8a565b610c60565b6102746105e3366004612de0565b610c6d565b6102746105f6366004612de0565b610ce9565b610274610609366004612c1d565b610d5d565b61027461061c366004612b8a565b610d64565b61027461062f366004612c1d565b610d71565b610313610642366004612e22565b610d86565b610274610655366004612c1d565b610eea565b610313610668366004612bb8565b610ef5565b61031361067b366004612c1d565b610f04565b61069361068e366004612c1d565b610f7a565b60405161027e9190612e99565b60006106ab60025490565b905090565b6060600380546106bf90612ee6565b80601f01602080910402602001604051908101604052809291908181526020018280546106eb90612ee6565b80156107385780601f1061070d57610100808354040283529160200191610738565b820191906000526020600020905b81548152906001019060200180831161071b57829003601f168201915b5050505050905090565b600061074f826000610f9e565b92915050565b6000604051638143007560e01b815260040160405180910390fd5b600061074f826001610fd1565b6001600160a01b0380831660009081526001602090815260408083209385168352929052908120545b9392505050565b6107b73382611003565b50565b6000336107c884828561108e565b6107d3858585611099565b506001949350505050565b600060056107ed815460021490565b1561080b576040516306fda65d60e31b815260040160405180910390fd5b6108158385610b49565b1561082a5761082383611231565b915061082f565b600091505b5092915050565b60006106ab61124c565b600060405163d913be9d60e01b815260040160405180910390fd5b6000610865611373565b61087057600061074f565b60001992915050565b6001600160a01b03821660009081526006602052604081206107a6908361138d565b6108a36113a1565b826001600160a01b0316846001600160a01b03167f1545990261a0335c052b696492b4ae6a5027d7a416426def77a239dfe52cc62b836040516108e891815260200190565b60405180910390a36108fa8482611400565b50505050565b6107b733826114b5565b6109126113a1565b826001600160a01b0316846001600160a01b03167f195f565f5a6d49a2b57af3a3fe8889a6c81c191d039f6183bdc69d8be536eb3d8360405161095791815260200190565b60405180910390a36108fa8382611669565b801580159061098057506001600160a01b03861630145b15610a5f5760008061099483850185612be4565b915091506109a3308387611099565b60007f00000000000000000000000000000000000000000000000000000000000000009050600080826001600160a01b031663bd27dc9f6040518163ffffffff1660e01b81526004016040805180830381865afa158015610a08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a2c9190612f1a565b9092509050610a456001600160a01b038316858c611790565b610a596001600160a01b038216858b611790565b50505050505b505050505050565b60006107a683836117f3565b6000610a7e8261085b565b831115610ad25760405162461bcd60e51b815260206004820152601e60248201527f455243343632363a206465706f736974206d6f7265207468616e206d6178000060448201526064015b60405180910390fd5b6000610add84610d64565b90506107a63384868461186e565b600061074f8261192e565b610afe6113a1565b610b08600061196d565b565b6001600160a01b038116600090815260066020526040812061074f906119bf565b6001600160a01b03811660009081526008602052604081205461074f565b6001600160a01b0382811660009081526006602090815260408083209385168352600190930190529081205415156107a6565b6007546001600160a01b031690565b6000610b9682610d5d565b831115610be35760405162461bcd60e51b815260206004820152601b60248201527a08aa486686c646c7440dad2dce840dadee4ca40e8d0c2dc40dac2f602b1b6044820152606401610ac9565b6000610bee84610c60565b90506107a63384838761186e565b6060600480546106bf90612ee6565b600033610c198185856119ca565b5060019392505050565b6000604051630c49ad8560e01b815260040160405180910390fd5b60006107a63384846107ba565b610b08336119d5565b60006107a68383611ade565b600061074f826001610f9e565b6000610c7882610d71565b841115610cc75760405162461bcd60e51b815260206004820152601f60248201527f455243343632363a207769746864726177206d6f7265207468616e206d6178006044820152606401610ac9565b6000610cd285610770565b9050610ce13385858885611b00565b949350505050565b6000610cf482610eea565b841115610d435760405162461bcd60e51b815260206004820152601d60248201527f455243343632363a2072656465656d206d6f7265207468616e206d61780000006044820152606401610ac9565b6000610d4e85610742565b9050610ce13385858489611b00565b5060001990565b600061074f826000610fd1565b600061074f610d7f83610aeb565b6000610f9e565b83421115610dd65760405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152606401610ac9565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9888888610e058c611ca0565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610e6082611cc6565b90506000610e7082878787611d14565b9050896001600160a01b0316816001600160a01b031614610ed35760405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152606401610ac9565b610ede8a8a8a6119ca565b50505050505050505050565b600061074f82610aeb565b610f00823383611099565b5050565b610f0c6113a1565b6001600160a01b038116610f715760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610ac9565b6107b78161196d565b6001600160a01b038116600090815260066020526040902060609061074f90611d3c565b600080610faa60025490565b90508015610fcb57610fc6610fbd6106a0565b85908386611da8565b610ce1565b83610ce1565b600080610fdd60025490565b9050831580610fea575080155b610fcb57610fc681610ffa6106a0565b86919086611da8565b6001600160a01b03821660009081526006602052604090206110259082611e05565b6110425760405163826fbca360e01b815260040160405180910390fd5b6000805160206131948339815191528282604051611061929190612f49565b60405180910390a1600061107483610aeb565b90508015611089576110898284600084611ebb565b505050565b611089838383611f38565b6001600160a01b0383166110fd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610ac9565b6001600160a01b03821661115f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610ac9565b6001600160a01b038316600090815260208190526040902054818110156111d75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610ac9565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290926000805160206131b4833981519152910160405180910390a36108fa848484611fac565b6001600160a01b031660009081526020819052604090205490565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156112a557507f000000000000000000000000000000000000000000000000000000000000000046145b156112cf57507f000000000000000000000000000000000000000000000000000000000000000090565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c0909201909252805191012090565b60008061137e6106a0565b11806106ab5750506002541590565b6000818152602083905260408120546107a6565b336113aa610b7c565b6001600160a01b031614610b085760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610ac9565b6001600160a01b0382166114565760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610ac9565b80600260008282546114689190612f79565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481526000805160206131b4833981519152910160405180910390a3610f0060008383611fac565b6001600160a01b0381166114dc57604051632580d5f960e21b815260040160405180910390fd5b306001600160a01b0316816001600160a01b031663fc0c546a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611524573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115489190612f8c565b6001600160a01b03161461156f57604051630392dde360e11b815260040160405180910390fd5b6001600160a01b0382166000908152600660205260409020611591908261207c565b6115ae5760405163cbdb297360e01b815260040160405180910390fd5b6001600160a01b03821660009081526006602052604090207f0000000000000000000000000000000000000000000000000000000000000000906115f1906119bf565b11156116105760405163643f48d360e11b815260040160405180910390fd5b7fde03e097fdd335e4d488cd0bc9645f306e7f5569ad042d918dc75be13107c6778282604051611641929190612f49565b60405180910390a1600061165483610aeb565b90508015611089576110898260008584611ebb565b6001600160a01b0382166116c95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610ac9565b6001600160a01b0382166000908152602081905260409020548181101561173d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610ac9565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206131b4833981519152910160405180910390a361108983600084611fac565b6040516001600160a01b03831660248201526044810182905261108990849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526120d3565b60003381611801828661077d565b9050838110156118615760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610ac9565b6107d382868684036119ca565b60008484604051602001611883929190612f49565b60408051601f19818403018152908290526321c9ae5360e21b825291506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638726b94c906118e390309086908690600401612fa9565b60408051808303816000875af1158015611901573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119259190612fd0565b50505050505050565b6000600561193d815460021490565b1561195b576040516306fda65d60e31b815260040160405180910390fd5b61196483611231565b91505b50919050565b600780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061074f826121a5565b6110898383836121bb565b6001600160a01b03811660009081526006602052604081206119f690611d3c565b90506000611a0383610aeb565b82519091505b80156108fa57611a62836001830381518110611a2757611a27612ff4565b602002602001015160066000876001600160a01b03166001600160a01b03168152602001908152602001600020611e0590919063ffffffff16565b5060008051602061319483398151915284846001840381518110611a8857611a88612ff4565b6020026020010151604051611a9e929190612f49565b60405180910390a18115611ad557611ad5836001830381518110611ac457611ac4612ff4565b602002602001015185600085611ebb565b60001901611a09565b600033610c19818585611af1838361077d565b611afb9190612f79565b6119ca565b600080611b0c836122df565b915091506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd27dc9f6040518163ffffffff1660e01b81526004016040805180830381865afa158015611b70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b949190612f1a565b9092509050611bce6001600160a01b0383168a7f000000000000000000000000000000000000000000000000000000000000000087612426565b611c036001600160a01b0382168a7f000000000000000000000000000000000000000000000000000000000000000086612426565b604051633192c7a960e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063c64b1ea490611c4f908b90600401612cc1565b6060604051808303816000875af1158015611c6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c92919061300a565b505050505050505050505050565b6001600160a01b0381166000908152600860205260409020805460018101825590611967565b600061074f611cd361124c565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b6000806000611d258787878761245e565b91509150611d3281612518565b5095945050505050565b60008080526020829052604090205460609060a081901c6001600160401b03811115611d6a57611d6a613038565b604051908082528060200260200182016040528015611d93578160200160208202803683370190505b509150611da183838361265d565b5050919050565b600080611db6868686612713565b90506001836002811115611dcc57611dcc612c7b565b148015611de9575060008480611de457611de461304e565b868809115b15611dfc57611df9600182612f79565b90505b95945050505050565b6001600160a01b0381166000908152600183016020526040812054808203611e3157600091505061074f565b611e3a846121a5565b811015611e92576000611e646001611e51876121a5565b0360009081526020879052604090205490565b9050611e75856000198401836127fd565b6001600160a01b0316600090815260018501602052604090208190555b611e9b84612877565b50506001600160a01b031660009081526001918201602052604081205590565b60408051637a1f1aa960e01b808252600482018690526024820185905260448201849052916307099c5360e21b917f0000000000000000000000000000000000000000000000000000000000000000918290603f5a02041015611f22578260005260046000fd5b60008060648360008c87f1505050505050505050565b6000611f44848461077d565b905060001981146108fa5781811015611f9f5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610ac9565b6108fa84848484036119ca565b6001600160a01b0383161580611fc957506001600160a01b038216155b15611fd357505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166393c622327f000000000000000000000000000000000000000000000000000000000000000084600061202f87610aeb565b6040518563ffffffff1660e01b815260040161204e9493929190613064565b600060405180830381600087803b15801561206857600080fd5b505af1158015611925573d6000803e3d6000fd5b6001600160a01b0381166000908152600183016020526040812054156120a45750600061074f565b6120ae83836128ea565b6001600160a01b03929092166000908152600193840160205260409020919091555090565b6000612128826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166129689092919063ffffffff16565b80519091501561108957808060200190518101906121469190613096565b6110895760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610ac9565b6000808052602091909152604090205460a01c90565b6001600160a01b03831661221d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610ac9565b6001600160a01b03821661227e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610ac9565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008060007f000000000000000000000000000000000000000000000000000000000000000090506000816001600160a01b0316637e25de096040518163ffffffff1660e01b8152600401602060405180830381865afa158015612347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236b91906130d4565b6001600160701b03169050600080836001600160a01b0316630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa1580156123b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123db91906130ef565b5090925090506123fd6123f76001600160701b0384168961312b565b84612977565b6124196124136001600160701b0384168a61312b565b85612977565b9550955050505050915091565b6040516001600160a01b03808516602483015283166044820152606481018290526108fa9085906323b872dd60e01b906084016117bc565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383111561248b575060009050600361250f565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156124df573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166125085760006001925092505061250f565b9150600090505b94509492505050565b600081600481111561252c5761252c612c7b565b036125345750565b600181600481111561254857612548612c7b565b036125905760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610ac9565b60028160048111156125a4576125a4612c7b565b036125f15760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610ac9565b600381600481111561260557612605612c7b565b036107b75760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610ac9565b815160609060a083901c908111156126885760405163f9a99b2560e01b815260040160405180910390fd5b801561270a5782846000815181106126a2576126a2612ff4565b6001600160a01b039092166020928302919091019091015260015b818110156127085760008181526020879052604090205485518690839081106126e8576126e8612ff4565b6001600160a01b03909216602092830291909101909101526001016126bd565b505b50919392505050565b600080806000198587098587029250828110838203039150508060000361274d578382816127435761274361304e565b04925050506107a6565b8084116127945760405162461bcd60e51b81526020600482015260156024820152744d6174683a206d756c446976206f766572666c6f7760581b6044820152606401610ac9565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000612808846121a5565b905080831061282a57604051634e23d03560e01b815260040160405180910390fd5b8260000361285757600080805260208590526040902060a082901b6001600160a01b0384161790556108fa565b60008381526020859052604090206001600160a01b038316905550505050565b6000808052602082905260408120549060a082901c908190036128ad5760405163035157cf60e11b815260040160405180910390fd5b600019810160009081526020849052604081205560018111156110895760008080526020849052604090206001600160a01b031983019055505050565b60008080526020839052604081205460a081901c8083036129335760008080526020869052604090206001600160a81b03600160a01b6001600160a01b0387160116905561295d565b600080805260208690526040808220600160a01b8501905582825290206001600160a01b03851690555b600101949350505050565b6060610ce184846000856129ae565b600082156129a5578161298b600185613142565b6129959190613155565b6129a0906001612f79565b6107a6565b50600092915050565b606082471015612a0f5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610ac9565b600080866001600160a01b03168587604051612a2b9190613177565b60006040518083038185875af1925050503d8060008114612a68576040519150601f19603f3d011682016040523d82523d6000602084013e612a6d565b606091505b5091509150612a7e87838387612a89565b979650505050505050565b60608315612af8578251600003612af1576001600160a01b0385163b612af15760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ac9565b5081610ce1565b610ce18383815115612b0d5781518083602001fd5b8060405162461bcd60e51b8152600401610ac99190612b77565b60005b83811015612b42578181015183820152602001612b2a565b50506000910152565b60008151808452612b63816020860160208601612b27565b601f01601f19169290920160200192915050565b6020815260006107a66020830184612b4b565b600060208284031215612b9c57600080fd5b5035919050565b6001600160a01b03811681146107b757600080fd5b60008060408385031215612bcb57600080fd5b8235612bd681612ba3565b946020939093013593505050565b60008060408385031215612bf757600080fd5b8235612c0281612ba3565b91506020830135612c1281612ba3565b809150509250929050565b600060208284031215612c2f57600080fd5b81356107a681612ba3565b600080600060608486031215612c4f57600080fd5b8335612c5a81612ba3565b92506020840135612c6a81612ba3565b929592945050506040919091013590565b634e487b7160e01b600052602160045260246000fd5b60068110612caf57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161074f8284612c91565b6001600160a01b0391909116815260200190565b60008060008060808587031215612ceb57600080fd5b8435612cf681612ba3565b93506020850135612d0681612ba3565b93969395505050506040820135916060013590565b60008060008060008060a08789031215612d3457600080fd5b8635612d3f81612ba3565b955060208701359450604087013593506060870135925060808701356001600160401b0380821115612d7057600080fd5b818901915089601f830112612d8457600080fd5b813581811115612d9357600080fd5b8a6020828501011115612da557600080fd5b6020830194508093505050509295509295509295565b60008060408385031215612dce57600080fd5b823591506020830135612c1281612ba3565b600080600060608486031215612df557600080fd5b833592506020840135612e0781612ba3565b91506040840135612e1781612ba3565b809150509250925092565b600080600080600080600060e0888a031215612e3d57600080fd5b8735612e4881612ba3565b96506020880135612e5881612ba3565b95506040880135945060608801359350608088013560ff81168114612e7c57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6020808252825182820181905260009190848201906040850190845b81811015612eda5783516001600160a01b031683529284019291840191600101612eb5565b50909695505050505050565b600181811c90821680612efa57607f821691505b60208210810361196757634e487b7160e01b600052602260045260246000fd5b60008060408385031215612f2d57600080fd5b8251612f3881612ba3565b6020840151909250612c1281612ba3565b6001600160a01b0392831681529116602082015260400190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561074f5761074f612f63565b600060208284031215612f9e57600080fd5b81516107a681612ba3565b60018060a01b0384168152826020820152606060408201526000611dfc6060830184612b4b565b60008060408385031215612fe357600080fd5b505080516020909101519092909150565b634e487b7160e01b600052603260045260246000fd5b60008060006060848603121561301f57600080fd5b8351925060208401519150604084015190509250925092565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b608081016130728287612c91565b6001600160a01b039490941660208201526040810192909252606090910152919050565b6000602082840312156130a857600080fd5b815180151581146107a657600080fd5b80516001600160701b03811681146130cf57600080fd5b919050565b6000602082840312156130e657600080fd5b6107a6826130b8565b60008060006060848603121561310457600080fd5b61310d846130b8565b925061311b602085016130b8565b9150604084015190509250925092565b808202811582820484141761074f5761074f612f63565b8181038181111561074f5761074f612f63565b60008261317257634e487b7160e01b600052601260045260246000fd5b500490565b60008251613189818460208701612b27565b919091019291505056feb94b1adfafd33f45e2ba5c713871f026dc1ef0fdc3d75b4f24e954f15b9f8e64ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212203c5bf27c5656a96f9bdafca623d18dad8d0fb0569aeabebdb17fed995ff2736364736f6c63430008190033000000000000000000000000046c3f761f637bf71b2105430818a8a589e2095e000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000050000000000000000000000000000000000000000000000000000000000000024416d6d616c67616d20426f72726f776564204c697175696469747920414156452d44414900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d414d47442d414156452d44414900000000000000000000000000000000000000