60c060405234801562000010575f80fd5b5060405162004a1b38038062004a1b833981810160405281019062000036919062000492565b805f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200009d576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350846001908162000148919062000782565b5083600290816200015a919062000782565b508260ff1660808160ff168152505081600481905550608051600a620001819190620009e3565b826200018e919062000a33565b60a08181525050600160105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060a05160085f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050505062000a7d565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6200029a8262000252565b810181811067ffffffffffffffff82111715620002bc57620002bb62000262565b5b80604052505050565b5f620002d062000239565b9050620002de82826200028f565b919050565b5f67ffffffffffffffff8211156200030057620002ff62000262565b5b6200030b8262000252565b9050602081019050919050565b5f5b83811015620003375780820151818401526020810190506200031a565b5f8484015250505050565b5f620003586200035284620002e3565b620002c5565b9050828152602081018484840111156200037757620003766200024e565b5b6200038484828562000318565b509392505050565b5f82601f830112620003a357620003a26200024a565b5b8151620003b584826020860162000342565b91505092915050565b5f60ff82169050919050565b620003d581620003be565b8114620003e0575f80fd5b50565b5f81519050620003f381620003ca565b92915050565b5f819050919050565b6200040d81620003f9565b811462000418575f80fd5b50565b5f815190506200042b8162000402565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200045c8262000431565b9050919050565b6200046e8162000450565b811462000479575f80fd5b50565b5f815190506200048c8162000463565b92915050565b5f805f805f60a08688031215620004ae57620004ad62000242565b5b5f86015167ffffffffffffffff811115620004ce57620004cd62000246565b5b620004dc888289016200038c565b955050602086015167ffffffffffffffff8111156200050057620004ff62000246565b5b6200050e888289016200038c565b94505060406200052188828901620003e3565b935050606062000534888289016200041b565b925050608062000547888289016200047c565b9150509295509295909350565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620005a357607f821691505b602082108103620005b957620005b86200055e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026200061d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005e0565b620006298683620005e0565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6200066a620006646200065e84620003f9565b62000641565b620003f9565b9050919050565b5f819050919050565b62000685836200064a565b6200069d620006948262000671565b848454620005ec565b825550505050565b5f90565b620006b3620006a5565b620006c08184846200067a565b505050565b5b81811015620006e757620006db5f82620006a9565b600181019050620006c6565b5050565b601f82111562000736576200070081620005bf565b6200070b84620005d1565b810160208510156200071b578190505b620007336200072a85620005d1565b830182620006c5565b50505b505050565b5f82821c905092915050565b5f620007585f19846008026200073b565b1980831691505092915050565b5f62000772838362000747565b9150826002028217905092915050565b6200078d8262000554565b67ffffffffffffffff811115620007a957620007a862000262565b5b620007b582546200058b565b620007c2828285620006eb565b5f60209050601f831160018114620007f8575f8415620007e3578287015190505b620007ef858262000765565b8655506200085e565b601f1984166200080886620005bf565b5f5b8281101562000831578489015182556001820191506020850194506020810190506200080a565b868310156200085157848901516200084d601f89168262000747565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008f057808604811115620008c857620008c762000866565b5b6001851615620008d85780820291505b8081029050620008e88562000893565b9450620008a8565b94509492505050565b5f826200090a5760019050620009dc565b8162000919575f9050620009dc565b81600181146200093257600281146200093d5762000973565b6001915050620009dc565b60ff84111562000952576200095162000866565b5b8360020a9150848211156200096c576200096b62000866565b5b50620009dc565b5060208310610133831016604e8410600b8410161715620009ad5782820a905083811115620009a757620009a662000866565b5b620009dc565b620009bc84848460016200089f565b92509050818404811115620009d657620009d562000866565b5b81810290505b9392505050565b5f620009ef82620003f9565b9150620009fc83620003be565b925062000a2b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008f9565b905092915050565b5f62000a3f82620003f9565b915062000a4c83620003f9565b925082820262000a5c81620003f9565b9150828204841483151762000a765762000a7562000866565b5b5092915050565b60805160a051613f7562000aa65f395f610a9001525f81816112b10152611f4f0152613f755ff3fe608060405234801561000f575f80fd5b50600436106101f9575f3560e01c8063715018a611610118578063c34eb1c4116100ab578063dd62ed3e1161007a578063dd62ed3e146105fd578063e0df5b6f1461062d578063e985e9c514610649578063f2fde38b14610679578063f6347a8014610695576101f9565b8063c34eb1c41461054f578063c87b56dd1461057f578063ca4c0e09146105af578063d547cfb7146105df576101f9565b8063a22cb465116100e7578063a22cb465146104c9578063a9059cbb146104e5578063a9e2880e14610515578063b88d4fde14610533576101f9565b8063715018a6146104535780638da5cb5b1461045d57806395d89b411461047b5780639b19251a14610499576101f9565b8063313ce56711610190578063504334c21161015f578063504334c2146103bb57806353d6fd59146103d75780636352211e146103f357806370a0823114610423576101f9565b8063313ce56714610321578063383505411461033f57806342842e0e1461036f578063439ff6e91461038b576101f9565b8063095ea7b3116101cc578063095ea7b31461029957806318160ddd146102c957806323b872dd146102e75780632c88797e14610303576101f9565b806305541d80146101fd57806306fdde031461022d57806307c560011461024b578063081812fc14610269575b5f80fd5b61021760048036038101906102129190612f1a565b6106c5565b6040516102249190612f54565b60405180910390f35b6102356106e5565b6040516102429190612ff7565b60405180910390f35b610253610771565b6040516102609190612f54565b60405180910390f35b610283600480360381019061027e9190612f1a565b610777565b6040516102909190613056565b60405180910390f35b6102b360048036038101906102ae9190613099565b6107a7565b6040516102c091906130f1565b60405180910390f35b6102d1610a8e565b6040516102de9190612f54565b60405180910390f35b61030160048036038101906102fc919061310a565b610ab2565b005b61030b6112a9565b6040516103189190612f54565b60405180910390f35b6103296112af565b6040516103369190613175565b60405180910390f35b61035960048036038101906103549190612f1a565b6112d3565b6040516103669190613056565b60405180910390f35b6103896004803603810190610384919061310a565b611303565b005b6103a560048036038101906103a09190613099565b611432565b6040516103b29190612f54565b60405180910390f35b6103d560048036038101906103d091906132ba565b61145d565b005b6103f160048036038101906103ec919061335a565b611505565b005b61040d60048036038101906104089190612f1a565b6115e1565b60405161041a9190613056565b60405180910390f35b61043d60048036038101906104389190613398565b61167f565b60405161044a9190612f54565b60405180910390f35b61045b611694565b005b6104656117b3565b6040516104729190613056565b60405180910390f35b6104836117d6565b6040516104909190612ff7565b60405180910390f35b6104b360048036038101906104ae9190613398565b611862565b6040516104c091906130f1565b60405180910390f35b6104e360048036038101906104de919061335a565b61187f565b005b6104ff60048036038101906104fa9190613099565b611977565b60405161050c91906130f1565b60405180910390f35b61051d61198b565b60405161052a919061347a565b60405180910390f35b61054d600480360381019061054891906134f7565b6119e1565b005b61056960048036038101906105649190613099565b611b16565b6040516105769190612f54565b60405180910390f35b61059960048036038101906105949190612f1a565b611b41565b6040516105a69190612ff7565b60405180910390f35b6105c960048036038101906105c49190612f1a565b611b94565b6040516105d69190612f54565b60405180910390f35b6105e7611bb4565b6040516105f49190612ff7565b60405180910390f35b6106176004803603810190610612919061357b565b611c40565b6040516106249190612f54565b60405180910390f35b610647600480360381019061064291906135b9565b611c60565b005b610663600480360381019061065e919061357b565b611cf7565b60405161067091906130f1565b60405180910390f35b610693600480360381019061068e9190613398565b611d21565b005b6106af60048036038101906106aa9190612f1a565b611ea6565b6040516106bc9190612ff7565b60405180910390f35b601281815481106106d4575f80fd5b905f5260205f20015f915090505481565b600180546106f29061362d565b80601f016020809104026020016040519081016040528092919081815260200182805461071e9061362d565b80156107695780601f1061074057610100808354040283529160200191610769565b820191905f5260205f20905b81548152906001019060200180831161074c57829003601f168201915b505050505081565b60065481565b600a602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60065482111580156107b957505f82115b156109a1575f600c5f8481526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156108b05750600b5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156108e7576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83600a5f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040516109939190612f54565b60405180910390a350610a84565b8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a7b9190612f54565b60405180910390a35b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600454811161116a57600c5f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610b50576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610bb5576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610c735750600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015610cdb5750600a5f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610d12576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d1a611f4c565b60085f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610d65919061368a565b92505081905550610d74611f4c565b60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555081600c5f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555f600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050610eca919061368a565b81548110610edb57610eda6136bd565b5b905f5260205f200154905080600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600f5f8581526020019081526020015f205481548110610f4757610f466136bd565b5b905f5260205f200181905550600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480610fa057610f9f6136ea565b5b600190038181905f5260205f20015f90559055600f5f8381526020019081526020015f2054600f5f8381526020019081526020015f2081905550600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2082908060018154018082558091505060019003905f5260205f20015f90919091909150556001600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050611088919061368a565b600f5f8481526020019081526020015f2081905550818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a48273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e03148761114f611f4c565b60405161115c9190612f54565b60405180910390a3506112a4565b5f60095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114611296578181611219919061368a565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b6112a1848484611f7f565b50505b505050565b60045481565b7f000000000000000000000000000000000000000000000000000000000000000081565b600c602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61130e838383610ab2565b5f8273ffffffffffffffffffffffffffffffffffffffff163b141580156113f6575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168273ffffffffffffffffffffffffffffffffffffffff1663150b7a023386856040518463ffffffff1660e01b81526004016113949392919061374a565b6020604051808303815f875af11580156113b0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113d491906137e7565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b1561142d576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b600e602052815f5260405f20818154811061144b575f80fd5b905f5260205f20015f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114e1576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600190816114f091906139af565b50806002908161150091906139af565b505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611589576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600c5f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361167a576040517fc5723b5100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6008602052805f5260405f205f915090505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611718576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600280546117e39061362d565b80601f016020809104026020016040519081016040528092919081815260200182805461180f9061362d565b801561185a5780601f106118315761010080835404028352916020019161185a565b820191905f5260205f20905b81548152906001019060200180831161183d57829003601f168201915b505050505081565b6010602052805f5260405f205f915054906101000a900460ff1681565b80600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161196b91906130f1565b60405180910390a35050565b5f611983338484611f7f565b905092915050565b606060058054806020026020016040519081016040528092919081815260200182805480156119d757602002820191905f5260205f20905b8154815260200190600101908083116119c3575b5050505050905090565b6119ec858585610ab2565b5f8473ffffffffffffffffffffffffffffffffffffffff163b14158015611ad8575063150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168473ffffffffffffffffffffffffffffffffffffffff1663150b7a0233888787876040518663ffffffff1660e01b8152600401611a76959493929190613aaa565b6020604051808303815f875af1158015611a92573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ab691906137e7565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15611b0f576040517f3da6393100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b600d602052815f5260405f208181548110611b2f575f80fd5b905f5260205f20015f91509150505481565b60606003611b4e836122c3565b604051602001611b5f929190613bb0565b604051602081830303815290604052604051602001611b7e9190613bf9565b6040516020818303038152906040529050919050565b60058181548110611ba3575f80fd5b905f5260205f20015f915090505481565b60038054611bc19061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054611bed9061362d565b8015611c385780601f10611c0f57610100808354040283529160200191611c38565b820191905f5260205f20905b815481529060010190602001808311611c1b57829003601f168201915b505050505081565b6009602052815f5260405f20602052805f5260405f205f91509150505481565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611ce4576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060039081611cf391906139af565b5050565b600b602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611da5576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e0a576040517f49e27cff00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b60118181548110611eb5575f80fd5b905f5260205f20015f915090508054611ecd9061362d565b80601f0160208091040260200160405190810160405280929190818152602001828054611ef99061362d565b8015611f445780601f10611f1b57610100808354040283529160200191611f44565b820191905f5260205f20905b815481529060010190602001808311611f2757829003601f168201915b505050505081565b5f7f0000000000000000000000000000000000000000000000000000000000000000600a611f7a9190613d4d565b905090565b5f80611f89611f4c565b90505f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60085f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508460085f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612059919061368a565b925050819055508460085f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254019250508190555060105f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661217d575f8360085f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121429190613dc4565b848461214e9190613dc4565b612158919061368a565b90505f5b8181101561217a5761216d8961238d565b808060010191505061215c565b50505b60105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612250575f83826121d89190613dc4565b8460085f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122219190613dc4565b61222b919061368a565b90505f5b8181101561224d576122408861263c565b808060010191505061222f565b50505b8573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fe59fdd36d0d223c0c7d996db7ad796880f45e1936cb0bb7ac102e7082e031487876040516122ad9190612f54565b60405180910390a3600193505050509392505050565b60605f60016122d184612a35565b0190505f8167ffffffffffffffff8111156122ef576122ee613196565b5b6040519080825280601f01601f1916602001820160405280156123215781602001600182028036833780820191505090505b5090505f82602001820190505b600115612382578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161237757612376613d97565b5b0494505f850361232e575b819350505050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123f2576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054905061247d919061368a565b8154811061248e5761248d6136bd565b5b905f5260205f20015490506124a281612b86565b600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f9091909190915055600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054806125505761254f6136ea565b5b600190038181905f5260205f20015f90559055600f5f8281526020019081526020015f205f9055600c5f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600a5f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055805f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a45050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126a1576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080548060200260200160405190810160405280929190818152602001828054801561272757602002820191905f5260205f20905b815481526020019060010190808311612713575b505050505090505f815190505f8082111561281c575f80600190505b6001846127509190613df4565b811015612815578084612763919061368a565b91505f858381518110612779576127786136bd565b5b6020026020010151905060075f8281526020019081526020015f205f9054906101000a900460ff1661280757809350600160075f8681526020019081526020015f205f6101000a81548160ff0219169083151502179055506127db8388612c2b565b601284908060018154018082558091505060019003905f5260205f20015f909190919091505550612815565b508080600101915050612743565b50506128c2565b60045460065410156128725760065f81548092919061283a90613e27565b91905055506006549050600160075f8381526020019081526020015f205f6101000a81548160ff0219169083151502179055506128c1565b5f600580549050111561288e57612887612d8e565b90506128c0565b6040517fed4421ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b5b83600c5f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f20015f90919091909150556001600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805490506129bf919061368a565b600f5f8381526020019081526020015f2081905550808473ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612a91577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381612a8757612a86613d97565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612ace576d04ee2d6d415b85acef81000000008381612ac457612ac3613d97565b5b0492506020810190505b662386f26fc100008310612afd57662386f26fc100008381612af357612af2613d97565b5b0492506010810190505b6305f5e1008310612b26576305f5e1008381612b1c57612b1b613d97565b5b0492506008810190505b6127108310612b4b576127108381612b4157612b40613d97565b5b0492506004810190505b60648310612b6e5760648381612b6457612b63613d97565b5b0492506002810190505b600a8310612b7d576001810190505b80915050919050565b60075f8281526020019081526020015f205f9054906101000a900460ff16612bda576040517fd7004e5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600581908060018154018082558091505060019003905f5260205f20015f90919091909150555f60075f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b600e5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2080549050612cb5919061368a565b81548110612cc657612cc56136bd565b5b905f5260205f200154600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208381548110612d1e57612d1d6136bd565b5b905f5260205f200181905550600e5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20805480612d7757612d766136ea565b5b600190038181905f5260205f20015f905590555050565b5f8060058054905003612dcd576040517fed4421ad00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6005805490504233600580549050604051602001612dee93929190613ed3565b604051602081830303815290604052805190602001205f1c612e109190613f0f565b90505f60058281548110612e2757612e266136bd565b5b905f5260205f200154905060056001600580549050612e46919061368a565b81548110612e5757612e566136bd565b5b905f5260205f20015460058381548110612e7457612e736136bd565b5b905f5260205f2001819055506005805480612e9257612e916136ea565b5b600190038181905f5260205f20015f90559055600160075f8381526020019081526020015f205f6101000a81548160ff021916908315150217905550809250505090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b612ef981612ee7565b8114612f03575f80fd5b50565b5f81359050612f1481612ef0565b92915050565b5f60208284031215612f2f57612f2e612edf565b5b5f612f3c84828501612f06565b91505092915050565b612f4e81612ee7565b82525050565b5f602082019050612f675f830184612f45565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612fa4578082015181840152602081019050612f89565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612fc982612f6d565b612fd38185612f77565b9350612fe3818560208601612f87565b612fec81612faf565b840191505092915050565b5f6020820190508181035f83015261300f8184612fbf565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61304082613017565b9050919050565b61305081613036565b82525050565b5f6020820190506130695f830184613047565b92915050565b61307881613036565b8114613082575f80fd5b50565b5f813590506130938161306f565b92915050565b5f80604083850312156130af576130ae612edf565b5b5f6130bc85828601613085565b92505060206130cd85828601612f06565b9150509250929050565b5f8115159050919050565b6130eb816130d7565b82525050565b5f6020820190506131045f8301846130e2565b92915050565b5f805f6060848603121561312157613120612edf565b5b5f61312e86828701613085565b935050602061313f86828701613085565b925050604061315086828701612f06565b9150509250925092565b5f60ff82169050919050565b61316f8161315a565b82525050565b5f6020820190506131885f830184613166565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6131cc82612faf565b810181811067ffffffffffffffff821117156131eb576131ea613196565b5b80604052505050565b5f6131fd612ed6565b905061320982826131c3565b919050565b5f67ffffffffffffffff82111561322857613227613196565b5b61323182612faf565b9050602081019050919050565b828183375f83830152505050565b5f61325e6132598461320e565b6131f4565b90508281526020810184848401111561327a57613279613192565b5b61328584828561323e565b509392505050565b5f82601f8301126132a1576132a061318e565b5b81356132b184826020860161324c565b91505092915050565b5f80604083850312156132d0576132cf612edf565b5b5f83013567ffffffffffffffff8111156132ed576132ec612ee3565b5b6132f98582860161328d565b925050602083013567ffffffffffffffff81111561331a57613319612ee3565b5b6133268582860161328d565b9150509250929050565b613339816130d7565b8114613343575f80fd5b50565b5f8135905061335481613330565b92915050565b5f80604083850312156133705761336f612edf565b5b5f61337d85828601613085565b925050602061338e85828601613346565b9150509250929050565b5f602082840312156133ad576133ac612edf565b5b5f6133ba84828501613085565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6133f581612ee7565b82525050565b5f61340683836133ec565b60208301905092915050565b5f602082019050919050565b5f613428826133c3565b61343281856133cd565b935061343d836133dd565b805f5b8381101561346d57815161345488826133fb565b975061345f83613412565b925050600181019050613440565b5085935050505092915050565b5f6020820190508181035f830152613492818461341e565b905092915050565b5f80fd5b5f80fd5b5f8083601f8401126134b7576134b661318e565b5b8235905067ffffffffffffffff8111156134d4576134d361349a565b5b6020830191508360018202830111156134f0576134ef61349e565b5b9250929050565b5f805f805f608086880312156135105761350f612edf565b5b5f61351d88828901613085565b955050602061352e88828901613085565b945050604061353f88828901612f06565b935050606086013567ffffffffffffffff8111156135605761355f612ee3565b5b61356c888289016134a2565b92509250509295509295909350565b5f806040838503121561359157613590612edf565b5b5f61359e85828601613085565b92505060206135af85828601613085565b9150509250929050565b5f602082840312156135ce576135cd612edf565b5b5f82013567ffffffffffffffff8111156135eb576135ea612ee3565b5b6135f78482850161328d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061364457607f821691505b60208210810361365757613656613600565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61369482612ee7565b915061369f83612ee7565b92508282039050818111156136b7576136b661365d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b5f82825260208201905092915050565b50565b5f6137355f83613717565b915061374082613727565b5f82019050919050565b5f60808201905061375d5f830186613047565b61376a6020830185613047565b6137776040830184612f45565b81810360608301526137888161372a565b9050949350505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6137c681613792565b81146137d0575f80fd5b50565b5f815190506137e1816137bd565b92915050565b5f602082840312156137fc576137fb612edf565b5b5f613809848285016137d3565b91505092915050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261386e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613833565b6138788683613833565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6138b36138ae6138a984612ee7565b613890565b612ee7565b9050919050565b5f819050919050565b6138cc83613899565b6138e06138d8826138ba565b84845461383f565b825550505050565b5f90565b6138f46138e8565b6138ff8184846138c3565b505050565b5b81811015613922576139175f826138ec565b600181019050613905565b5050565b601f8211156139675761393881613812565b61394184613824565b81016020851015613950578190505b61396461395c85613824565b830182613904565b50505b505050565b5f82821c905092915050565b5f6139875f198460080261396c565b1980831691505092915050565b5f61399f8383613978565b9150826002028217905092915050565b6139b882612f6d565b67ffffffffffffffff8111156139d1576139d0613196565b5b6139db825461362d565b6139e6828285613926565b5f60209050601f831160018114613a17575f8415613a05578287015190505b613a0f8582613994565b865550613a76565b601f198416613a2586613812565b5f5b82811015613a4c57848901518255600182019150602085019450602081019050613a27565b86831015613a695784890151613a65601f891682613978565b8355505b6001600288020188555050505b505050505050565b5f613a898385613717565b9350613a9683858461323e565b613a9f83612faf565b840190509392505050565b5f608082019050613abd5f830188613047565b613aca6020830187613047565b613ad76040830186612f45565b8181036060830152613aea818486613a7e565b90509695505050505050565b5f81905092915050565b5f8154613b0c8161362d565b613b168186613af6565b9450600182165f8114613b305760018114613b4557613b77565b60ff1983168652811515820286019350613b77565b613b4e85613812565b5f5b83811015613b6f57815481890152600182019150602081019050613b50565b838801955050505b50505092915050565b5f613b8a82612f6d565b613b948185613af6565b9350613ba4818560208601612f87565b80840191505092915050565b5f613bbb8285613b00565b9150613bc78284613b80565b91508190509392505050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000815250565b5f613c048284613b80565b9150613c0f82613bd3565b60058201915081905092915050565b5f8160011c9050919050565b5f808291508390505b6001851115613c7357808604811115613c4f57613c4e61365d565b5b6001851615613c5e5780820291505b8081029050613c6c85613c1e565b9450613c33565b94509492505050565b5f82613c8b5760019050613d46565b81613c98575f9050613d46565b8160018114613cae5760028114613cb857613ce7565b6001915050613d46565b60ff841115613cca57613cc961365d565b5b8360020a915084821115613ce157613ce061365d565b5b50613d46565b5060208310610133831016604e8410600b8410161715613d1c5782820a905083811115613d1757613d1661365d565b5b613d46565b613d298484846001613c2a565b92509050818404811115613d4057613d3f61365d565b5b81810290505b9392505050565b5f613d5782612ee7565b9150613d628361315a565b9250613d8f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613c7c565b905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613dce82612ee7565b9150613dd983612ee7565b925082613de957613de8613d97565b5b828204905092915050565b5f613dfe82612ee7565b9150613e0983612ee7565b9250828201905080821115613e2157613e2061365d565b5b92915050565b5f613e3182612ee7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613e6357613e6261365d565b5b600182019050919050565b5f819050919050565b613e88613e8382612ee7565b613e6e565b82525050565b5f8160601b9050919050565b5f613ea482613e8e565b9050919050565b5f613eb582613e9a565b9050919050565b613ecd613ec882613036565b613eab565b82525050565b5f613ede8286613e77565b602082019150613eee8285613ebc565b601482019150613efe8284613e77565b602082019150819050949350505050565b5f613f1982612ee7565b9150613f2483612ee7565b925082613f3457613f33613d97565b5b82820690509291505056fea2646970667358221220d7b0378d1af05ec57b65e9aef22d13f988f9fb6c4a3d4ee886f08a00b8d075de64736f6c6343000816003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000194000000000000000000000000f8ce5d043af80991d296d0bd2b8f04b0c31d73de0000000000000000000000000000000000000000000000000000000000000006626c61626c6100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003626c610000000000000000000000000000000000000000000000000000000000