60806040527351d287c63301d574eef7c7615bf02a19e9549b8a600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507321a4086a6cdb332c851b76cccd21acab6428d9e4600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073306dd7cd66d964f598b4d2ec92b5a9b275d7feb3600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073de7a7e8db75d56b095263c63ecb4cfe8157ee3dd600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073de7a7e8db75d56b095263c63ecb4cfe8157ee3dd600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c682bd99ee552b6f7d931afee2a9425806e155e9600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611f40600c60106101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff16021790555062015180600d556000600e55620493e0600f55600160105560646011556301e1338042016012556000601355600060145560006017556000601855612710601955620d2f00601a556000601e60006101000a81548160ff021916908315150217905550326000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061506e806103346000396000f3fe608060405234801561001057600080fd5b50600436106103265760003560e01c806380faa57d116101b8578063d742a14d11610104578063eb9253c0116100a2578063ee6318811161007c578063ee63188114610d9d578063f9cff35114610de7578063fa1acb5c14610e31578063ffd832c114610e4f57610326565b8063eb9253c014610ced578063ed6525c414610d3b578063edf3b09c14610d5957610326565b8063dc7ced3d116100de578063dc7ced3d14610bb2578063e45a98dd14610bfc578063e7e4e1f714610c1e578063e9fad8ee14610ce357610326565b8063d742a14d14610b0c578063da3a274114610b50578063db3ad22c14610b9457610326565b8063b14d94e511610171578063c3b2c5041161014b578063c3b2c50414610a32578063c909f15214610a7c578063cd3daf9d14610aaa578063d42cdb5a14610ac857610326565b8063b14d94e51461098b578063bb1b4269146109bc578063c1482ce814610a1457610326565b806380faa57d1461087b578063927b26b9146108995780639a6b25a3146108b75780639f3fbd2b146108e5578063aa981e6514610903578063ab033ea91461094757610326565b8063358b1e2b1161027757806356728e9d116102305780636adafab51161020a5780636adafab51461077f57806370a082311461079d5780637b4d0812146107f55780637d6dfb7e1461082357610326565b806356728e9d146106b157806365d82b8a1461070957806368fd25cd1461076157610326565b8063358b1e2b146105b557806337e294d5146105e35780633c6b16ab1461062d5780633d18b9121461065b578063491835341461066557806353364da01461069357610326565b80631407c664116102e45780631be05289116102be5780631be05289146104d55780631c2f3e3d146104f357806329d245aa1461053d5780632e1a7d4d1461058757610326565b80631407c6641461044f578063167519431461046d57806318160ddd146104b757610326565b80628cc2621461032b57806307604b6c14610383578063097a23b8146103a15780630ba86f05146103bf578063121544b9146103ed57806312b7d59b1461040b575b600080fd5b61036d6004803603602081101561034157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e6d565b6040518082815260200191505060405180910390f35b61038b610f54565b6040518082815260200191505060405180910390f35b6103a9610f5a565b6040518082815260200191505060405180910390f35b6103eb600480360360208110156103d557600080fd5b8101908080359060200190929190505050610f60565b005b6103f561102c565b6040518082815260200191505060405180910390f35b61044d6004803603602081101561042157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611032565b005b610457611138565b6040518082815260200191505060405180910390f35b61047561113e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6104bf611164565b6040518082815260200191505060405180910390f35b6104dd61116e565b6040518082815260200191505060405180910390f35b6104fb611174565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610545611199565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105b36004803603602081101561059d57600080fd5b81019080803590602001909291905050506111bf565b005b6105e1600480360360208110156105cb57600080fd5b8101908080359060200190929190505050611531565b005b6105eb6115fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106596004803603602081101561064357600080fd5b8101908080359060200190929190505050611623565b005b610663611901565b005b6106916004803603602081101561067b57600080fd5b81019080803590602001909291905050506121b5565b005b61069b612281565b6040518082815260200191505060405180910390f35b6106f3600480360360208110156106c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612287565b6040518082815260200191505060405180910390f35b61074b6004803603602081101561071f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061229f565b6040518082815260200191505060405180910390f35b6107696122b7565b6040518082815260200191505060405180910390f35b6107876122bd565b6040518082815260200191505060405180910390f35b6107df600480360360208110156107b357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506122c3565b6040518082815260200191505060405180910390f35b6108216004803603602081101561080b57600080fd5b810190808035906020019092919050505061230c565b005b6108656004803603602081101561083957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506123d8565b6040518082815260200191505060405180910390f35b6108836123f0565b6040518082815260200191505060405180910390f35b6108a1612403565b6040518082815260200191505060405180910390f35b6108e3600480360360208110156108cd57600080fd5b8101908080359060200190929190505050612409565b005b6108ed6124d5565b6040518082815260200191505060405180910390f35b6109456004803603602081101561091957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124db565b005b6109896004803603602081101561095d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125e1565b005b6109ba600480360360208110156109a157600080fd5b810190808035600f0b9060200190929190505050612804565b005b6109fe600480360360208110156109d257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612905565b6040518082815260200191505060405180910390f35b610a1c61294e565b6040518082815260200191505060405180910390f35b610a3a612954565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610aa860048036036020811015610a9257600080fd5b810190808035906020019092919050505061297a565b005b610ab2612d17565b6040518082815260200191505060405180910390f35b610b0a60048036036020811015610ade57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612daf565b005b610b4e60048036036020811015610b2257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612eb5565b005b610b9260048036036020811015610b6657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fbb565b005b610b9c6130c1565b6040518082815260200191505060405180910390f35b610bba6130cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610c046130f1565b604051808215151515815260200191505060405180910390f35b610ce160048036036040811015610c3457600080fd5b810190808035906020019092919080359060200190640100000000811115610c5b57600080fd5b820183602082011115610c6d57600080fd5b80359060200191846001830284011164010000000083111715610c8f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050613104565b005b610ceb6135f2565b005b610d3960048036036040811015610d0357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061360d565b005b610d436138a7565b6040518082815260200191505060405180910390f35b610d9b60048036036020811015610d6f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506138ad565b005b610da56139b3565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610def6139d9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610e396139ff565b6040518082815260200191505060405180910390f35b610e57613a05565b6040518082815260200191505060405180910390f35b6000610f4d601c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f3f670de0b6b3a7640000610f31610f1a601b60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f0c612d17565b613a0b90919063ffffffff16565b610f2388612905565b613a5590919063ffffffff16565b613adb90919063ffffffff16565b613b2590919063ffffffff16565b9050919050565b600f5481565b60105481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b8060178190555050565b60165481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b80600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600354905090565b600d5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b336111c8612d17565b6016819055506111d66123f0565b601581905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146112a35761121981610e6d565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601654601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60135442106113e9576112b4613bad565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930600e546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561135f57600080fd5b505af1158015611373573d6000803e3d6000fd5b5050505061138e600d54600e54613adb90919063ffffffff16565b6014819055506113a9600d5442613b2590919063ffffffff16565b6013819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d600e546040518082815260200191505060405180910390a15b6012544211611460576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f74207374617274000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600082116114d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f43616e6e6f74207769746864726177203000000000000000000000000000000081525060200191505060405180910390fd5b6114df82613ca1565b3373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5836040518082815260200191505060405180910390a25050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115f3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b80600e8190555050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b60006116ef612d17565b6016819055506116fd6123f0565b601581905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146117ca5761174081610e6d565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601654601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611819333084600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614191909392919063ffffffff16565b601354421061184257611837600d5483613adb90919063ffffffff16565b6014819055506118a4565b600061185942601354613a0b90919063ffffffff16565b9050600061187260145483613a5590919063ffffffff16565b905061189b600d5461188d8387613b2590919063ffffffff16565b613adb90919063ffffffff16565b60148190555050505b426015819055506118c0600d5442613b2590919063ffffffff16565b6013819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d826040518082815260200191505060405180910390a15050565b3361190a612d17565b6016819055506119186123f0565b601581905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119e55761195b81610e6d565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601654601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6013544210611b2b576119f6613bad565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930600e546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611aa157600080fd5b505af1158015611ab5573d6000803e3d6000fd5b50505050611ad0600d54600e54613adb90919063ffffffff16565b601481905550611aeb600d5442613b2590919063ffffffff16565b6013819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d600e546040518082815260200191505060405180910390a15b6012544211611ba2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f74207374617274000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000611bad33610e6d565b905060008111156121b1576000601c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008073ffffffffffffffffffffffffffffffffffffffff16600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f972be42336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611cb557600080fd5b505afa158015611cc9573d6000803e3d6000fd5b505050506040513d6020811015611cdf57600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1614611dea57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f972be42336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611daa57600080fd5b505afa158015611dbe573d6000803e3d6000fd5b505050506040513d6020811015611dd457600080fd5b8101908080519060200190929190505050611e0e565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b905060008173ffffffffffffffffffffffffffffffffffffffff166335380a5533856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611e9957600080fd5b505af1158015611ead573d6000803e3d6000fd5b505050506040513d6020811015611ec357600080fd5b810190808051906020019092919050505090506000811115611f2d57611f2c8282600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166142979092919063ffffffff16565b5b6000611f58601954611f4a60175487613a5590919063ffffffff16565b613adb90919063ffffffff16565b90506000811115611fd357611fd2600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166142979092919063ffffffff16565b5b6000611ffa82611fec8588613a0b90919063ffffffff16565b613a0b90919063ffffffff16565b90506000809050601a54601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054014210156120785761207560195461206760185485613a5590919063ffffffff16565b613adb90919063ffffffff16565b90505b6000811115612106576120f0600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166142979092919063ffffffff16565b6121038183613a0b90919063ffffffff16565b91505b600082111561215d5761215c3383600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166142979092919063ffffffff16565b5b3373ffffffffffffffffffffffffffffffffffffffff167fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486836040518082815260200191505060405180910390a250505050505b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b80600d8190555050565b60185481565b601d6020528060005260406000206000915090505481565b601b6020528060005260406000206000915090505481565b60145481565b60155481565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146123ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b8060188190555050565b601c6020528060005260406000206000915090505481565b60006123fe426013546144e4565b905090565b60195481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124cb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b80601a8190555050565b601a5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461259d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b80600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612746576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f6e657720676f7665726e616e636520746865207a65726f20616464726573730081525060200191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f5f56bee8cffbe9a78652a74a60705edede02af10b0bbb888ca44b79a0d42ce8060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146128c6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b80600c60106101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60115481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612a3c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b6000612a46612d17565b601681905550612a546123f0565b601581905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612b2157612a9781610e6d565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601654601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b60001515601e60009054906101000a900460ff16151514612baa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600b8152602001807f686173207374617274656400000000000000000000000000000000000000000081525060200191505060405180910390fd5b6001601e60006101000a81548160ff02191690831515021790555081601281905550612bd4613bad565b612beb600d54600e54613adb90919063ffffffff16565b601481905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930600e546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015612c9c57600080fd5b505af1158015612cb0573d6000803e3d6000fd5b50505050601254601581905550612cd4600d54601254613b2590919063ffffffff16565b6013819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d600e546040518082815260200191505060405180910390a15050565b600080612d226130c1565b1415612d32576016549050612dac565b612da9612d98612d406130c1565b612d8a670de0b6b3a7640000612d7c601454612d6e601554612d606123f0565b613a0b90919063ffffffff16565b613a5590919063ffffffff16565b613a5590919063ffffffff16565b613adb90919063ffffffff16565b601654613b2590919063ffffffff16565b90505b90565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612e71576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612f77576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461307d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600554905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60009054906101000a900460ff1681565b3361310d612d17565b60168190555061311b6123f0565b601581905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146131e85761315e81610e6d565b601c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601654601b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b601354421061332e576131f9613bad565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1930600e546040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b1580156132a457600080fd5b505af11580156132b8573d6000803e3d6000fd5b505050506132d3600d54600e54613adb90919063ffffffff16565b6014819055506132ee600d5442613b2590919063ffffffff16565b6013819055507fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d600e546040518082815260200191505060405180910390a15b60125442116133a5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f6e6f74207374617274000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b60011515600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d82c0339336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561344857600080fd5b505afa15801561345c573d6000803e3d6000fd5b505050506040513d602081101561347257600080fd5b81019080805190602001909291905050501515146134db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d815260200180614fe3602d913960400191505060405180910390fd5b60008311613551576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f43616e6e6f74207374616b65203000000000000000000000000000000000000081525060200191505060405180910390fd5b61355b83836144fd565b42601d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff167f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d846040518082815260200191505060405180910390a2505050565b6136036135fe336122c3565b6111bf565b61360b611901565b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146136cf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613793576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260068152602001807f726577617264000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613857576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f7374616b6500000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6138a36000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16828473ffffffffffffffffffffffffffffffffffffffff166142979092919063ffffffff16565b5050565b60175481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461396f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600e8152602001807f6e6f7420676f7665726e616e636500000000000000000000000000000000000081525060200191505060405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60125481565b600e5481565b6000613a4d83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250614ba5565b905092915050565b600080831415613a685760009050613ad5565b6000828402905082848281613a7957fe5b0414613ad0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614fc26021913960400191505060405180910390fd5b809150505b92915050565b6000613b1d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614c65565b905092915050565b600080828401905083811015613ba3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6001600c60009054906101000a9004600f0b01600c60006101000a8154816fffffffffffffffffffffffffffffffff0219169083600f0b6fffffffffffffffffffffffffffffffff1602179055506000613c95600c60009054906101000a9004600f0b600f0b6011540a613c876001600c60009054906101000a9004600f0b03600f0b613c47601054601154613a0b90919063ffffffff16565b0a613c79670de0b6b3a7640000613c6b601054600f54613a5590919063ffffffff16565b613a5590919063ffffffff16565b613a5590919063ffffffff16565b613adb90919063ffffffff16565b905080600e8190555050565b60008111613d17576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f616d6f7574203e2030000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b613d2c81600354613a0b90919063ffffffff16565b600381905550613d8481600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a0b90919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146140b457613e71600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600554613a0b90919063ffffffff16565b600581905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d961455133836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015613f2057600080fd5b505af1158015613f34573d6000803e3d6000fd5b50505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635dd9147c336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015613fd757600080fd5b505afa158015613feb573d6000803e3d6000fd5b505050506040513d602081101561400157600080fd5b8101908080519060200190929190505050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506140a9600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600554613b2590919063ffffffff16565b600581905550614141565b600354600581905550600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b61418e3382600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166142979092919063ffffffff16565b50565b614291848573ffffffffffffffffffffffffffffffffffffffff166323b872dd905060e01b858585604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050614d2b565b50505050565b600060608473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280601981526020017f7472616e7366657228616464726573732c75696e743235362900000000000000815250805190602001208585604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b602083106143c457805182526020820191506020810190506020830392506143a1565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614426576040519150601f19603f3d011682016040523d82523d6000602084013e61442b565b606091505b509150915081801561446b575060008151148061446a575080806020019051602081101561445857600080fd5b81019080805190602001909291905050505b5b6144dd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f5361666545524332303a205452414e534645525f4641494c454400000000000081525060200191505060405180910390fd5b5050505050565b60008183106144f357816144f5565b825b905092915050565b61451282600354613b2590919063ffffffff16565b60038190555061456a82600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613b2590919063ffffffff16565b600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff16600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461489a57614657600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600554613a0b90919063ffffffff16565b600581905550600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663da562a9833846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561470657600080fd5b505af115801561471a573d6000803e3d6000fd5b50505050600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635dd9147c336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156147bd57600080fd5b505afa1580156147d1573d6000803e3d6000fd5b505050506040513d60208110156147e757600080fd5b8101908080519060200190929190505050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061488f600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600554613b2590919063ffffffff16565b600581905550614927565b600354600581905550600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b614976333084600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16614191909392919063ffffffff16565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a526a92b336040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015614a1757600080fd5b505af1158015614a2b573d6000803e3d6000fd5b505050506040513d6020811015614a4157600080fd5b8101908080519060200190929190505050614ba157600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d66d140733836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015614b17578082015181840152602081019050614afc565b50505050905090810190601f168015614b445780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b158015614b6457600080fd5b505af1158015614b78573d6000803e3d6000fd5b505050506040513d6020811015614b8e57600080fd5b8101908080519060200190929190505050505b5050565b6000838311158290614c52576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614c17578082015181840152602081019050614bfc565b50505050905090810190601f168015614c445780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290614d11576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614cd6578082015181840152602081019050614cbb565b50505050905090810190601f168015614d035780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581614d1d57fe5b049050809150509392505050565b614d4a8273ffffffffffffffffffffffffffffffffffffffff16614f76565b614dbc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740081525060200191505060405180910390fd5b600060608373ffffffffffffffffffffffffffffffffffffffff16836040518082805190602001908083835b60208310614e0b5780518252602082019150602081019050602083039250614de8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614e6d576040519150601f19603f3d011682016040523d82523d6000602084013e614e72565b606091505b509150915081614eea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656481525060200191505060405180910390fd5b600081511115614f7057808060200190516020811015614f0957600080fd5b8101908080519060200190929190505050614f6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180615010602a913960400191505060405180910390fd5b5b50505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015614fb857506000801b8214155b9250505091905056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7761646472657373206e6f74207265676973746572206f72206e616d6520616c72656164792072656769737465725361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158201530b183096a823ab60d53c3a251a1210deafee1065bf8930773376bfca2c09864736f6c63430005110032