60a060405233600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200005257600080fd5b506040516200554538038062005545833981810160405260a08110156200007857600080fd5b81019080805160405193929190846401000000008211156200009957600080fd5b83820191506020820185811115620000b057600080fd5b8251866001820283011164010000000082111715620000ce57600080fd5b8083526020830192505050908051906020019080838360005b8381101562000104578082015181840152602081019050620000e7565b50505050905090810190601f168015620001325780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200015657600080fd5b838201915060208201858111156200016d57600080fd5b82518660018202830111640100000000821117156200018b57600080fd5b8083526020830192505050908051906020019080838360005b83811015620001c1578082015181840152602081019050620001a4565b50505050905090810190601f168015620001ef5780820380516001836020036101000a031916815260200191505b506040526020019190826040018051906020019092919050505083836000848383836000835114156200028a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f4e656564732061206e616d65000000000000000000000000000000000000000081525060200191505060405180910390fd5b60008251141562000303576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f4e6565647320612073796d626f6c00000000000000000000000000000000000081525060200191505060405180910390fd5b82600090805190602001906200031b92919062000bda565b5081600190805190602001906200033492919062000bda565b507360ca4ec4412a3b319f4bd6366bb836395336b39763bbce8abb60026012846040518463ffffffff1660e01b8152600401808481526020018360ff1660ff168152602001828152602001935050505060006040518083038186803b1580156200039d57600080fd5b505af4158015620003b2573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460001b306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015620004a957600080fd5b505af1158015620004be573d6000803e3d6000fd5b50505050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60001b306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015620005b557600080fd5b505af1158015620005ca573d6000803e3d6000fd5b505050505050506200060781600060028110620005e357fe5b602002015182600160028110620005f657fe5b6020020151620008a760201b60201c565b731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b158015620006fa57600080fd5b505af11580156200070f573d6000803e3d6000fd5b50505050505050508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050731820a4b7618bde71dce8cdc73aab6c95905fad2473ffffffffffffffffffffffffffffffffffffffff166329965a1d307fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b60001b306040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019350505050600060405180830381600087803b1580156200084157600080fd5b505af115801562000856573d6000803e3d6000fd5b505050506040518060400160405280600060ff168152602001600160ff1681525060119060026200088992919062000c61565b506200089d306001620009c360201b60201c565b5050505062000d18565b60008214156200091f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6e756d546f6b656e732063616e6e6f74206265207a65726f000000000000000081525060200191505060405180910390fd5b600081141562000997576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6e756d5553442063616e6e6f74206265207a65726f000000000000000000000081525060200191505060405180910390fd5b604051806040016040528083815260200182815250600b906002620009be92919062000cab565b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161462000a87576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206d757374206265206f776e657200000000000000000000000081525060200191505060405180910390fd5b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b2c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416464726573732063616e6e6f74206265206e756c6c0000000000000000000081525060200191505060405180910390fd5b81601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff167fdfe7f55d642b44ed109bb2549db5e1cbaa5e7997a6cb1c15bc0d4a282d00822b83604051808215151515815260200191505060405180910390a2505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1062000c1d57805160ff191683800117855562000c4e565b8280016001018555821562000c4e579182015b8281111562000c4d57825182559160200191906001019062000c30565b5b50905062000c5d919062000cf0565b5090565b826002810192821562000c98579160200282015b8281111562000c97578251829060ff1690559160200191906001019062000c75565b5b50905062000ca7919062000cf0565b5090565b826002810192821562000cdd579160200282015b8281111562000cdc57825182559160200191906001019062000cbf565b5b50905062000cec919062000cf0565b5090565b62000d1591905b8082111562000d1157600081600090555060010162000cf7565b5090565b90565b60805160601c61480f62000d3660003980611978525061480f6000f3fe608060405234801561001057600080fd5b506004361061023c5760003560e01c8063959b8c3f1161013b578063d95b6371116100b8578063e90dd9e21161007c578063e90dd9e214610f2d578063fad8b32a14610f4b578063fbd7d75214610f8f578063fc673c4f14611032578063fe9d93031461112a5761023c565b8063d95b637114610d61578063db07844914610ddd578063dd62ed3e14610e15578063e186719e14610e8d578063e47fca4e14610ee95761023c565b8063a9f83f82116100ff578063a9f83f8214610bbb578063b2beab0314610c29578063b89f378a14610c85578063c6eb68fa14610ccf578063d84a25b714610d1f5761023c565b8063959b8c3f1461099b57806395d89b41146109df5780639bd9bbc614610a62578063a04b1e9014610b05578063a9059cbb14610b555761023c565b80633c858577116101c95780636f54ed751161018d5780636f54ed751461082157806370a08231146108635780637de891d6146108bb5780638da5cb5b1461090b5780638dfdd8a1146109555761023c565b80633c8585771461061757806340c10f191461064f578063556f0dc71461069d57806362ad1b83146106bb5780636eac7739146107d35761023c565b80631171ffcf116102105780631171ffcf146104c157806313af40351461050b57806318160ddd1461054f57806323b872dd1461056d578063313ce567146105f35761023c565b806223de291461024157806306e485381461037957806306fdde03146103d8578063095ea7b31461045b575b600080fd5b610377600480360360c081101561025757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156102de57600080fd5b8201836020820111156102f057600080fd5b8035906020019184600183028401116401000000008311171561031257600080fd5b90919293919293908035906020019064010000000081111561033357600080fd5b82018360208201111561034557600080fd5b8035906020019184600183028401116401000000008311171561036757600080fd5b90919293919293905050506111ad565b005b610381611793565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156103c45780820151818401526020810190506103a9565b505050509050019250505060405180910390f35b6103e0611824565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610420578082015181840152602081019050610405565b50505050905090810190601f16801561044d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6104a76004803603604081101561047157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506118c6565b604051808215151515815260200191505060405180910390f35b6104c9611976565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61054d6004803603602081101561052157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061199a565b005b610557611bc0565b6040518082815260200191505060405180910390f35b6105d96004803603606081101561058357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611bcd565b604051808215151515815260200191505060405180910390f35b6105fb611cb2565b604051808260ff1660ff16815260200191505060405180910390f35b61064d6004803603604081101561062d57600080fd5b810190808035906020019092919080359060200190929190505050611cbb565b005b61069b6004803603604081101561066557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611dcb565b005b6106a5611f35565b6040518082815260200191505060405180910390f35b6107d1600480360360a08110156106d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561073857600080fd5b82018360208201111561074a57600080fd5b8035906020019184600183028401116401000000008311171561076c57600080fd5b90919293919293908035906020019064010000000081111561078d57600080fd5b82018360208201111561079f57600080fd5b803590602001918460018302840111640100000000831117156107c157600080fd5b9091929391929390505050611f3e565b005b61081f600480360360408110156107e957600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061205d565b005b61084d6004803603602081101561083757600080fd5b81019080803590602001909291905050506122d8565b6040518082815260200191505060405180910390f35b6108a56004803603602081101561087957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122f0565b6040518082815260200191505060405180910390f35b610909600480360360408110156108d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080351515906020019092919050505061233c565b005b610913612551565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6109816004803603602081101561096b57600080fd5b8101908080359060200190929190505050612577565b604051808215151515815260200191505060405180910390f35b6109dd600480360360208110156109b157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612597565b005b6109e7612636565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610a27578082015181840152602081019050610a0c565b50505050905090810190601f168015610a545780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610b0360048036036060811015610a7857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610abf57600080fd5b820183602082011115610ad157600080fd5b80359060200191846001830284011164010000000083111715610af357600080fd5b90919293919293905050506126d8565b005b610b5360048036036040811015610b1b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612741565b005b610ba160048036036040811015610b6b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061291d565b604051808215151515815260200191505060405180910390f35b610be760048036036020811015610bd157600080fd5b8101908080359060200190929190505050612957565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c6b60048036036020811015610c3f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061298a565b604051808215151515815260200191505060405180910390f35b610c8d6129aa565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610d1d60048036036040811015610ce557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035151590602001909291905050506129d0565b005b610d4b60048036036020811015610d3557600080fd5b8101908080359060200190929190505050612be5565b6040518082815260200191505060405180910390f35b610dc360048036036040811015610d7757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612bfd565b604051808215151515815260200191505060405180910390f35b610e1360048036036040811015610df357600080fd5b810190808035906020019092919080359060200190929190505050612d59565b005b610e7760048036036040811015610e2b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612f8b565b6040518082815260200191505060405180910390f35b610ecf60048036036020811015610ea357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613014565b604051808215151515815260200191505060405180910390f35b610f2b60048036036020811015610eff57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613034565b005b610f35613223565b6040518082815260200191505060405180910390f35b610f8d60048036036020811015610f6157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061322f565b005b61103060048036036060811015610fa557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190640100000000811115610fec57600080fd5b820183602082011115610ffe57600080fd5b8035906020019184600183028401116401000000008311171561102057600080fd5b90919293919293905050506132ce565b005b6111286004803603608081101561104857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561108f57600080fd5b8201836020820111156110a157600080fd5b803590602001918460018302840111640100000000831117156110c357600080fd5b9091929391929390803590602001906401000000008111156110e457600080fd5b8201836020820111156110f657600080fd5b8035906020019184600183028401116401000000008311171561111857600080fd5b909192939192939050505061352d565b005b6111ab6004803603604081101561114057600080fd5b81019080803590602001909291908035906020019064010000000081111561116757600080fd5b82018360208201111561117957600080fd5b8035906020019184600183028401116401000000008311171561119b57600080fd5b9091929391929390505050613648565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461124e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600d8152602001807f6f6e6c794f776e546f6b656e730000000000000000000000000000000000000081525060200191505060405180910390fd5b6000806000606060006060898960c081101561126957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001906401000000008111156112d057600080fd5b8201836020820111156112e257600080fd5b8035906020019184600183028401116401000000008311171561130457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290803590602001909291908035906020019064010000000081111561137157600080fd5b82018360208201111561138357600080fd5b803590602001918460018302840111640100000000831117156113a557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505095509550955095509550955061140c8686868686866136ad565b60008b146114c8573073ffffffffffffffffffffffffffffffffffffffff16639bd9bbc6878d6040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001806020018281038252600081526020016020019350505050600060405180830381600087803b1580156114af57600080fd5b505af11580156114c3573d6000803e3d6000fd5b505050505b3073ffffffffffffffffffffffffffffffffffffffff166362ad1b83878787878f8f6040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581526020018060200180602001838103835286818151815260200191508051906020019080838360005b838110156115a757808201518184015260208101905061158c565b50505050905090810190601f1680156115d45780820380516001836020036101000a031916815260200191505b508381038252858582818152602001925080828437600081840152601f19601f82011690508083019250505098505050505050505050600060405180830381600087803b15801561162457600080fd5b505af1158015611638573d6000803e3d6000fd5b505050508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167f97823a4edabb1c2f3fb4ee63160c204ef488f4d2282a0bdd4290cdde86c708ec86868686604051808581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b838110156116df5780820151818401526020810190506116c4565b50505050905090810190601f16801561170c5780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b8381101561174557808201518184015260208101905061172a565b50505050905090810190601f1680156117725780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a35050505050505050505050505050565b6060600260040180548060200260200160405190810160405280929190818152602001828054801561181a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116117d0575b5050505050905090565b606060008054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118bc5780601f10611891576101008083540402835291602001916118bc565b820191906000526020600020905b81548152906001019060200180831161189f57829003601f168201915b5050505050905090565b60007360ca4ec4412a3b319f4bd6366bb836395336b397638bde1d78600285856040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060006040518083038186803b15801561195457600080fd5b505af4158015611968573d6000803e3d6000fd5b505050506001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a5d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206d757374206265206f776e657200000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611b00576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4f776e65722063616e6e6f74206265207a65726f20616464726573730000000081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fdb6d05f3295cede580affa301a1eb5297528f3b3f6a56b075887ce6f61c45f2160405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600260000154905090565b60007360ca4ec4412a3b319f4bd6366bb836395336b397632e6a560960028686866040518563ffffffff1660e01b8152600401808581526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200194505050505060006040518083038186803b158015611c8f57600080fd5b505af4158015611ca3573d6000803e3d6000fd5b50505050600190509392505050565b60006012905090565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f6e6c795553445261746553657474657200000000000000000000000000000081525060200191505060405180910390fd5b611d888282613967565b7fcc375191748c1570d8cc8f49eb8a77b2d411830d2c609dbc4ea2b29dc56f68dc8282604051808381526020018281526020019250505060405180910390a15050565b600260060160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611e8d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c794d696e7465720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b7360ca4ec4412a3b319f4bd6366bb836395336b397636eeb9e0f600284846040518463ffffffff1660e01b8152600401808481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001935050505060006040518083038186803b158015611f1957600080fd5b505af4158015611f2d573d6000803e3d6000fd5b505050505050565b60006001905090565b86611f493382612bfd565b611fbb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f7420616e206f70657261746f72000000000000000000000000000000000081525060200191505060405180910390fd5b6120533389898989898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505088888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506001613a7f565b5050505050505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612120576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206d757374206265206f776e657200000000000000000000000081525060200191505060405180910390fd5b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416464726573732063616e6e6f74206265206e756c6c0000000000000000000081525060200191505060405180910390fd5b6000801b83141561223d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f4d697373696e67206b657920686173680000000000000000000000000000000081525060200191505060405180910390fd5b81600e600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16837f0ada7f316e371f763b084899958ab4f7c3eac45ded64a568087925f39d47bf2360405160405180910390a3505050565b600b81600281106122e557fe5b016000915090505481565b6000600260010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206d757374206265206f776e657200000000000000000000000081525060200191505060405180910390fd5b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156124a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416464726573732063616e6e6f74206265206e756c6c0000000000000000000081525060200191505060405180910390fd5b81601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff167fdfe7f55d642b44ed109bb2549db5e1cbaa5e7997a6cb1c15bc0d4a282d00822b83604051808215151515815260200191505060405180910390a2505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b7360ca4ec4412a3b319f4bd6366bb836395336b39763528aa17e6002836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b15801561261b57600080fd5b505af415801561262f573d6000803e3d6000fd5b5050505050565b606060018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156126ce5780601f106126a3576101008083540402835291602001916126ce565b820191906000526020600020905b8154815290600101906020018083116126b157829003601f168201915b5050505050905090565b61273b3333868686868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050604051806020016040528060008152506001613a7f565b50505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206d757374206265206f776e657200000000000000000000000081525060200191505060405180910390fd5b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156128a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416464726573732063616e6e6f74206265206e756c6c0000000000000000000081525060200191505060405180910390fd5b81156128bc576128b783613bb1565b6128c6565b6128c583613cb3565b5b8273ffffffffffffffffffffffffffffffffffffffff167ff2bddba4dbca95e342065cf53fe3ea5804c27f6d053eea0ef7c8d913a4081acb83604051808215151515815260200191505060405180910390a2505050565b600061294d3333858560405180602001604052806000815250604051806020016040528060008152506000613a7f565b6001905092915050565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f6020528060005260406000206000915054906101000a900460ff1681565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a93576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206d757374206265206f776e657200000000000000000000000081525060200191505060405180910390fd5b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612b37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416464726573732063616e6e6f74206265206e756c6c0000000000000000000081525060200191505060405180910390fd5b81600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508273ffffffffffffffffffffffffffffffffffffffff167f363e463e09657c2fceb1bb6e7e00014a6c2e513c9e5bc4e5e3a2e87a51b8fa3f83604051808215151515815260200191505060405180910390a2505050565b60118160028110612bf257fe5b016000915090505481565b60008173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480612cc25750600260030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80612d5157503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015612d505750600260050160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b5b905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612e1c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206d757374206265206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000811415612e93576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206275726e20726174696f3a20646976206279207a65726f0081525060200191505060405180910390fd5b81811015612f09576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206275726e20726174696f3a2061626f76652031303025000081525060200191505060405180910390fd5b6040518060400160405280838152602001828152506011906002612f2e92919061470f565b507f1475106783249a413aa8777c98a14e278e91f0f5eef337bea65868655f8a721d6011604051808260028015612f7a576020028201915b815481526020019060010190808311612f66575b505091505060405180910390a15050565b60006002800160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146130f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f53656e646572206d757374206265206f776e657200000000000000000000000081525060200191505060405180910390fd5b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561319b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f416464726573732063616e6e6f74206265206e756c6c0000000000000000000081525060200191505060405180910390fd5b81600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff167f5ff20ba4bf41ff0e6c7e644533c6174e64a3126129f9016279fcdf8b5575efec60405160405180910390a25050565b60028060000154905081565b7360ca4ec4412a3b319f4bd6366bb836395336b39763a77f752c6002836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b1580156132b357600080fd5b505af41580156132c7573d6000803e3d6000fd5b5050505050565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661338d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f6f6e6c794c69667465720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600e600060405160200180807f46545363616c696e674d616e6167657200000000000000000000000000000000815250601001905060405160208183030381529060405280519060200120815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690503073ffffffffffffffffffffffffffffffffffffffff166362ad1b8386838787876040518663ffffffff1660e01b8152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001806020018381038352858582818152602001925080828437600081840152601f19601f820116905080830192505050838103825260008152602001602001975050505050505050600060405180830381600087803b15801561350e57600080fd5b505af1158015613522573d6000803e3d6000fd5b505050505050505050565b856135383382612bfd565b6135aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f4e6f7420616e206f70657261746f72000000000000000000000000000000000081525060200191505060405180910390fd5b61363f33888888888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050613db5565b50505050505050565b6136a833338585858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505060405180602001604052806000815250613db5565b505050565b600a60008280519060200120815260200190815260200160002060009054906101000a900460ff1615613748576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f50726f78792070726f6f66206e6f7420756e697175650000000000000000000081525060200191505060405180910390fd5b6001600a60008380519060200120815260200190815260200160002060006101000a81548160ff0219169083151502179055506000308787878787604051602001808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b81526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660601b815260140184815260200183805190602001908083835b6020831061385e578051825260208201915060208101905060208303925061383b565b6001836020036101000a038019825116818451168082178552505050505050905001828152602001965050505050505060405160208183030381529060405280519060200120905060006138ba6138b483613f6e565b84613fc6565b90508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461395d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600a8152602001807f426164207369676e65720000000000000000000000000000000000000000000081525060200191505060405180910390fd5b5050505050505050565b60008214156139de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f6e756d546f6b656e732063616e6e6f74206265207a65726f000000000000000081525060200191505060405180910390fd5b6000811415613a55576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6e756d5553442063616e6e6f74206265207a65726f000000000000000000000081525060200191505060405180910390fd5b604051806040016040528083815260200182815250600b906002613a7a92919061470f565b505050565b6000849050601060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015613b285750601060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613b98576000613b726011600160028110613b4057fe5b0154613b646011600060028110613b5357fe5b01548961427490919063ffffffff16565b6142fa90919063ffffffff16565b9050613b818989838888613db5565b613b94818361434490919063ffffffff16565b9150505b613ba78888888488888861438e565b5050505050505050565b7360ca4ec4412a3b319f4bd6366bb836395336b397638c96a55d6002836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b158015613c3557600080fd5b505af4158015613c49573d6000803e3d6000fd5b505050507fa1d81f39379cbd3fc0b41e0f22ac869eee88b0a7f221bf424e2db0eadb900b7b81604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7360ca4ec4412a3b319f4bd6366bb836395336b3976353a7daf46002836040518363ffffffff1660e01b8152600401808381526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060006040518083038186803b158015613d3757600080fd5b505af4158015613d4b573d6000803e3d6000fd5b505050507f8e768d7a5530d1f68e76ded405597f5ab4e340da31733f8704353e0b62b911f881604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a150565b7360ca4ec4412a3b319f4bd6366bb836395336b3976324394467600287878787876040518763ffffffff1660e01b8152600401808781526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015613e99578082015181840152602081019050613e7e565b50505050905090810190601f168015613ec65780820380516001836020036101000a031916815260200191505b50838103825284818151815260200191508051906020019080838360005b83811015613eff578082015181840152602081019050613ee4565b50505050905090810190601f168015613f2c5780820380516001836020036101000a031916815260200191505b509850505050505050505060006040518083038186803b158015613f4f57600080fd5b505af4158015613f63573d6000803e3d6000fd5b505050505050505050565b60008160405160200180807f19457468657265756d205369676e6564204d6573736167653a0a333200000000815250601c01828152602001915050604051602081830303815290604052805190602001209050919050565b6000604182511461403f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45434453413a20696e76616c6964207369676e6174757265206c656e6774680081525060200191505060405180910390fd5b60008060006020850151925060408501519150606085015160001a90507f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08260001c11156140d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806147756022913960400191505060405180910390fd5b601b8160ff1610156140eb57601b810190505b601b8160ff16141580156141035750601c8160ff1614155b15614159576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806147976022913960400191505060405180910390fd5b600060018783868660405160008152602001604052604051808581526020018460ff1660ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156141b8573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614267576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f45434453413a20696e76616c6964207369676e6174757265000000000000000081525060200191505060405180910390fd5b8094505050505092915050565b60008083141561428757600090506142f4565b600082840290508284828161429857fe5b04146142ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806147b96021913960400191505060405180910390fd5b809150505b92915050565b600061433c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614589565b905092915050565b600061438683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061464f565b905092915050565b7360ca4ec4412a3b319f4bd6366bb836395336b39763b750dc466002898989898989896040518963ffffffff1660e01b8152600401808981526020018873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001858152602001806020018060200184151515158152602001838103835286818151815260200191508051906020019080838360005b838110156144b0578082015181840152602081019050614495565b50505050905090810190601f1680156144dd5780820380516001836020036101000a031916815260200191505b50838103825285818151815260200191508051906020019080838360005b838110156145165780820151818401526020810190506144fb565b50505050905090810190601f1680156145435780820380516001836020036101000a031916815260200191505b509a505050505050505050505060006040518083038186803b15801561456857600080fd5b505af415801561457c573d6000803e3d6000fd5b5050505050505050505050565b60008083118290614635576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156145fa5780820151818401526020810190506145df565b50505050905090810190601f1680156146275780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161464157fe5b049050809150509392505050565b60008383111582906146fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156146c15780820151818401526020810190506146a6565b50505050905090810190601f1680156146ee5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b826002810192821561473e579160200282015b8281111561473d578251825591602001919060010190614722565b5b50905061474b919061474f565b5090565b61477191905b8082111561476d576000816000905550600101614755565b5090565b9056fe45434453413a20696e76616c6964207369676e6174757265202773272076616c756545434453413a20696e76616c6964207369676e6174757265202776272076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212205f7466184d48f5984ee3adeadfc09306a8fdaf61db9dface55756fed0f691e0464736f6c6343000607003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000ba58d00000000000000000000000000000000000000000000000000000000000f42400000000000000000000000001bbf25e71ec48b84d773809b4ba55b6f4be946fb0000000000000000000000000000000000000000000000000000000000000004764742500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047647425000000000000000000000000000000000000000000000000000000000