0x60806040523480156200001157600080fd5b506040516200492138038062004921833981810160405260208110156200003757600080fd5b810190808051906020019092919050505060006200005a6200014060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000148565b600033905090565b6147c980620001586000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806389c1842e116100de578063ceb6065411610097578063eac449d911610071578063eac449d914610901578063f2fde38b1461094f578063f73b9f2214610993578063fc0c546a146109c15761018e565b8063ceb60654146107a4578063d8fe549a1461085d578063e6fff2ff1461089f5761018e565b806389c1842e146105c95780638da5cb5b146105d357806398aab8121461061d578063b56111291461068b578063beef640d146106e7578063bf00eaef1461072b5761018e565b806347c433c91161014b5780636eb0581d116101255780636eb0581d1461053d578063715018a614610547578063775c37271461055157806388af1f331461059b5761018e565b806347c433c91461040b5780635bfadb241461048a57806361aa00b5146104c25761018e565b8063049ce5251461019357806306545a93146101eb57806316c5af90146102095780631be767121461028c5780632cf34d49146102ba57806337bdc99b146103dd575b600080fd5b6101d5600480360360208110156101a957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a0b565b6040518082815260200191505060405180910390f35b6101f3610a54565b6040518082815260200191505060405180910390f35b61028a6004803603604081101561021f57600080fd5b810190808035906020019064010000000081111561023c57600080fd5b82018360208201111561024e57600080fd5b8035906020019184602083028401116401000000008311171561027057600080fd5b909192939192939080359060200190929190505050610a5e565b005b6102b8600480360360208110156102a257600080fd5b8101908080359060200190929190505050611012565b005b6103db600480360360608110156102d057600080fd5b81019080803590602001906401000000008111156102ed57600080fd5b8201836020820111156102ff57600080fd5b8035906020019184602083028401116401000000008311171561032157600080fd5b90919293919293908035906020019064010000000081111561034257600080fd5b82018360208201111561035457600080fd5b8035906020019184602083028401116401000000008311171561037657600080fd5b90919293919293908035906020019064010000000081111561039757600080fd5b8201836020820111156103a957600080fd5b803590602001918460208302840111640100000000831117156103cb57600080fd5b9091929391929390505050611430565b005b610409600480360360208110156103f357600080fd5b8101908080359060200190929190505050612032565b005b6104416004803603604081101561042157600080fd5b8101908080359060200190929190803590602001909291905050506125a9565b604051808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b6104c0600480360360408110156104a057600080fd5b81019080803590602001909291908035906020019092919050505061265e565b005b61050e600480360360408110156104d857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612919565b604051808581526020018481526020018381526020018215151515815260200194505050505060405180910390f35b6105456129eb565b005b61054f612ad1565b005b610559612c59565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105c7600480360360208110156105b157600080fd5b8101908080359060200190929190505050612c83565b005b6105d1612e61565b005b6105db612f47565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106496004803603602081101561063357600080fd5b8101908080359060200190929190505050612f70565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106cd600480360360208110156106a157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fb1565b604051808215151515815260200191505060405180910390f35b610729600480360360208110156106fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613007565b005b6107a26004803603602081101561074157600080fd5b810190808035906020019064010000000081111561075e57600080fd5b82018360208201111561077057600080fd5b8035906020019184600183028401116401000000008311171561079257600080fd5b90919293919293905050506131dd565b005b6107d0600480360360208110156107ba57600080fd5b81019080803590602001909291905050506133cc565b604051808060200184151515158152602001838152602001828103825285818151815260200191508051906020019080838360005b83811015610820578082015181840152602081019050610805565b50505050905090810190601f16801561084d5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b6108896004803603602081101561087357600080fd5b81019080803590602001909291905050506134dd565b6040518082815260200191505060405180910390f35b6108eb600480360360408110156108b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506134fa565b6040518082815260200191505060405180910390f35b61094d6004803603604081101561091757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506138c3565b005b6109916004803603602081101561096557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613e0a565b005b6109bf600480360360208110156109a957600080fd5b8101908080359060200190929190505050614017565b005b6109c961416c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600854905090565b610a66614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b27576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6008548110610b81576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806147186021913960400191505060405180910390fd5b600080905060008090505b84849050811015610f04576000858583818110610ba557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806147396023913960400191505060405180910390fd5b60011515600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610d10576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42656e6566696369617279206973206e6f7420726567697374657265642e000081525060200191505060405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060008090505b81811015610ef4576000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110610dae57fe5b90600052602060002090600402019050600015158160030160009054906101000a900460ff16151514610e49576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f416c6c6f636174696f6e20616c7265616479207265766f6b656400000000000081525060200191505060405180910390fd5b8681600201541415610ee65760018160030160006101000a81548160ff0219169083151502179055506000610e8f8260010154836000015461419a90919063ffffffff16565b905080870196508473ffffffffffffffffffffffffffffffffffffffff167f713b90881ad62c4fa8ab6bd9197fa86481fc0c11b2edba60026514281b2dbac4846040518082815260200191505060405180910390a2505b508080600101915050610d5a565b5050508080600101915050610b8c565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610fd057600080fd5b505af1158015610fe4573d6000803e3d6000fd5b505050506040513d6020811015610ffa57600080fd5b81019080805190602001909291905050505050505050565b61101a614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6008548110611135576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806147186021913960400191505060405180910390fd5b600080905060008090505b6007600084815260200190815260200160002060020154811015611324576111666144c2565b6007600085815260200190815260200160002060030160008381526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815250509050600060026000836000015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082602001518154811061124e57fe5b90600052602060002090600402019050600015158160030160009054906101000a900460ff16151514156113155760018160030160006101000a81548160ff02191690831515021790555060006112b68260010154836000015461419a90919063ffffffff16565b90508085019450826000015173ffffffffffffffffffffffffffffffffffffffff167f713b90881ad62c4fa8ab6bd9197fa86481fc0c11b2edba60026514281b2dbac484602001516040518082815260200191505060405180910390a2505b50508080600101915050611140565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156113f057600080fd5b505af1158015611404573d6000803e3d6000fd5b505050506040513d602081101561141a57600080fd5b8101908080519060200190929190505050505050565b611438614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b838390508686905014801561151357508181905086869050145b611568576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806146f46024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611610576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806146a36030913960400191505060405180910390fd5b600080905060008090505b87879050811015611eed57600073ffffffffffffffffffffffffffffffffffffffff1688888381811061164a57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156116f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f42656e65666963696172792063616e6e6f74206265203020616464726573732e81525060200191505060405180910390fd5b60008686838181106116ff57fe5b9050602002013511611779576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f43616e6e6f7420616c6c6f63617465207a65726f20616d6f756e742e0000000081525060200191505060405180910390fd5b6117816144f2565b6007600086868581811061179157fe5b905060200201358152602001908152602001600020604051806060016040529081600082018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561184a5780601f1061181f5761010080835404028352916020019161184a565b820191906000526020600020905b81548152906001019060200180831161182d57829003601f168201915b505050505081526020016001820160009054906101000a900460ff16151515158152602001600282015481525050905060085485858481811061188957fe5b90506020020135106118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806147186021913960400191505060405180910390fd5b600115158160200151151514611964576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f47726f7570206973206e6f74206163746976652e00000000000000000000000081525060200191505060405180910390fd5b600260008a8a8581811061197457fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060405180608001604052808989868181106119e257fe5b90506020020135815260200160008152602001878786818110611a0157fe5b90506020020135815260200160001515815250908060018154018082558091505060019003906000526020600020906004020160009091909190915060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055505050600360008a8a85818110611a8d57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190600101919050555060405180604001604052808a8a85818110611b0b57fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001600260008d8d88818110611b5557fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490500381525060076000878786818110611bc457fe5b905060200201358152602001908152602001600020600301600060076000898988818110611bee57fe5b90506020020135815260200190815260200160002060020154815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015590505060076000868685818110611c7957fe5b90506020020135815260200190815260200160002060020160008154809291906001019190505550600560008a8a85818110611cb157fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611da6576004898984818110611d2857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff169080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b6001600560008b8b86818110611db857fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550868683818110611e3257fe5b9050602002013583019250888883818110611e4957fe5b9050602002013573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f06ca7252ab2415ff6135042b2d94b9462ffcfd8844936fb2ad4a56ceda309ac7888885818110611ea957fe5b90506020020135878786818110611ebc57fe5b90506020020135604051808381526020018281526020019250505060405180910390a250808060010191505061161b565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1630846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611fed57600080fd5b505af1158015612001573d6000803e3d6000fd5b505050506040513d602081101561201757600080fd5b81019080805190602001909291905050505050505050505050565b60011515600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146120db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614664603f913960400191505060405180910390fd5b60001515600960149054906101000a900460ff16151514612164576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f52656c65617365732068617665206265656e207061757365642e00000000000081525060200191505060405180910390fd5b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548110612218576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f20616c6c6f636174696f6e20666f756e642e00000000000000000000000081525060200191505060405180910390fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061226457fe5b90600052602060002090600402019050600015158160030160009054906101000a900460ff161515146122ff576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f416c6c6f636174696f6e20686173206265656e207265766f6b65642e0000000081525060200191505060405180910390fd5b60006006600083600201548152602001908152602001600020541161236f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806145e5602a913960400191505060405180910390fd5b600061237b33846134fa565b9050600081116123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4e6f7468696e6720746f2072656c65617365000000000000000000000000000081525060200191505060405180910390fd5b61240a8183600101546141e490919063ffffffff16565b82600101819055503373ffffffffffffffffffffffffffffffffffffffff167fb21fb52d5749b80f3182f8c6992236b5e5576681880914484d7f4c9b062e619e846040518082815260200191505060405180910390a28160000154826001015414156124bf573373ffffffffffffffffffffffffffffffffffffffff167f6a7caaf0e64ee9a2fb80724152184991353ae8795f59cc05ad1d4b2c2eac574f846040518082815260200191505060405180910390a25b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561256857600080fd5b505af115801561257c573d6000803e3d6000fd5b505050506040513d602081101561259257600080fd5b810190808051906020019092919050505050505050565b6000806125b46144c2565b6007600086815260200190815260200160002060030160008581526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201548152505090508060000151816020015192509250509250929050565b612666614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612727576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600854821061279e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f47726f757020646f6573206e6f742065786973742e000000000000000000000081525060200191505060405180910390fd5b6000811180156127af575060648111155b612804576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603881526020018061475c6038913960400191505060405180910390fd5b6006600083815260200190815260200160002054811161288c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f50657263656e746167652068617320746f20626520696e6372656173696e672e81525060200191505060405180910390fd5b80600660008481526020019081526020016000208190555060648114156128dd5760006007600084815260200190815260200160002060010160006101000a81548160ff0219169083151502179055505b817f6a4ab9eaabc176a1c70b5f19a39c8f7a220e8f3f649ddb5a7e8c1f957ac112ab826040518082815260200191505060405180910390a25050565b600080600080612927614515565b600260008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020868154811061297157fe5b90600052602060002090600402016040518060800160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900460ff1615151515815250509050806000015181602001518260400151836060015194509450945094505092959194509250565b6129f3614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ab4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600960146101000a81548160ff021916908315150217905550565b612ad9614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612b9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612c8b614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612d4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6008548110612da6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806147186021913960400191505060405180910390fd5b6064600660008381526020019081526020016000205410612e2f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f47726f757020686173206265656e2066756c6c7920756e6c6f636b65642e000081525060200191505060405180910390fd5b60016007600083815260200190815260200160002060010160006101000a81548160ff02191690831515021790555050565b612e69614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f2a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600960146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600060048281548110612f7f57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b61300f614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146130d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613156576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f815260200180614635602f913960400191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f5ba0808e7c42649e6404a82a9615532c219b16ef7f3c79cfd9e29b49d8ebc60e60405160405180910390a250565b6131e5614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146132a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b604051806060016040528083838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020016001151581526020016000815250600760006008548152602001908152602001600020600082015181600001908051906020019061333a92919061453f565b5060208201518160010160006101000a81548160ff02191690831515021790555060408201518160020155905050600854828260405180838380828437808301925050509250505060405180910390207f6b80e5e777487bf516eb587890cc8cb28a78151b8f55a48c47bf5f992f43d58160405160405180910390a36008600081548092919060010191905055505050565b60606000806133d96144f2565b60076000868152602001908152602001600020604051806060016040529081600082018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156134905780601f1061346557610100808354040283529160200191613490565b820191906000526020600020905b81548152906001019060200180831161347357829003601f168201915b505050505081526020016001820160009054906101000a900460ff161515151581526020016002820154815250509050806000015181602001518260400151935093509350509193909250565b600060066000838152602001908152602001600020549050919050565b600060011515600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146135a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603f815260200180614664603f913960400191505060405180910390fd5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548210613659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4e6f20616c6c6f636174696f6e20666f756e642e00000000000000000000000081525060200191505060405180910390fd5b60001515600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002083815481106136a757fe5b906000526020600020906004020160030160009054906101000a900460ff1615151461373b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f416c6c6f636174696f6e20686173206265656e207265766f6b65642e0000000081525060200191505060405180910390fd5b6000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061378757fe5b90600052602060002090600402016000015490506000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106137e757fe5b90600052602060002090600402016001015490506000600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020858154811061384757fe5b9060005260206000209060040201600201549050600060066000838152602001908152602001600020549050600061389b606461388d848861426c90919063ffffffff16565b6142f290919063ffffffff16565b905060006138b2858361419a90919063ffffffff16565b905080965050505050505092915050565b6138cb614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461398c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a12576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806147396023913960400191505060405180910390fd5b60011515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514613ad8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f42656e6566696369617279206973206e6f7420726567697374657265642e000081525060200191505060405180910390fd5b80600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411613b8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f416c6c6f636174696f6e20646f6573206e6f742065786973740000000000000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208281548110613bd857fe5b90600052602060002090600402019050600015158160030160009054906101000a900460ff16151514613c73576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f416c6c6f636174696f6e20616c7265616479207265766f6b656400000000000081525060200191505060405180910390fd5b60018160030160006101000a81548160ff0219169083151502179055506000613cad8260010154836000015461419a90919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015613d7a57600080fd5b505af1158015613d8e573d6000803e3d6000fd5b505050506040513d6020811015613da457600080fd5b8101908080519060200190929190505050508373ffffffffffffffffffffffffffffffffffffffff167f713b90881ad62c4fa8ab6bd9197fa86481fc0c11b2edba60026514281b2dbac4846040518082815260200191505060405180910390a250505050565b613e12614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613ed3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613f59576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061460f6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61401f614192565b73ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146140e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600854811061413a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806147186021913960400191505060405180910390fd5b60006007600083815260200190815260200160002060010160006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b60006141dc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061433c565b905092915050565b600080828401905083811015614262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008083141561427f57600090506142ec565b600082840290508284828161429057fe5b04146142e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806146d36021913960400191505060405180910390fd5b809150505b92915050565b600061433483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506143fc565b905092915050565b60008383111582906143e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156143ae578082015181840152602081019050614393565b50505050905090810190601f1680156143db5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b600080831182906144a8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561446d578082015181840152602081019050614452565b50505050905090810190601f16801561449a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816144b457fe5b049050809150509392505050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600081525090565b604051806060016040528060608152602001600015158152602001600081525090565b60405180608001604052806000815260200160008152602001600081526020016000151581525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061458057805160ff19168380011785556145ae565b828001600101855582156145ae579182015b828111156145ad578251825591602001919060010190614592565b5b5090506145bb91906145bf565b5090565b6145e191905b808211156145dd5760008160009055506001016145c5565b5090565b9056fe47726f757020686173206e6f742068617320616e7920756e6c6f636b656420746f6b656e73207965742e4f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737343616e6e6f74207365742066756e64696e67206163636f756e7420746f20746865207a65726f20616464726573732e596f75206861766520746f20626520612072656769737465726564206164647265737320696e206f7264657220746f2072656c6561736520746f6b656e732e46756e64696e67206163636f756e742068617320746f20626520736574206265666f726520616c6c6f636174696e672e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774c656e677468206f6620696e7075742061727261797320646f206e6f74206d617463682e47726f7570206e6f74207265676973746572656420696e20636f6e74726163742e43616e6e6f74207265766f6b6520666f7220746865207a65726f20616464726573732e50657263656e7461676520706172616d6574657220696e76616c69642e204e65656420746f206265203e203020616e64203c3d203130302ea2646970667358221220a4d810e3aaaca30d66ef88c1bea940aa5f4dd945058a659b6e6b6dc1bc34eb9f64736f6c63430006080033000000000000000000000000b1c5f18a9bc08131ca32d73528d1bb5823a0f2aa