60806040526040518060800160405280604b815260200162004e72604b9139600e908051906020019062000035929190620004e6565b506040518060800160405280604a815260200162004ebd604a9139600f908051906020019062000067929190620004e6565b506001601060016101000a81548160ff021916908315150217905550661f438daa0600006012556014601355611d97601455348015620000a657600080fd5b506040518060400160405280600c81526020017f4c617a79204261626f6f6e7300000000000000000000000000000000000000008152506040518060400160405280600281526020017f4c4200000000000000000000000000000000000000000000000000000000000081525081600290805190602001906200012b929190620004e6565b50806003908051906020019062000144929190620004e6565b50620001556200026160201b60201c565b60008190555050506200017d620001716200026a60201b60201c565b6200027260201b60201c565b6001600b819055507314eacd261b651d2cc8e4484a3a56c4aa37ee7dff601060026101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610226601160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506200025b601060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601160009054906101000a90046bffffffffffffffffffffffff166200033860201b60201c565b62000716565b60006001905090565b600033905090565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b62000348620004dc60201b60201c565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115620003a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003a090620005e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200041c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004139062000606565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6000612710905090565b828054620004f49062000639565b90600052602060002090601f01602090048101928262000518576000855562000564565b82601f106200053357805160ff191683800117855562000564565b8280016001018555821562000564579182015b828111156200056357825182559160200191906001019062000546565b5b50905062000573919062000577565b5090565b5b808211156200059257600081600090555060010162000578565b5090565b6000620005a5602a8362000628565b9150620005b2826200069e565b604082019050919050565b6000620005cc60198362000628565b9150620005d982620006ed565b602082019050919050565b60006020820190508181036000830152620005ff8162000596565b9050919050565b600060208201905081810360008301526200062181620005bd565b9050919050565b600082825260208201905092915050565b600060028204905060018216806200065257607f821691505b602082108114156200066957620006686200066f565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b61474c80620007266000396000f3fe6080604052600436106102305760003560e01c80636c0360eb1161012e578063aed38015116100ab578063d5abeb011161006f578063d5abeb011461081d578063e985e9c514610848578063f2fde38b14610885578063fae1f6e2146108ae578063fbdb8494146108d757610230565b8063aed3801514610728578063b5b1cd7c14610751578063b88d4fde1461078e578063c21b471b146107b7578063c87b56dd146107e057610230565b80639a87a46d116100f25780639a87a46d146106645780639ec571d51461068f578063a0712d68146106b8578063a22cb465146106d4578063a945bf80146106fd57610230565b80636c0360eb1461058f57806370a08231146105ba578063715018a6146105f75780638da5cb5b1461060e57806395d89b411461063957610230565b806323b872dd116101bc57806344a0d68a1161018057806344a0d68a146104aa57806351830227146104d357806355f804b3146104fe5780635c975abb146105275780636352211e1461055257610230565b806323b872dd146103d85780632a55205a146104015780633ccfd60b1461043f5780633f1199bd1461045657806342842e0e1461048157610230565b80630caea53b116102035780630caea53b146103035780630dc8a4c21461032e57806316c38b3c1461035957806318160ddd146103825780631f32975e146103ad57610230565b806301ffc9a71461023557806306fdde0314610272578063081812fc1461029d578063095ea7b3146102da575b600080fd5b34801561024157600080fd5b5061025c6004803603810190610257919061393b565b610900565b6040516102699190613de2565b60405180910390f35b34801561027e57600080fd5b50610287610922565b6040516102949190613dfd565b60405180910390f35b3480156102a957600080fd5b506102c460048036038101906102bf91906139de565b6109b4565b6040516102d19190613d52565b60405180910390f35b3480156102e657600080fd5b5061030160048036038101906102fc9190613845565b610a30565b005b34801561030f57600080fd5b50610318610b3b565b6040516103259190613f5f565b60405180910390f35b34801561033a57600080fd5b50610343610b41565b6040516103509190613dfd565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b919061390e565b610bcf565b005b34801561038e57600080fd5b50610397610c68565b6040516103a49190613f5f565b60405180910390f35b3480156103b957600080fd5b506103c2610c7f565b6040516103cf9190613f7a565b60405180910390f35b3480156103e457600080fd5b506103ff60048036038101906103fa919061372f565b610c9d565b005b34801561040d57600080fd5b5061042860048036038101906104239190613a4b565b610cad565b604051610436929190613db9565b60405180910390f35b34801561044b57600080fd5b50610454610e98565b005b34801561046257600080fd5b5061046b610f94565b6040516104789190613dfd565b60405180910390f35b34801561048d57600080fd5b506104a860048036038101906104a3919061372f565b611022565b005b3480156104b657600080fd5b506104d160048036038101906104cc91906139de565b611042565b005b3480156104df57600080fd5b506104e86110c8565b6040516104f59190613de2565b60405180910390f35b34801561050a57600080fd5b5061052560048036038101906105209190613995565b6110db565b005b34801561053357600080fd5b5061053c611171565b6040516105499190613de2565b60405180910390f35b34801561055e57600080fd5b50610579600480360381019061057491906139de565b611184565b6040516105869190613d52565b60405180910390f35b34801561059b57600080fd5b506105a461119a565b6040516105b19190613dfd565b60405180910390f35b3480156105c657600080fd5b506105e160048036038101906105dc91906136c2565b611228565b6040516105ee9190613f5f565b60405180910390f35b34801561060357600080fd5b5061060c6112f8565b005b34801561061a57600080fd5b50610623611380565b6040516106309190613d52565b60405180910390f35b34801561064557600080fd5b5061064e6113aa565b60405161065b9190613dfd565b60405180910390f35b34801561067057600080fd5b5061067961143c565b6040516106869190613d52565b60405180910390f35b34801561069b57600080fd5b506106b660048036038101906106b191906139de565b611462565b005b6106d260048036038101906106cd91906139de565b6114e8565b005b3480156106e057600080fd5b506106fb60048036038101906106f69190613805565b6117dd565b005b34801561070957600080fd5b50610712611955565b60405161071f9190613f5f565b60405180910390f35b34801561073457600080fd5b5061074f600480360381019061074a9190613a0b565b61195b565b005b34801561075d57600080fd5b50610778600480360381019061077391906136c2565b6119e5565b6040516107859190613f5f565b60405180910390f35b34801561079a57600080fd5b506107b560048036038101906107b09190613782565b6119fd565b005b3480156107c357600080fd5b506107de60048036038101906107d99190613885565b611a79565b005b3480156107ec57600080fd5b50610807600480360381019061080291906139de565b611b03565b6040516108149190613dfd565b60405180910390f35b34801561082957600080fd5b50610832611d02565b60405161083f9190613f5f565b60405180910390f35b34801561085457600080fd5b5061086f600480360381019061086a91906136ef565b611d08565b60405161087c9190613de2565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a791906136c2565b611d9c565b005b3480156108ba57600080fd5b506108d560048036038101906108d091906138c5565b611e94565b005b3480156108e357600080fd5b506108fe60048036038101906108f991906139de565b611f58565b005b600061090b82611fde565b8061091b575061091a826120c0565b5b9050919050565b60606002805461093190614279565b80601f016020809104026020016040519081016040528092919081815260200182805461095d90614279565b80156109aa5780601f1061097f576101008083540402835291602001916109aa565b820191906000526020600020905b81548152906001019060200180831161098d57829003601f168201915b5050505050905090565b60006109bf8261213a565b6109f5576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610a3b82611184565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610aa3576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ac2612188565b73ffffffffffffffffffffffffffffffffffffffff1614158015610af45750610af281610aed612188565b611d08565b155b15610b2b576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b36838383612190565b505050565b60135481565b600f8054610b4e90614279565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7a90614279565b8015610bc75780601f10610b9c57610100808354040283529160200191610bc7565b820191906000526020600020905b815481529060010190602001808311610baa57829003601f168201915b505050505081565b610bd7612188565b73ffffffffffffffffffffffffffffffffffffffff16610bf5611380565b73ffffffffffffffffffffffffffffffffffffffff1614610c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4290613e7f565b60405180910390fd5b80601060016101000a81548160ff02191690831515021790555050565b6000610c72612242565b6001546000540303905090565b601160009054906101000a90046bffffffffffffffffffffffff1681565b610ca883838361224b565b505050565b6000806000600960008681526020019081526020016000206040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161415610e435760086040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152505090505b6000610e4d612701565b6bffffffffffffffffffffffff1682602001516bffffffffffffffffffffffff1686610e79919061411d565b610e8391906140ec565b90508160000151819350935050509250929050565b610ea0612188565b73ffffffffffffffffffffffffffffffffffffffff16610ebe611380565b73ffffffffffffffffffffffffffffffffffffffff1614610f14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0b90613e7f565b60405180910390fd5b6000610f1e611380565b73ffffffffffffffffffffffffffffffffffffffff1647604051610f4190613d3d565b60006040518083038185875af1925050503d8060008114610f7e576040519150601f19603f3d011682016040523d82523d6000602084013e610f83565b606091505b5050905080610f9157600080fd5b50565b600e8054610fa190614279565b80601f0160208091040260200160405190810160405280929190818152602001828054610fcd90614279565b801561101a5780601f10610fef5761010080835404028352916020019161101a565b820191906000526020600020905b815481529060010190602001808311610ffd57829003601f168201915b505050505081565b61103d838383604051806020016040528060008152506119fd565b505050565b61104a612188565b73ffffffffffffffffffffffffffffffffffffffff16611068611380565b73ffffffffffffffffffffffffffffffffffffffff16146110be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b590613e7f565b60405180910390fd5b8060128190555050565b601060009054906101000a900460ff1681565b6110e3612188565b73ffffffffffffffffffffffffffffffffffffffff16611101611380565b73ffffffffffffffffffffffffffffffffffffffff1614611157576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114e90613e7f565b60405180910390fd5b80600d908051906020019061116d9291906133e0565b5050565b601060019054906101000a900460ff1681565b600061118f8261270b565b600001519050919050565b600d80546111a790614279565b80601f01602080910402602001604051908101604052809291908181526020018280546111d390614279565b80156112205780601f106111f557610100808354040283529160200191611220565b820191906000526020600020905b81548152906001019060200180831161120357829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611290576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611300612188565b73ffffffffffffffffffffffffffffffffffffffff1661131e611380565b73ffffffffffffffffffffffffffffffffffffffff1614611374576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136b90613e7f565b60405180910390fd5b61137e600061299a565b565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600380546113b990614279565b80601f01602080910402602001604051908101604052809291908181526020018280546113e590614279565b80156114325780601f1061140757610100808354040283529160200191611432565b820191906000526020600020905b81548152906001019060200180831161141557829003601f168201915b5050505050905090565b601060029054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61146a612188565b73ffffffffffffffffffffffffffffffffffffffff16611488611380565b73ffffffffffffffffffffffffffffffffffffffff16146114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590613e7f565b60405180910390fd5b8060148190555050565b6002600b54141561152e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152590613f1f565b60405180910390fd5b6002600b81905550601060019054906101000a900460ff1615611586576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157d90613e9f565b60405180910390fd5b6000811180156115aa57506014548161159d610c68565b6115a79190614096565b11155b6115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090613e5f565b60405180910390fd5b60135481600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116379190614096565b1115611678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166f90613eff565b60405180910390fd5b6000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415611721576001816116cd9190614177565b6012546116da919061411d565b34101561171c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171390613e3f565b60405180910390fd5b611772565b8060125461172f919061411d565b341015611771576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176890613e3f565b60405180910390fd5b5b80600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117c19190614096565b925050819055506117d23382612a60565b6001600b8190555050565b6117e5612188565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561184a576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060076000611857612188565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16611904612188565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119499190613de2565b60405180910390a35050565b60125481565b611963612188565b73ffffffffffffffffffffffffffffffffffffffff16611981611380565b73ffffffffffffffffffffffffffffffffffffffff16146119d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ce90613e7f565b60405180910390fd5b6119e18183612a60565b5050565b600c6020528060005260406000206000915090505481565b611a0884848461224b565b611a278373ffffffffffffffffffffffffffffffffffffffff16612a7e565b8015611a3c5750611a3a84848484612aa1565b155b15611a73576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b611a81612188565b73ffffffffffffffffffffffffffffffffffffffff16611a9f611380565b73ffffffffffffffffffffffffffffffffffffffff1614611af5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aec90613e7f565b60405180910390fd5b611aff8282612c01565b5050565b6060611b0e8261213a565b611b4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4490613ebf565b60405180910390fd5b6000611b57612d97565b905060001515601060009054906101000a900460ff1615151415611cb0576000600284611b849190614325565b1415611c1d57600e8054611b9790614279565b80601f0160208091040260200160405190810160405280929190818152602001828054611bc390614279565b8015611c105780601f10611be557610100808354040283529160200191611c10565b820191906000526020600020905b815481529060010190602001808311611bf357829003601f168201915b5050505050915050611cfd565b600f8054611c2a90614279565b80601f0160208091040260200160405190810160405280929190818152602001828054611c5690614279565b8015611ca35780601f10611c7857610100808354040283529160200191611ca3565b820191906000526020600020905b815481529060010190602001808311611c8657829003601f168201915b5050505050915050611cfd565b6000815111611cce5760405180602001604052806000815250611cf9565b80611cd884612e29565b604051602001611ce9929190613d0e565b6040516020818303038152906040525b9150505b919050565b60145481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b611da4612188565b73ffffffffffffffffffffffffffffffffffffffff16611dc2611380565b73ffffffffffffffffffffffffffffffffffffffff1614611e18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0f90613e7f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e7f90613e1f565b60405180910390fd5b611e918161299a565b50565b611e9c612188565b73ffffffffffffffffffffffffffffffffffffffff16611eba611380565b73ffffffffffffffffffffffffffffffffffffffff1614611f10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0790613e7f565b60405180910390fd5b60005b8151811015611f5457611f41828281518110611f3257611f316143e3565b5b60200260200101516001612a60565b8080611f4c906142dc565b915050611f13565b5050565b611f60612188565b73ffffffffffffffffffffffffffffffffffffffff16611f7e611380565b73ffffffffffffffffffffffffffffffffffffffff1614611fd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcb90613e7f565b60405180910390fd5b8060138190555050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806120a957507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806120b957506120b882612f8a565b5b9050919050565b60007f2a55205a000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612133575061213282611fde565b5b9050919050565b600081612145612242565b11158015612154575060005482105b8015612181575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b60006001905090565b60006122568261270b565b90508373ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146122c1576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166122e2612188565b73ffffffffffffffffffffffffffffffffffffffff16148061231157506123108561230b612188565b611d08565b5b80612356575061231f612188565b73ffffffffffffffffffffffffffffffffffffffff1661233e846109b4565b73ffffffffffffffffffffffffffffffffffffffff16145b90508061238f576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156123f6576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6124038585856001612ff4565b61240f60008487612190565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600460008581526020019081526020016000209050848160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550428160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060006001850190506000600460008381526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561268f57600054821461268e57878160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084602001518160000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b505050828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46126fa8585856001612ffa565b5050505050565b6000612710905090565b612713613466565b600082905080612721612242565b11158015612730575060005481105b15612963576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050806040015161296157600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff1614612845578092505050612995565b5b60011561296057818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff161461295b578092505050612995565b612846565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b612a7a828260405180602001604052806000815250613000565b5050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02612ac7612188565b8786866040518563ffffffff1660e01b8152600401612ae99493929190613d6d565b602060405180830381600087803b158015612b0357600080fd5b505af1925050508015612b3457506040513d601f19601f82011682018060405250810190612b319190613968565b60015b612bae573d8060008114612b64576040519150601f19603f3d011682016040523d82523d6000602084013e612b69565b606091505b50600081511415612ba6576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b612c09612701565b6bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115612c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5e90613edf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cce90613f3f565b60405180910390fd5b60405180604001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001826bffffffffffffffffffffffff16815250600860008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509050505050565b6060600d8054612da690614279565b80601f0160208091040260200160405190810160405280929190818152602001828054612dd290614279565b8015612e1f5780601f10612df457610100808354040283529160200191612e1f565b820191906000526020600020905b815481529060010190602001808311612e0257829003601f168201915b5050505050905090565b60606000821415612e71576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050612f85565b600082905060005b60008214612ea3578080612e8c906142dc565b915050600a82612e9c91906140ec565b9150612e79565b60008167ffffffffffffffff811115612ebf57612ebe614412565b5b6040519080825280601f01601f191660200182016040528015612ef15781602001600182028036833780820191505090505b5090505b60008514612f7e57600182612f0a9190614177565b9150600a85612f199190614325565b6030612f259190614096565b60f81b818381518110612f3b57612f3a6143e3565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a85612f7791906140ec565b9450612ef5565b8093505050505b919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b50505050565b50505050565b61300d8383836001613012565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561307f576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156130ba576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6130c76000868387612ff4565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060008190506000858201905083801561329157506132908773ffffffffffffffffffffffffffffffffffffffff16612a7e565b5b15613357575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46133066000888480600101955088612aa1565b61333c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8082141561329757826000541461335257600080fd5b6133c3565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415613358575b8160008190555050506133d96000868387612ffa565b5050505050565b8280546133ec90614279565b90600052602060002090601f01602090048101928261340e5760008555613455565b82601f1061342757805160ff1916838001178555613455565b82800160010185558215613455579182015b82811115613454578251825591602001919060010190613439565b5b50905061346291906134a9565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b808211156134c25760008160009055506001016134aa565b5090565b60006134d96134d484613fba565b613f95565b905080838252602082019050828560208602820111156134fc576134fb614446565b5b60005b8581101561352c578161351288826135ba565b8452602084019350602083019250506001810190506134ff565b5050509392505050565b600061354961354484613fe6565b613f95565b9050828152602081018484840111156135655761356461444b565b5b613570848285614237565b509392505050565b600061358b61358684614017565b613f95565b9050828152602081018484840111156135a7576135a661444b565b5b6135b2848285614237565b509392505050565b6000813590506135c9816146a3565b92915050565b600082601f8301126135e4576135e3614441565b5b81356135f48482602086016134c6565b91505092915050565b60008135905061360c816146ba565b92915050565b600081359050613621816146d1565b92915050565b600081519050613636816146d1565b92915050565b600082601f83011261365157613650614441565b5b8135613661848260208601613536565b91505092915050565b600082601f83011261367f5761367e614441565b5b813561368f848260208601613578565b91505092915050565b6000813590506136a7816146e8565b92915050565b6000813590506136bc816146ff565b92915050565b6000602082840312156136d8576136d7614455565b5b60006136e6848285016135ba565b91505092915050565b6000806040838503121561370657613705614455565b5b6000613714858286016135ba565b9250506020613725858286016135ba565b9150509250929050565b60008060006060848603121561374857613747614455565b5b6000613756868287016135ba565b9350506020613767868287016135ba565b925050604061377886828701613698565b9150509250925092565b6000806000806080858703121561379c5761379b614455565b5b60006137aa878288016135ba565b94505060206137bb878288016135ba565b93505060406137cc87828801613698565b925050606085013567ffffffffffffffff8111156137ed576137ec614450565b5b6137f98782880161363c565b91505092959194509250565b6000806040838503121561381c5761381b614455565b5b600061382a858286016135ba565b925050602061383b858286016135fd565b9150509250929050565b6000806040838503121561385c5761385b614455565b5b600061386a858286016135ba565b925050602061387b85828601613698565b9150509250929050565b6000806040838503121561389c5761389b614455565b5b60006138aa858286016135ba565b92505060206138bb858286016136ad565b9150509250929050565b6000602082840312156138db576138da614455565b5b600082013567ffffffffffffffff8111156138f9576138f8614450565b5b613905848285016135cf565b91505092915050565b60006020828403121561392457613923614455565b5b6000613932848285016135fd565b91505092915050565b60006020828403121561395157613950614455565b5b600061395f84828501613612565b91505092915050565b60006020828403121561397e5761397d614455565b5b600061398c84828501613627565b91505092915050565b6000602082840312156139ab576139aa614455565b5b600082013567ffffffffffffffff8111156139c9576139c8614450565b5b6139d58482850161366a565b91505092915050565b6000602082840312156139f4576139f3614455565b5b6000613a0284828501613698565b91505092915050565b60008060408385031215613a2257613a21614455565b5b6000613a3085828601613698565b9250506020613a41858286016135ba565b9150509250929050565b60008060408385031215613a6257613a61614455565b5b6000613a7085828601613698565b9250506020613a8185828601613698565b9150509250929050565b613a94816141ab565b82525050565b613aa3816141bd565b82525050565b6000613ab482614048565b613abe818561405e565b9350613ace818560208601614246565b613ad78161445a565b840191505092915050565b6000613aed82614053565b613af7818561407a565b9350613b07818560208601614246565b613b108161445a565b840191505092915050565b6000613b2682614053565b613b30818561408b565b9350613b40818560208601614246565b80840191505092915050565b6000613b5960268361407a565b9150613b648261446b565b604082019050919050565b6000613b7c60138361407a565b9150613b87826144ba565b602082019050919050565b6000613b9f600f8361407a565b9150613baa826144e3565b602082019050919050565b6000613bc260058361408b565b9150613bcd8261450c565b600582019050919050565b6000613be560208361407a565b9150613bf082614535565b602082019050919050565b6000613c0860178361407a565b9150613c138261455e565b602082019050919050565b6000613c2b602f8361407a565b9150613c3682614587565b604082019050919050565b6000613c4e60008361406f565b9150613c59826145d6565b600082019050919050565b6000613c71602a8361407a565b9150613c7c826145d9565b604082019050919050565b6000613c94601a8361407a565b9150613c9f82614628565b602082019050919050565b6000613cb7601f8361407a565b9150613cc282614651565b602082019050919050565b6000613cda60198361407a565b9150613ce58261467a565b602082019050919050565b613cf981614215565b82525050565b613d088161421f565b82525050565b6000613d1a8285613b1b565b9150613d268284613b1b565b9150613d3182613bb5565b91508190509392505050565b6000613d4882613c41565b9150819050919050565b6000602082019050613d676000830184613a8b565b92915050565b6000608082019050613d826000830187613a8b565b613d8f6020830186613a8b565b613d9c6040830185613cf0565b8181036060830152613dae8184613aa9565b905095945050505050565b6000604082019050613dce6000830185613a8b565b613ddb6020830184613cf0565b9392505050565b6000602082019050613df76000830184613a9a565b92915050565b60006020820190508181036000830152613e178184613ae2565b905092915050565b60006020820190508181036000830152613e3881613b4c565b9050919050565b60006020820190508181036000830152613e5881613b6f565b9050919050565b60006020820190508181036000830152613e7881613b92565b9050919050565b60006020820190508181036000830152613e9881613bd8565b9050919050565b60006020820190508181036000830152613eb881613bfb565b9050919050565b60006020820190508181036000830152613ed881613c1e565b9050919050565b60006020820190508181036000830152613ef881613c64565b9050919050565b60006020820190508181036000830152613f1881613c87565b9050919050565b60006020820190508181036000830152613f3881613caa565b9050919050565b60006020820190508181036000830152613f5881613ccd565b9050919050565b6000602082019050613f746000830184613cf0565b92915050565b6000602082019050613f8f6000830184613cff565b92915050565b6000613f9f613fb0565b9050613fab82826142ab565b919050565b6000604051905090565b600067ffffffffffffffff821115613fd557613fd4614412565b5b602082029050602081019050919050565b600067ffffffffffffffff82111561400157614000614412565b5b61400a8261445a565b9050602081019050919050565b600067ffffffffffffffff82111561403257614031614412565b5b61403b8261445a565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b60006140a182614215565b91506140ac83614215565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156140e1576140e0614356565b5b828201905092915050565b60006140f782614215565b915061410283614215565b92508261411257614111614385565b5b828204905092915050565b600061412882614215565b915061413383614215565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561416c5761416b614356565b5b828202905092915050565b600061418282614215565b915061418d83614215565b9250828210156141a05761419f614356565b5b828203905092915050565b60006141b6826141f5565b9050919050565b60008115159050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006bffffffffffffffffffffffff82169050919050565b82818337600083830152505050565b60005b83811015614264578082015181840152602081019050614249565b83811115614273576000848401525b50505050565b6000600282049050600182168061429157607f821691505b602082108114156142a5576142a46143b4565b5b50919050565b6142b48261445a565b810181811067ffffffffffffffff821117156142d3576142d2614412565b5b80604052505050565b60006142e782614215565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561431a57614319614356565b5b600182019050919050565b600061433082614215565b915061433b83614215565b92508261434b5761434a614385565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f496e73756666696369656e742046756e64732100000000000000000000000000600082015250565b7f496e76616c696420616d6f756e74210000000000000000000000000000000000600082015250565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f54686520636f6e74726163742069732070617573656421000000000000000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b50565b7f455243323938313a20726f79616c7479206665652077696c6c2065786365656460008201527f2073616c65507269636500000000000000000000000000000000000000000000602082015250565b7f596f752063616e2774206d696e74207468697320616d6f756e74000000000000600082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b7f455243323938313a20696e76616c696420726563656976657200000000000000600082015250565b6146ac816141ab565b81146146b757600080fd5b50565b6146c3816141bd565b81146146ce57600080fd5b50565b6146da816141c9565b81146146e557600080fd5b50565b6146f181614215565b81146146fc57600080fd5b50565b6147088161421f565b811461471357600080fd5b5056fea26469706673582212201809f925d3d37d627c33465686453b9d3e9edccaa724bc0f0d15191e7f4e2f1a64736f6c63430008070033697066733a2f2f516d5951536570564736354d44767356633163734234376a71796a5943715832664b35586d78615238426333666d2f4c6f73744261626f6f6e734c696768742e6a736f6e697066733a2f2f516d5951536570564736354d44767356633163734234376a71796a5943715832664b35586d78615238426333666d2f4c6f73744261626f6f6e734461726b2e6a736f6e