60806040526001600c5534801561001557600080fd5b5060004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6040518060400160405280601481526020017f4d657469646f7269616e73204c5020546f6b656e000000000000000000000000815250805190602001206040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250805190602001208330604051602001808681526020018581526020018481526020018381526020018273ffffffffffffffffffffffffffffffffffffffff16815260200195505050505050604051602081830303815290604052805190602001206003819055505033600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550613ce7806101676000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80636a627842116100f9578063ba9a7a5611610097578063d21220a711610071578063d21220a714610869578063d505accf1461089d578063dd62ed3e14610936578063fff6cae9146109ae576101a9565b8063ba9a7a56146107d3578063bc25cf77146107f1578063c45a015514610835576101a9565b80637ecebe00116100d35780637ecebe001461063557806389afcb441461068d57806395d89b41146106ec578063a9059cbb1461076f576101a9565b80636a6278421461056757806370a08231146105bf5780637464fc3d14610617576101a9565b806323b872dd116101665780633644e515116101405780633644e515146104a9578063485cc955146104c75780635909c0d51461052b5780635a3d549314610549576101a9565b806323b872dd146103e657806330adf81f1461046a578063313ce56714610488576101a9565b8063022c0d9f146101ae57806306fdde031461025b5780630902f1ac146102de578063095ea7b3146103305780630dfe16811461039457806318160ddd146103c8575b600080fd5b610259600480360360808110156101c457600080fd5b810190808035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561021557600080fd5b82018360208201111561022757600080fd5b8035906020019184600183028401116401000000008311171561024957600080fd5b90919293919293905050506109b8565b005b61026361128a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102a3578082015181840152602081019050610288565b50505050905090810190601f1680156102d05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102e66112c3565b60405180846dffffffffffffffffffffffffffff168152602001836dffffffffffffffffffffffffffff1681526020018263ffffffff168152602001935050505060405180910390f35b61037c6004803603604081101561034657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611320565b60405180821515815260200191505060405180910390f35b61039c61133e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6103d0611364565b6040518082815260200191505060405180910390f35b610452600480360360608110156103fc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061136a565b60405180821515815260200191505060405180910390f35b61047261154a565b6040518082815260200191505060405180910390f35b610490611571565b604051808260ff16815260200191505060405180910390f35b6104b1611576565b6040518082815260200191505060405180910390f35b610529600480360360408110156104dd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061157c565b005b6105336116c5565b6040518082815260200191505060405180910390f35b6105516116cb565b6040518082815260200191505060405180910390f35b6105a96004803603602081101561057d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116d1565b6040518082815260200191505060405180910390f35b610601600480360360208110156105d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e0d565b6040518082815260200191505060405180910390f35b61061f611e25565b6040518082815260200191505060405180910390f35b6106776004803603602081101561064b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2b565b6040518082815260200191505060405180910390f35b6106cf600480360360208110156106a357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e43565b604051808381526020018281526020019250505060405180910390f35b6106f46123df565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610734578082015181840152602081019050610719565b50505050905090810190601f1680156107615780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6107bb6004803603604081101561078557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612418565b60405180821515815260200191505060405180910390f35b6107db612436565b6040518082815260200191505060405180910390f35b6108336004803603602081101561080757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061243c565b005b61083d6126eb565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610871612711565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610934600480360360e08110156108b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190803560ff1690602001909291908035906020019092919080359060200190929190505050612737565b005b6109986004803603604081101561094c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a4c565b6040518082815260200191505060405180910390f35b6109b6612a71565b005b6001600c5414610a30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d657469646f7269616e733a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000851180610a475750600084115b610a9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526027815260200180613c8b6027913960400191505060405180910390fd5b610aa4613b97565b6040518060c0016040528060006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152509050610b016112c3565b508260000183602001826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815250826dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16815250505080600001516dffffffffffffffffffffffffffff1686108015610b8a575080602001516dffffffffffffffffffffffffffff1685105b610bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180613bee6023913960400191505060405180910390fd5b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614158015610c9557508073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b610d07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d657469646f7269616e733a20494e56414c49445f544f00000000000000000081525060200191505060405180910390fd5b6000881115610d1c57610d1b82878a612cc5565b5b6000871115610d3157610d30818789612cc5565b5b6000858590501115610e0a578573ffffffffffffffffffffffffffffffffffffffff166310d1e85c610d61612efc565b8a8a89896040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050600060405180830381600087803b158015610df157600080fd5b505af1158015610e05573d6000803e3d6000fd5b505050505b8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e7157600080fd5b505afa158015610e85573d6000803e3d6000fd5b505050506040513d6020811015610e9b57600080fd5b81019080805190602001909291905050508360400181815250508073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610f1c57600080fd5b505afa158015610f30573d6000803e3d6000fd5b505050506040513d6020811015610f4657600080fd5b810190808051906020019092919050505083606001818152505050508581600001516dffffffffffffffffffffffffffff1603816040015111610f8a576000610fa8565b8581600001516dffffffffffffffffffffffffffff16038160400151035b8160800181815250508481602001516dffffffffffffffffffffffffffff1603816060015111610fd9576000610ff7565b8481602001516dffffffffffffffffffffffffffff16038160600151035b8160a0018181525050600081608001511180611017575060008160a00151115b61106c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526026815260200180613c116026913960400191505060405180910390fd5b60006110b061108960198460800151612f0490919063ffffffff16565b6110a26127108560400151612f0490919063ffffffff16565b612f9990919063ffffffff16565b905060006110f66110cf60198560a00151612f0490919063ffffffff16565b6110e86127108660600151612f0490919063ffffffff16565b612f9990919063ffffffff16565b90506111496305f5e10061113b85602001516dffffffffffffffffffffffffffff1686600001516dffffffffffffffffffffffffffff16612f0490919063ffffffff16565b612f0490919063ffffffff16565b61115c8284612f0490919063ffffffff16565b10156111d0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4d657469646f7269616e733a204b00000000000000000000000000000000000081525060200191505060405180910390fd5b50506111ee816040015182606001518360000151846020015161301c565b8373ffffffffffffffffffffffffffffffffffffffff1661120d612efc565b73ffffffffffffffffffffffffffffffffffffffff167fd78ad95fa46c994b6551d0da85fc275fe613ce37657fb8d5e3d130840159d82283608001518460a001518a8a6040518085815260200184815260200183815260200182815260200194505050505060405180910390a3506001600c819055505050505050565b6040518060400160405280601481526020017f4d657469646f7269616e73204c5020546f6b656e00000000000000000000000081525081565b6000806000600860009054906101000a90046dffffffffffffffffffffffffffff1692506008600e9054906101000a90046dffffffffffffffffffffffffffff1691506008601c9054906101000a900463ffffffff169050909192565b600061133461132d612efc565b848461337a565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60005481565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113d6612efc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611534576114ac82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611463612efc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f9990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006114f5612efc565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61153f848484613465565b600190509392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b81565b601281565b60035481565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461163f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d657469646f7269616e733a20464f5242494444454e0000000000000000000081525060200191505060405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b60095481565b600a5481565b60006001600c541461174b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d657469646f7269616e733a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c8190555060008061175e6112c3565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156117ee57600080fd5b505afa158015611802573d6000803e3d6000fd5b505050506040513d602081101561181857600080fd5b810190808051906020019092919050505090506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156118b657600080fd5b505afa1580156118ca573d6000803e3d6000fd5b505050506040513d60208110156118e057600080fd5b810190808051906020019092919050505090506000611918856dffffffffffffffffffffffffffff1684612f9990919063ffffffff16565b9050600061193f856dffffffffffffffffffffffffffff1684612f9990919063ffffffff16565b9050600061194d87876135f9565b90506000805490506000811415611c51576000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637cd07e476040518163ffffffff1660e01b815260040160206040518083038186803b1580156119c857600080fd5b505afa1580156119dc573d6000803e3d6000fd5b505050506040513d60208110156119f257600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16611a24612efc565b73ffffffffffffffffffffffffffffffffffffffff161415611b6a578073ffffffffffffffffffffffffffffffffffffffff166340dc0e376040518163ffffffff1660e01b815260040160206040518083038186803b158015611a8657600080fd5b505afa158015611a9a573d6000803e3d6000fd5b505050506040513d6020811015611ab057600080fd5b8101908080519060200190929190505050995060008a118015611af357507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8a14155b611b65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4261642064657369726564206c6971756964697479000000000000000000000081525060200191505060405180910390fd5b611c4b565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c0c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f4d757374206e6f742068617665206d69677261746f720000000000000000000081525060200191505060405180910390fd5b611c3b6103e8611c2d611c288789612f0490919063ffffffff16565b6137da565b612f9990919063ffffffff16565b9950611c4a60006103e861383c565b5b50611cb4565b611cb1886dffffffffffffffffffffffffffff16611c788387612f0490919063ffffffff16565b81611c7f57fe5b04886dffffffffffffffffffffffffffff16611ca48487612f0490919063ffffffff16565b81611cab57fe5b04613956565b98505b60008911611d0d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613c37602a913960400191505060405180910390fd5b611d178a8a61383c565b611d2386868a8a61301c565b8115611d9b57611d946008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612f0490919063ffffffff16565b600b819055505b611da3612efc565b73ffffffffffffffffffffffffffffffffffffffff167f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f8585604051808381526020018281526020019250505060405180910390a250505050505050506001600c81905550919050565b60016020528060005260406000206000915090505481565b600b5481565b60046020528060005260406000206000915090505481565b6000806001600c5414611ebe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d657469646f7269616e733a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550600080611ed16112c3565b50915091506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611f8d57600080fd5b505afa158015611fa1573d6000803e3d6000fd5b505050506040513d6020811015611fb757600080fd5b8101908080519060200190929190505050905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561203357600080fd5b505afa158015612047573d6000803e3d6000fd5b505050506040513d602081101561205d57600080fd5b810190808051906020019092919050505090506000600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006120c088886135f9565b9050600080549050806120dc8685612f0490919063ffffffff16565b816120e357fe5b049a50806120fa8585612f0490919063ffffffff16565b8161210157fe5b04995060008b118015612114575060008a115b612169576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180613c61602a913960400191505060405180910390fd5b612173308461396f565b61217e878d8d612cc5565b612189868d8c612cc5565b8673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156121f057600080fd5b505afa158015612204573d6000803e3d6000fd5b505050506040513d602081101561221a57600080fd5b810190808051906020019092919050505094508573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561229457600080fd5b505afa1580156122a8573d6000803e3d6000fd5b505050506040513d60208110156122be57600080fd5b810190808051906020019092919050505093506122dd85858b8b61301c565b81156123555761234e6008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff16612f0490919063ffffffff16565b600b819055505b8b73ffffffffffffffffffffffffffffffffffffffff16612374612efc565b73ffffffffffffffffffffffffffffffffffffffff167fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d819364968d8d604051808381526020018281526020019250505060405180910390a35050505050505050506001600c81905550915091565b6040518060400160405280600381526020017f4d4c50000000000000000000000000000000000000000000000000000000000081525081565b600061242c612425612efc565b8484613465565b6001905092915050565b6103e881565b6001600c54146124b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d657469646f7269616e733a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c819055506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506125f482846125ef600860009054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156125a657600080fd5b505afa1580156125ba573d6000803e3d6000fd5b505050506040513d60208110156125d057600080fd5b8101908080519060200190929190505050612f9990919063ffffffff16565b612cc5565b6126de81846126d96008600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561269057600080fd5b505afa1580156126a4573d6000803e3d6000fd5b505050506040513d60208110156126ba57600080fd5b8101908080519060200190929190505050612f9990919063ffffffff16565b612cc5565b50506001600c8190555050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b428410156127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4d657469646f7269616e733a204558504952454400000000000000000000000081525060200191505060405180910390fd5b60006003547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c960001b898989600460008e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050558a604051602001808781526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff16815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040528051906020012060405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015612950573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156129c457508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b612a36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4d657469646f7269616e733a20494e56414c49445f5349474e4154555245000081525060200191505060405180910390fd5b612a4189898961337a565b505050505050505050565b6002602052816000526040600020602052806000526040600020600091509150505481565b6001600c5414612ae9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f4d657469646f7269616e733a204c4f434b45440000000000000000000000000081525060200191505060405180910390fd5b6000600c81905550612cbb600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612b7d57600080fd5b505afa158015612b91573d6000803e3d6000fd5b505050506040513d6020811015612ba757600080fd5b8101908080519060200190929190505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612c4157600080fd5b505afa158015612c55573d6000803e3d6000fd5b505050506040513d6020811015612c6b57600080fd5b8101908080519060200190929190505050600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff1661301c565b6001600c81905550565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310612ddc5780518252602082019150602081019050602083039250612db9565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612e3e576040519150601f19603f3d011682016040523d82523d6000602084013e612e43565b606091505b5091509150818015612e835750600081511480612e825750808060200190516020811015612e7057600080fd5b81019080805190602001909291905050505b5b612ef5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d657469646f7269616e733a205452414e534645525f4641494c45440000000081525060200191505060405180910390fd5b5050505050565b600033905090565b600080821480612f215750828283850292508281612f1e57fe5b04145b612f93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6d756c2d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b6000828284039150811115613016576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f64732d6d6174682d7375622d756e646572666c6f77000000000000000000000081525060200191505060405180910390fd5b92915050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff16841115801561308c57507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6dffffffffffffffffffffffffffff168311155b6130fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4d657469646f7269616e733a204f564552464c4f57000000000000000000000081525060200191505060405180910390fd5b6000640100000000428161310e57fe5b06905060006008601c9054906101000a900463ffffffff168203905060008163ffffffff1611801561315157506000846dffffffffffffffffffffffffffff1614155b801561316e57506000836dffffffffffffffffffffffffffff1614155b15613250578063ffffffff166131b38561318786613a89565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613ab490919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16026009600082825401925050819055508063ffffffff16613221846131f587613a89565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613ab490919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602600a600082825401925050819055505b85600860006101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550846008600e6101000a8154816dffffffffffffffffffffffffffff02191690836dffffffffffffffffffffffffffff160217905550816008601c6101000a81548163ffffffff021916908363ffffffff1602179055507f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1600860009054906101000a90046dffffffffffffffffffffffffffff166008600e9054906101000a90046dffffffffffffffffffffffffffff1660405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390a1505050505050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b6134b781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f9990919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061354c81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b1490919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561366457600080fd5b505afa158015613678573d6000803e3d6000fd5b505050506040513d602081101561368e57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141591506000600b54905082156137c057600081146137bb576000613726613721866dffffffffffffffffffffffffffff16886dffffffffffffffffffffffffffff16612f0490919063ffffffff16565b6137da565b90506000613733836137da565b9050808211156137b85760006137666137558385612f9990919063ffffffff16565b600054612f0490919063ffffffff16565b9050600061379083613782600587612f0490919063ffffffff16565b613b1490919063ffffffff16565b9050600081838161379d57fe5b04905060008111156137b4576137b3878261383c565b5b5050505b50505b6137d2565b600081146137d1576000600b819055505b5b505092915050565b600060038211156138295781905060006001600284816137f657fe5b040190505b818110156138235780915060028182858161381257fe5b04018161381b57fe5b0490506137fb565b50613837565b6000821461383657600190505b5b919050565b61385181600054613b1490919063ffffffff16565b6000819055506138a981600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b1490919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008183106139655781613967565b825b905092915050565b6139c181600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612f9990919063ffffffff16565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613a1981600054612f9990919063ffffffff16565b600081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006e010000000000000000000000000000826dffffffffffffffffffffffffffff16029050919050565b6000816dffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1681613b0b57fe5b04905092915050565b6000828284019150811015613b91576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f64732d6d6174682d6164642d6f766572666c6f7700000000000000000000000081525060200191505060405180910390fd5b92915050565b6040518060c0016040528060006dffffffffffffffffffffffffffff16815260200160006dffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152509056fe4d657469646f7269616e733a20494e53554646494349454e545f4c49515549444954594d657469646f7269616e733a20494e53554646494349454e545f494e5055545f414d4f554e544d657469646f7269616e733a20494e53554646494349454e545f4c49515549444954595f4d494e5445444d657469646f7269616e733a20494e53554646494349454e545f4c49515549444954595f4255524e45444d657469646f7269616e733a20494e53554646494349454e545f4f55545055545f414d4f554e54a26469706673582212201090cf6492155ef20c03938877d385b6005f7cfd7d83e0681edd55adeb5155aa64736f6c634300060c0033