0x6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063c3c8cd8011610064578063c3c8cd8014610628578063c492f0461461063f578063dd62ed3e14610668578063f2fde38b146106a5576101cc565b806398a5c3151461055c578063a2a957bb14610585578063a9059cbb146105ae578063bfd79284146105eb576101cc565b80638da5cb5b116100d15780638da5cb5b146104b25780638f70ccf7146104dd5780638f9a55c01461050657806395d89b4114610531576101cc565b8063715018a6146104335780637d1db4a51461044a5780637f2feddc14610475576101cc565b8063313ce567116101645780636b9990531161013e5780636b9990531461038d5780636d8aa8f8146103b65780636fc3eaec146103df57806370a08231146103f6576101cc565b8063313ce5671461032057806349bd5a5e1461034b5780636225658914610376576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632fd689e3146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612c7c565b6106ce565b005b34801561020657600080fd5b5061020f6107f8565b60405161021c9190612d44565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612d9c565b610835565b6040516102599190612df7565b60405180910390f35b34801561026e57600080fd5b50610277610853565b6040516102849190612e71565b60405180910390f35b34801561029957600080fd5b506102a2610879565b6040516102af9190612e9b565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612eb6565b610888565b6040516102ec9190612df7565b60405180910390f35b34801561030157600080fd5b5061030a610961565b6040516103179190612e9b565b60405180910390f35b34801561032c57600080fd5b50610335610967565b6040516103429190612f25565b60405180910390f35b34801561035757600080fd5b50610360610970565b60405161036d9190612f4f565b60405180910390f35b34801561038257600080fd5b5061038b610996565b005b34801561039957600080fd5b506103b460048036038101906103af9190612f6a565b610a49565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190612fc3565b610b39565b005b3480156103eb57600080fd5b506103f4610beb565b005b34801561040257600080fd5b5061041d60048036038101906104189190612f6a565b610cbc565b60405161042a9190612e9b565b60405180910390f35b34801561043f57600080fd5b50610448610d0d565b005b34801561045657600080fd5b5061045f610e60565b60405161046c9190612e9b565b60405180910390f35b34801561048157600080fd5b5061049c60048036038101906104979190612f6a565b610e66565b6040516104a99190612e9b565b60405180910390f35b3480156104be57600080fd5b506104c7610e7e565b6040516104d49190612f4f565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190612fc3565b610ea7565b005b34801561051257600080fd5b5061051b610f59565b6040516105289190612e9b565b60405180910390f35b34801561053d57600080fd5b50610546610f5f565b6040516105539190612d44565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190612ff0565b610f9c565b005b34801561059157600080fd5b506105ac60048036038101906105a7919061301d565b61103b565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190612d9c565b6110f2565b6040516105e29190612df7565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190612f6a565b611110565b60405161061f9190612df7565b60405180910390f35b34801561063457600080fd5b5061063d611130565b005b34801561064b57600080fd5b50610666600480360381019061066191906130df565b611209565b005b34801561067457600080fd5b5061068f600480360381019061068a919061313f565b611343565b60405161069c9190612e9b565b60405180910390f35b3480156106b157600080fd5b506106cc60048036038101906106c79190612f6a565b6113ca565b005b6106d661158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a906131cb565b60405180910390fd5b60005b81518110156107f457600160106000848481518110610788576107876131eb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107ec90613249565b915050610766565b5050565b60606040518060400160405280600681526020017f5245564f4c540000000000000000000000000000000000000000000000000000815250905090565b600061084961084261158b565b8484611593565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b600061089584848461175c565b610956846108a161158b565b61095185604051806060016040528060288152602001613c4f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061090761158b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fdf9092919063ffffffff16565b611593565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61099e61158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a22906131cb565b60405180910390fd5b662386f26fc10000601681905550662386f26fc10000601781905550565b610a5161158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad5906131cb565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b4161158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc5906131cb565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2c61158b565b73ffffffffffffffffffffffffffffffffffffffff161480610ca25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c8a61158b565b73ffffffffffffffffffffffffffffffffffffffff16145b610cab57600080fd5b6000479050610cb981612043565b50565b6000610d06600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120af565b9050919050565b610d1561158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d99906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610eaf61158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f33906131cb565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f5245564f4c540000000000000000000000000000000000000000000000000000815250905090565b610fa461158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611028906131cb565b60405180910390fd5b8060188190555050565b61104361158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c7906131cb565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006111066110ff61158b565b848461175c565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661117161158b565b73ffffffffffffffffffffffffffffffffffffffff1614806111e75750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111cf61158b565b73ffffffffffffffffffffffffffffffffffffffff16145b6111f057600080fd5b60006111fb30610cbc565b90506112068161211d565b50565b61121161158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611295906131cb565b60405180910390fd5b60005b8383905081101561133d5781600560008686858181106112c4576112c36131eb565b5b90506020020160208101906112d99190612f6a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061133590613249565b9150506112a1565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113d261158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611456906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590613303565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f990613395565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890613427565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161174f9190612e9b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c2906134b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361183a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118319061354b565b60405180910390fd5b6000811161187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906135dd565b60405180910390fd5b611885610e7e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118f357506118c3610e7e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611cde57601560149054906101000a900460ff1661198257611914610e7e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611981576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119789061366f565b60405180910390fd5b5b6016548111156119c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119be906136db565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a6b5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa19061376d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b575760175481611b0c84610cbc565b611b16919061378d565b10611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90613833565b60405180910390fd5b5b6000611b6230610cbc565b9050600060185482101590506016548210611b7d5760165491505b808015611b95575060158054906101000a900460ff16155b8015611bef5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c075750601560169054906101000a900460ff165b8015611c5d5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cb35750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cdb57611cc18261211d565b60004790506000811115611cd957611cd847612043565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d855750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e385750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e375750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e465760009050611fcd565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ef15750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f0957600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fb45750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fcc57600a54600c81905550600b54600d819055505b5b611fd984848484612394565b50505050565b6000838311158290612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e9190612d44565b60405180910390fd5b50600083856120369190613853565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120ab573d6000803e3d6000fd5b5050565b60006006548211156120f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ed906138f9565b60405180910390fd5b60006121006123c1565b905061211581846123ec90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561215457612153612adb565b5b6040519080825280602002602001820160405280156121825781602001602082028036833780820191505090505b509050308160008151811061219a576121996131eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612241573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612265919061392e565b81600181518110612279576122786131eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122e030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611593565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612344959493929190613a54565b600060405180830381600087803b15801561235e57600080fd5b505af1158015612372573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123a2576123a1612436565b5b6123ad848484612473565b806123bb576123ba61263e565b5b50505050565b60008060006123ce612652565b915091506123e581836123ec90919063ffffffff16565b9250505090565b600061242e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126ae565b905092915050565b6000600c5414801561244a57506000600d54145b61247157600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061248587612711565b9550955095509550955095506124e386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061257885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125c481612821565b6125ce84836128de565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161262b9190612e9b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000662386f26fc100009050612684662386f26fc100006006546123ec90919063ffffffff16565b8210156126a157600654662386f26fc100009350935050506126aa565b81819350935050505b9091565b600080831182906126f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ec9190612d44565b60405180910390fd5b50600083856127049190613add565b9050809150509392505050565b600080600080600080600080600061272e8a600c54600d54612918565b925092509250600061273e6123c1565b905060008060006127518e8787876129ae565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fdf565b905092915050565b60008082846127d2919061378d565b905083811015612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e90613b5a565b60405180910390fd5b8091505092915050565b600061282b6123c1565b905060006128428284612a3790919063ffffffff16565b905061289681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6128f38260065461277990919063ffffffff16565b60068190555061290e816007546127c390919063ffffffff16565b6007819055505050565b6000806000806129446064612936888a612a3790919063ffffffff16565b6123ec90919063ffffffff16565b9050600061296e6064612960888b612a3790919063ffffffff16565b6123ec90919063ffffffff16565b9050600061299782612989858c61277990919063ffffffff16565b61277990919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806129c78589612a3790919063ffffffff16565b905060006129de8689612a3790919063ffffffff16565b905060006129f58789612a3790919063ffffffff16565b90506000612a1e82612a10858761277990919063ffffffff16565b61277990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612a495760009050612aab565b60008284612a579190613b7a565b9050828482612a669190613add565b14612aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9d90613c2e565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b1382612aca565b810181811067ffffffffffffffff82111715612b3257612b31612adb565b5b80604052505050565b6000612b45612ab1565b9050612b518282612b0a565b919050565b600067ffffffffffffffff821115612b7157612b70612adb565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bb282612b87565b9050919050565b612bc281612ba7565b8114612bcd57600080fd5b50565b600081359050612bdf81612bb9565b92915050565b6000612bf8612bf384612b56565b612b3b565b90508083825260208201905060208402830185811115612c1b57612c1a612b82565b5b835b81811015612c445780612c308882612bd0565b845260208401935050602081019050612c1d565b5050509392505050565b600082601f830112612c6357612c62612ac5565b5b8135612c73848260208601612be5565b91505092915050565b600060208284031215612c9257612c91612abb565b5b600082013567ffffffffffffffff811115612cb057612caf612ac0565b5b612cbc84828501612c4e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612cff578082015181840152602081019050612ce4565b60008484015250505050565b6000612d1682612cc5565b612d208185612cd0565b9350612d30818560208601612ce1565b612d3981612aca565b840191505092915050565b60006020820190508181036000830152612d5e8184612d0b565b905092915050565b6000819050919050565b612d7981612d66565b8114612d8457600080fd5b50565b600081359050612d9681612d70565b92915050565b60008060408385031215612db357612db2612abb565b5b6000612dc185828601612bd0565b9250506020612dd285828601612d87565b9150509250929050565b60008115159050919050565b612df181612ddc565b82525050565b6000602082019050612e0c6000830184612de8565b92915050565b6000819050919050565b6000612e37612e32612e2d84612b87565b612e12565b612b87565b9050919050565b6000612e4982612e1c565b9050919050565b6000612e5b82612e3e565b9050919050565b612e6b81612e50565b82525050565b6000602082019050612e866000830184612e62565b92915050565b612e9581612d66565b82525050565b6000602082019050612eb06000830184612e8c565b92915050565b600080600060608486031215612ecf57612ece612abb565b5b6000612edd86828701612bd0565b9350506020612eee86828701612bd0565b9250506040612eff86828701612d87565b9150509250925092565b600060ff82169050919050565b612f1f81612f09565b82525050565b6000602082019050612f3a6000830184612f16565b92915050565b612f4981612ba7565b82525050565b6000602082019050612f646000830184612f40565b92915050565b600060208284031215612f8057612f7f612abb565b5b6000612f8e84828501612bd0565b91505092915050565b612fa081612ddc565b8114612fab57600080fd5b50565b600081359050612fbd81612f97565b92915050565b600060208284031215612fd957612fd8612abb565b5b6000612fe784828501612fae565b91505092915050565b60006020828403121561300657613005612abb565b5b600061301484828501612d87565b91505092915050565b6000806000806080858703121561303757613036612abb565b5b600061304587828801612d87565b945050602061305687828801612d87565b935050604061306787828801612d87565b925050606061307887828801612d87565b91505092959194509250565b600080fd5b60008083601f84011261309f5761309e612ac5565b5b8235905067ffffffffffffffff8111156130bc576130bb613084565b5b6020830191508360208202830111156130d8576130d7612b82565b5b9250929050565b6000806000604084860312156130f8576130f7612abb565b5b600084013567ffffffffffffffff81111561311657613115612ac0565b5b61312286828701613089565b9350935050602061313586828701612fae565b9150509250925092565b6000806040838503121561315657613155612abb565b5b600061316485828601612bd0565b925050602061317585828601612bd0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131b5602083612cd0565b91506131c08261317f565b602082019050919050565b600060208201905081810360008301526131e4816131a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061325482612d66565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132865761328561321a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132ed602683612cd0565b91506132f882613291565b604082019050919050565b6000602082019050818103600083015261331c816132e0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061337f602483612cd0565b915061338a82613323565b604082019050919050565b600060208201905081810360008301526133ae81613372565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613411602283612cd0565b915061341c826133b5565b604082019050919050565b6000602082019050818103600083015261344081613404565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134a3602583612cd0565b91506134ae82613447565b604082019050919050565b600060208201905081810360008301526134d281613496565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613535602383612cd0565b9150613540826134d9565b604082019050919050565b6000602082019050818103600083015261356481613528565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006135c7602983612cd0565b91506135d28261356b565b604082019050919050565b600060208201905081810360008301526135f6816135ba565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613659603f83612cd0565b9150613664826135fd565b604082019050919050565b600060208201905081810360008301526136888161364c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006136c5601c83612cd0565b91506136d08261368f565b602082019050919050565b600060208201905081810360008301526136f4816136b8565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613757602383612cd0565b9150613762826136fb565b604082019050919050565b600060208201905081810360008301526137868161374a565b9050919050565b600061379882612d66565b91506137a383612d66565b92508282019050808211156137bb576137ba61321a565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061381d602383612cd0565b9150613828826137c1565b604082019050919050565b6000602082019050818103600083015261384c81613810565b9050919050565b600061385e82612d66565b915061386983612d66565b92508282039050818111156138815761388061321a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006138e3602a83612cd0565b91506138ee82613887565b604082019050919050565b60006020820190508181036000830152613912816138d6565b9050919050565b60008151905061392881612bb9565b92915050565b60006020828403121561394457613943612abb565b5b600061395284828501613919565b91505092915050565b6000819050919050565b600061398061397b6139768461395b565b612e12565b612d66565b9050919050565b61399081613965565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139cb81612ba7565b82525050565b60006139dd83836139c2565b60208301905092915050565b6000602082019050919050565b6000613a0182613996565b613a0b81856139a1565b9350613a16836139b2565b8060005b83811015613a47578151613a2e88826139d1565b9750613a39836139e9565b925050600181019050613a1a565b5085935050505092915050565b600060a082019050613a696000830188612e8c565b613a766020830187613987565b8181036040830152613a8881866139f6565b9050613a976060830185612f40565b613aa46080830184612e8c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ae882612d66565b9150613af383612d66565b925082613b0357613b02613aae565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b44601b83612cd0565b9150613b4f82613b0e565b602082019050919050565b60006020820190508181036000830152613b7381613b37565b9050919050565b6000613b8582612d66565b9150613b9083612d66565b9250828202613b9e81612d66565b91508282048414831517613bb557613bb461321a565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c18602183612cd0565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f409319b1a145f9274f86625ef21c671b1b15c079069e299848c0aa8beb4b1ef64736f6c63430008130033
0x6080604052662386f26fc100006000196200001b919062000727565b6000196200002a91906200078e565b600655600060085560146009556000600a556028600b55600a54600c55600b54600d55600c54600e55600d54600f5573aa7922e2b428aa3eefb0e835bc4d3c5aaf607f23601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073aa7922e2b428aa3eefb0e835bc4d3c5aaf607f23601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601560146101000a81548160ff02191690831515021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff021916908315150217905550660110d9316ec000601655660110d9316ec00060175565886c98b760006018553480156200018057600080fd5b50600062000193620006bd60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000248620006bd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200032c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000352919062000833565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003ba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e0919062000833565b6040518363ffffffff1660e01b8152600401620003ff92919062000876565b6020604051808303816000875af11580156200041f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000445919062000833565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560006200049b620006c560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000648620006bd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc10000604051620006ae9190620008b4565b60405180910390a350620008d1565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200073482620006ee565b91506200074183620006ee565b925082620007545762000753620006f8565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200079b82620006ee565b9150620007a883620006ee565b9250828203905081811115620007c357620007c26200075f565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620007fb82620007ce565b9050919050565b6200080d81620007ee565b81146200081957600080fd5b50565b6000815190506200082d8162000802565b92915050565b6000602082840312156200084c576200084b620007c9565b5b60006200085c848285016200081c565b91505092915050565b6200087081620007ee565b82525050565b60006040820190506200088d600083018562000865565b6200089c602083018462000865565b9392505050565b620008ae81620006ee565b82525050565b6000602082019050620008cb6000830184620008a3565b92915050565b613cac80620008e16000396000f3fe6080604052600436106101c55760003560e01c8063715018a6116100f757806398a5c31511610095578063c3c8cd8011610064578063c3c8cd8014610628578063c492f0461461063f578063dd62ed3e14610668578063f2fde38b146106a5576101cc565b806398a5c3151461055c578063a2a957bb14610585578063a9059cbb146105ae578063bfd79284146105eb576101cc565b80638da5cb5b116100d15780638da5cb5b146104b25780638f70ccf7146104dd5780638f9a55c01461050657806395d89b4114610531576101cc565b8063715018a6146104335780637d1db4a51461044a5780637f2feddc14610475576101cc565b8063313ce567116101645780636b9990531161013e5780636b9990531461038d5780636d8aa8f8146103b65780636fc3eaec146103df57806370a08231146103f6576101cc565b8063313ce5671461032057806349bd5a5e1461034b5780636225658914610376576101cc565b80631694505e116101a05780631694505e1461026257806318160ddd1461028d57806323b872dd146102b85780632fd689e3146102f5576101cc565b8062b8cf2a146101d157806306fdde03146101fa578063095ea7b314610225576101cc565b366101cc57005b600080fd5b3480156101dd57600080fd5b506101f860048036038101906101f39190612c7c565b6106ce565b005b34801561020657600080fd5b5061020f6107f8565b60405161021c9190612d44565b60405180910390f35b34801561023157600080fd5b5061024c60048036038101906102479190612d9c565b610835565b6040516102599190612df7565b60405180910390f35b34801561026e57600080fd5b50610277610853565b6040516102849190612e71565b60405180910390f35b34801561029957600080fd5b506102a2610879565b6040516102af9190612e9b565b60405180910390f35b3480156102c457600080fd5b506102df60048036038101906102da9190612eb6565b610888565b6040516102ec9190612df7565b60405180910390f35b34801561030157600080fd5b5061030a610961565b6040516103179190612e9b565b60405180910390f35b34801561032c57600080fd5b50610335610967565b6040516103429190612f25565b60405180910390f35b34801561035757600080fd5b50610360610970565b60405161036d9190612f4f565b60405180910390f35b34801561038257600080fd5b5061038b610996565b005b34801561039957600080fd5b506103b460048036038101906103af9190612f6a565b610a49565b005b3480156103c257600080fd5b506103dd60048036038101906103d89190612fc3565b610b39565b005b3480156103eb57600080fd5b506103f4610beb565b005b34801561040257600080fd5b5061041d60048036038101906104189190612f6a565b610cbc565b60405161042a9190612e9b565b60405180910390f35b34801561043f57600080fd5b50610448610d0d565b005b34801561045657600080fd5b5061045f610e60565b60405161046c9190612e9b565b60405180910390f35b34801561048157600080fd5b5061049c60048036038101906104979190612f6a565b610e66565b6040516104a99190612e9b565b60405180910390f35b3480156104be57600080fd5b506104c7610e7e565b6040516104d49190612f4f565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff9190612fc3565b610ea7565b005b34801561051257600080fd5b5061051b610f59565b6040516105289190612e9b565b60405180910390f35b34801561053d57600080fd5b50610546610f5f565b6040516105539190612d44565b60405180910390f35b34801561056857600080fd5b50610583600480360381019061057e9190612ff0565b610f9c565b005b34801561059157600080fd5b506105ac60048036038101906105a7919061301d565b61103b565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190612d9c565b6110f2565b6040516105e29190612df7565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190612f6a565b611110565b60405161061f9190612df7565b60405180910390f35b34801561063457600080fd5b5061063d611130565b005b34801561064b57600080fd5b50610666600480360381019061066191906130df565b611209565b005b34801561067457600080fd5b5061068f600480360381019061068a919061313f565b611343565b60405161069c9190612e9b565b60405180910390f35b3480156106b157600080fd5b506106cc60048036038101906106c79190612f6a565b6113ca565b005b6106d661158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610763576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075a906131cb565b60405180910390fd5b60005b81518110156107f457600160106000848481518110610788576107876131eb565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107ec90613249565b915050610766565b5050565b60606040518060400160405280600681526020017f5245564f4c540000000000000000000000000000000000000000000000000000815250905090565b600061084961084261158b565b8484611593565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b600061089584848461175c565b610956846108a161158b565b61095185604051806060016040528060288152602001613c4f60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061090761158b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fdf9092919063ffffffff16565b611593565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61099e61158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a22906131cb565b60405180910390fd5b662386f26fc10000601681905550662386f26fc10000601781905550565b610a5161158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ad5906131cb565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610b4161158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc5906131cb565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c2c61158b565b73ffffffffffffffffffffffffffffffffffffffff161480610ca25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c8a61158b565b73ffffffffffffffffffffffffffffffffffffffff16145b610cab57600080fd5b6000479050610cb981612043565b50565b6000610d06600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120af565b9050919050565b610d1561158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d99906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610eaf61158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f33906131cb565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600681526020017f5245564f4c540000000000000000000000000000000000000000000000000000815250905090565b610fa461158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611031576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611028906131cb565b60405180910390fd5b8060188190555050565b61104361158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c7906131cb565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006111066110ff61158b565b848461175c565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661117161158b565b73ffffffffffffffffffffffffffffffffffffffff1614806111e75750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111cf61158b565b73ffffffffffffffffffffffffffffffffffffffff16145b6111f057600080fd5b60006111fb30610cbc565b90506112068161211d565b50565b61121161158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461129e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611295906131cb565b60405180910390fd5b60005b8383905081101561133d5781600560008686858181106112c4576112c36131eb565b5b90506020020160208101906112d99190612f6a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061133590613249565b9150506112a1565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6113d261158b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611456906131cb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c590613303565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611602576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f990613395565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890613427565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161174f9190612e9b565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117c2906134b9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361183a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118319061354b565b60405180910390fd5b6000811161187d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611874906135dd565b60405180910390fd5b611885610e7e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118f357506118c3610e7e565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611cde57601560149054906101000a900460ff1661198257611914610e7e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611981576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119789061366f565b60405180910390fd5b5b6016548111156119c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119be906136db565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a6b5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611aaa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa19061376d565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611b575760175481611b0c84610cbc565b611b16919061378d565b10611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90613833565b60405180910390fd5b5b6000611b6230610cbc565b9050600060185482101590506016548210611b7d5760165491505b808015611b95575060158054906101000a900460ff16155b8015611bef5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c075750601560169054906101000a900460ff165b8015611c5d5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611cb35750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611cdb57611cc18261211d565b60004790506000811115611cd957611cd847612043565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d855750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611e385750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e375750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e465760009050611fcd565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611ef15750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f0957600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611fb45750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611fcc57600a54600c81905550600b54600d819055505b5b611fd984848484612394565b50505050565b6000838311158290612027576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201e9190612d44565b60405180910390fd5b50600083856120369190613853565b9050809150509392505050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156120ab573d6000803e3d6000fd5b5050565b60006006548211156120f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ed906138f9565b60405180910390fd5b60006121006123c1565b905061211581846123ec90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561215457612153612adb565b5b6040519080825280602002602001820160405280156121825781602001602082028036833780820191505090505b509050308160008151811061219a576121996131eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612241573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612265919061392e565b81600181518110612279576122786131eb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506122e030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611593565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612344959493929190613a54565b600060405180830381600087803b15801561235e57600080fd5b505af1158015612372573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123a2576123a1612436565b5b6123ad848484612473565b806123bb576123ba61263e565b5b50505050565b60008060006123ce612652565b915091506123e581836123ec90919063ffffffff16565b9250505090565b600061242e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126ae565b905092915050565b6000600c5414801561244a57506000600d54145b61247157600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061248587612711565b9550955095509550955095506124e386600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461277990919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061257885600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c390919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125c481612821565b6125ce84836128de565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161262b9190612e9b565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000662386f26fc100009050612684662386f26fc100006006546123ec90919063ffffffff16565b8210156126a157600654662386f26fc100009350935050506126aa565b81819350935050505b9091565b600080831182906126f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ec9190612d44565b60405180910390fd5b50600083856127049190613add565b9050809150509392505050565b600080600080600080600080600061272e8a600c54600d54612918565b925092509250600061273e6123c1565b905060008060006127518e8787876129ae565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fdf565b905092915050565b60008082846127d2919061378d565b905083811015612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e90613b5a565b60405180910390fd5b8091505092915050565b600061282b6123c1565b905060006128428284612a3790919063ffffffff16565b905061289681600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127c390919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b6128f38260065461277990919063ffffffff16565b60068190555061290e816007546127c390919063ffffffff16565b6007819055505050565b6000806000806129446064612936888a612a3790919063ffffffff16565b6123ec90919063ffffffff16565b9050600061296e6064612960888b612a3790919063ffffffff16565b6123ec90919063ffffffff16565b9050600061299782612989858c61277990919063ffffffff16565b61277990919063ffffffff16565b905080838395509550955050505093509350939050565b6000806000806129c78589612a3790919063ffffffff16565b905060006129de8689612a3790919063ffffffff16565b905060006129f58789612a3790919063ffffffff16565b90506000612a1e82612a10858761277990919063ffffffff16565b61277990919063ffffffff16565b9050838184965096509650505050509450945094915050565b6000808303612a495760009050612aab565b60008284612a579190613b7a565b9050828482612a669190613add565b14612aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9d90613c2e565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612b1382612aca565b810181811067ffffffffffffffff82111715612b3257612b31612adb565b5b80604052505050565b6000612b45612ab1565b9050612b518282612b0a565b919050565b600067ffffffffffffffff821115612b7157612b70612adb565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612bb282612b87565b9050919050565b612bc281612ba7565b8114612bcd57600080fd5b50565b600081359050612bdf81612bb9565b92915050565b6000612bf8612bf384612b56565b612b3b565b90508083825260208201905060208402830185811115612c1b57612c1a612b82565b5b835b81811015612c445780612c308882612bd0565b845260208401935050602081019050612c1d565b5050509392505050565b600082601f830112612c6357612c62612ac5565b5b8135612c73848260208601612be5565b91505092915050565b600060208284031215612c9257612c91612abb565b5b600082013567ffffffffffffffff811115612cb057612caf612ac0565b5b612cbc84828501612c4e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612cff578082015181840152602081019050612ce4565b60008484015250505050565b6000612d1682612cc5565b612d208185612cd0565b9350612d30818560208601612ce1565b612d3981612aca565b840191505092915050565b60006020820190508181036000830152612d5e8184612d0b565b905092915050565b6000819050919050565b612d7981612d66565b8114612d8457600080fd5b50565b600081359050612d9681612d70565b92915050565b60008060408385031215612db357612db2612abb565b5b6000612dc185828601612bd0565b9250506020612dd285828601612d87565b9150509250929050565b60008115159050919050565b612df181612ddc565b82525050565b6000602082019050612e0c6000830184612de8565b92915050565b6000819050919050565b6000612e37612e32612e2d84612b87565b612e12565b612b87565b9050919050565b6000612e4982612e1c565b9050919050565b6000612e5b82612e3e565b9050919050565b612e6b81612e50565b82525050565b6000602082019050612e866000830184612e62565b92915050565b612e9581612d66565b82525050565b6000602082019050612eb06000830184612e8c565b92915050565b600080600060608486031215612ecf57612ece612abb565b5b6000612edd86828701612bd0565b9350506020612eee86828701612bd0565b9250506040612eff86828701612d87565b9150509250925092565b600060ff82169050919050565b612f1f81612f09565b82525050565b6000602082019050612f3a6000830184612f16565b92915050565b612f4981612ba7565b82525050565b6000602082019050612f646000830184612f40565b92915050565b600060208284031215612f8057612f7f612abb565b5b6000612f8e84828501612bd0565b91505092915050565b612fa081612ddc565b8114612fab57600080fd5b50565b600081359050612fbd81612f97565b92915050565b600060208284031215612fd957612fd8612abb565b5b6000612fe784828501612fae565b91505092915050565b60006020828403121561300657613005612abb565b5b600061301484828501612d87565b91505092915050565b6000806000806080858703121561303757613036612abb565b5b600061304587828801612d87565b945050602061305687828801612d87565b935050604061306787828801612d87565b925050606061307887828801612d87565b91505092959194509250565b600080fd5b60008083601f84011261309f5761309e612ac5565b5b8235905067ffffffffffffffff8111156130bc576130bb613084565b5b6020830191508360208202830111156130d8576130d7612b82565b5b9250929050565b6000806000604084860312156130f8576130f7612abb565b5b600084013567ffffffffffffffff81111561311657613115612ac0565b5b61312286828701613089565b9350935050602061313586828701612fae565b9150509250925092565b6000806040838503121561315657613155612abb565b5b600061316485828601612bd0565b925050602061317585828601612bd0565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006131b5602083612cd0565b91506131c08261317f565b602082019050919050565b600060208201905081810360008301526131e4816131a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061325482612d66565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132865761328561321a565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006132ed602683612cd0565b91506132f882613291565b604082019050919050565b6000602082019050818103600083015261331c816132e0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061337f602483612cd0565b915061338a82613323565b604082019050919050565b600060208201905081810360008301526133ae81613372565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613411602283612cd0565b915061341c826133b5565b604082019050919050565b6000602082019050818103600083015261344081613404565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006134a3602583612cd0565b91506134ae82613447565b604082019050919050565b600060208201905081810360008301526134d281613496565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613535602383612cd0565b9150613540826134d9565b604082019050919050565b6000602082019050818103600083015261356481613528565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006135c7602983612cd0565b91506135d28261356b565b604082019050919050565b600060208201905081810360008301526135f6816135ba565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b6000613659603f83612cd0565b9150613664826135fd565b604082019050919050565b600060208201905081810360008301526136888161364c565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b60006136c5601c83612cd0565b91506136d08261368f565b602082019050919050565b600060208201905081810360008301526136f4816136b8565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613757602383612cd0565b9150613762826136fb565b604082019050919050565b600060208201905081810360008301526137868161374a565b9050919050565b600061379882612d66565b91506137a383612d66565b92508282019050808211156137bb576137ba61321a565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b600061381d602383612cd0565b9150613828826137c1565b604082019050919050565b6000602082019050818103600083015261384c81613810565b9050919050565b600061385e82612d66565b915061386983612d66565b92508282039050818111156138815761388061321a565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b60006138e3602a83612cd0565b91506138ee82613887565b604082019050919050565b60006020820190508181036000830152613912816138d6565b9050919050565b60008151905061392881612bb9565b92915050565b60006020828403121561394457613943612abb565b5b600061395284828501613919565b91505092915050565b6000819050919050565b600061398061397b6139768461395b565b612e12565b612d66565b9050919050565b61399081613965565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6139cb81612ba7565b82525050565b60006139dd83836139c2565b60208301905092915050565b6000602082019050919050565b6000613a0182613996565b613a0b81856139a1565b9350613a16836139b2565b8060005b83811015613a47578151613a2e88826139d1565b9750613a39836139e9565b925050600181019050613a1a565b5085935050505092915050565b600060a082019050613a696000830188612e8c565b613a766020830187613987565b8181036040830152613a8881866139f6565b9050613a976060830185612f40565b613aa46080830184612e8c565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ae882612d66565b9150613af383612d66565b925082613b0357613b02613aae565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613b44601b83612cd0565b9150613b4f82613b0e565b602082019050919050565b60006020820190508181036000830152613b7381613b37565b9050919050565b6000613b8582612d66565b9150613b9083612d66565b9250828202613b9e81612d66565b91508282048414831517613bb557613bb461321a565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c18602183612cd0565b9150613c2382613bbc565b604082019050919050565b60006020820190508181036000830152613c4781613c0b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f409319b1a145f9274f86625ef21c671b1b15c079069e299848c0aa8beb4b1ef64736f6c63430008130033