0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503480156200004457600080fd5b50620000556200005b60201b60201c565b62000205565b600060019054906101000a900460ff1615620000ae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620000a590620001a8565b60405180910390fd5b60ff801660008054906101000a900460ff1660ff16146200011f5760ff6000806101000a81548160ff021916908360ff1602179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb384740249860ff604051620001169190620001e8565b60405180910390a15b565b600082825260208201905092915050565b7f496e697469616c697a61626c653a20636f6e747261637420697320696e69746960008201527f616c697a696e6700000000000000000000000000000000000000000000000000602082015250565b60006200019060278362000121565b91506200019d8262000132565b604082019050919050565b60006020820190508181036000830152620001c38162000181565b9050919050565b600060ff82169050919050565b620001e281620001ca565b82525050565b6000602082019050620001ff6000830184620001d7565b92915050565b6080516184456200023d60003960008181610e9e01528181610f2c01528181611238015281816112c601526113e701526184456000f3fe6080604052600436106102725760003560e01c80635c975abb1161014f5780639ab24eb0116100c1578063d204c45e1161007a578063d204c45e146109a5578063d5391393146109ce578063d547741f146109f9578063e63ab1e914610a22578063e985e9c514610a4d578063f72c0d8b14610a8a57610272565b80639ab24eb014610885578063a217fddf146108c2578063a22cb465146108ed578063b88d4fde14610916578063c3cda5201461093f578063c87b56dd1461096857610272565b80638456cb59116101135780638456cb591461076d57806384b0196e146107845780638e539e8c146107b557806391d14854146107f257806391ddadf41461082f57806395d89b411461085a57610272565b80635c975abb146106745780636352211e1461069f57806370a08231146106dc5780637ecebe00146107195780638129fc1c1461075657610272565b80633659cfe6116101e85780634bf5d7e9116101ac5780634bf5d7e91461055f5780634f1ef2861461058a5780634f6ccce7146105a657806352d1902d146105e3578063587cde1e1461060e5780635c19a95c1461064b57610272565b80633659cfe6146104905780633a46b1a8146104b95780633f4ba83a146104f657806342842e0e1461050d57806342966c681461053657610272565b806323b872dd1161023a57806323b872dd14610370578063248a9ca3146103995780632f2ff15d146103d65780632f745c59146103ff5780633644e5151461043c57806336568abe1461046757610272565b806301ffc9a71461027757806306fdde03146102b4578063081812fc146102df578063095ea7b31461031c57806318160ddd14610345575b600080fd5b34801561028357600080fd5b5061029e60048036038101906102999190615bdb565b610ab5565b6040516102ab9190615c23565b60405180910390f35b3480156102c057600080fd5b506102c9610ac7565b6040516102d69190615cce565b60405180910390f35b3480156102eb57600080fd5b5061030660048036038101906103019190615d26565b610b59565b6040516103139190615d94565b60405180910390f35b34801561032857600080fd5b50610343600480360381019061033e9190615ddb565b610b9f565b005b34801561035157600080fd5b5061035a610cb6565b6040516103679190615e2a565b60405180910390f35b34801561037c57600080fd5b5061039760048036038101906103929190615e45565b610cc3565b005b3480156103a557600080fd5b506103c060048036038101906103bb9190615ece565b610d23565b6040516103cd9190615f0a565b60405180910390f35b3480156103e257600080fd5b506103fd60048036038101906103f89190615f25565b610d44565b005b34801561040b57600080fd5b5061042660048036038101906104219190615ddb565b610d65565b6040516104339190615e2a565b60405180910390f35b34801561044857600080fd5b50610451610e0a565b60405161045e9190615f0a565b60405180910390f35b34801561047357600080fd5b5061048e60048036038101906104899190615f25565b610e19565b005b34801561049c57600080fd5b506104b760048036038101906104b29190615f65565b610e9c565b005b3480156104c557600080fd5b506104e060048036038101906104db9190615ddb565b611024565b6040516104ed9190615e2a565b60405180910390f35b34801561050257600080fd5b5061050b6110f7565b005b34801561051957600080fd5b50610534600480360381019061052f9190615e45565b61112c565b005b34801561054257600080fd5b5061055d60048036038101906105589190615d26565b61114c565b005b34801561056b57600080fd5b506105746111a8565b6040516105819190615cce565b60405180910390f35b6105a4600480360381019061059f91906160c7565b611236565b005b3480156105b257600080fd5b506105cd60048036038101906105c89190615d26565b611372565b6040516105da9190615e2a565b60405180910390f35b3480156105ef57600080fd5b506105f86113e3565b6040516106059190615f0a565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190615f65565b61149c565b6040516106429190615d94565b60405180910390f35b34801561065757600080fd5b50610672600480360381019061066d9190615f65565b611506565b005b34801561068057600080fd5b50610689611520565b6040516106969190615c23565b60405180910390f35b3480156106ab57600080fd5b506106c660048036038101906106c19190615d26565b611537565b6040516106d39190615d94565b60405180910390f35b3480156106e857600080fd5b5061070360048036038101906106fe9190615f65565b6115bd565b6040516107109190615e2a565b60405180910390f35b34801561072557600080fd5b50610740600480360381019061073b9190615f65565b611674565b60405161074d9190615e2a565b60405180910390f35b34801561076257600080fd5b5061076b6116c5565b005b34801561077957600080fd5b506107826119a6565b005b34801561079057600080fd5b506107996119db565b6040516107ac979695949392919061621c565b60405180910390f35b3480156107c157600080fd5b506107dc60048036038101906107d79190615d26565b611ade565b6040516107e99190615e2a565b60405180910390f35b3480156107fe57600080fd5b5061081960048036038101906108149190615f25565b611b73565b6040516108269190615c23565b60405180910390f35b34801561083b57600080fd5b50610844611bdf565b60405161085191906162c1565b60405180910390f35b34801561086657600080fd5b5061086f611bef565b60405161087c9190615cce565b60405180910390f35b34801561089157600080fd5b506108ac60048036038101906108a79190615f65565b611c81565b6040516108b99190615e2a565b60405180910390f35b3480156108ce57600080fd5b506108d7611cf0565b6040516108e49190615f0a565b60405180910390f35b3480156108f957600080fd5b50610914600480360381019061090f9190616308565b611cf7565b005b34801561092257600080fd5b5061093d60048036038101906109389190616348565b611d0d565b005b34801561094b57600080fd5b5061096660048036038101906109619190616404565b611d6f565b005b34801561097457600080fd5b5061098f600480360381019061098a9190615d26565b611e73565b60405161099c9190615cce565b60405180910390f35b3480156109b157600080fd5b506109cc60048036038101906109c79190616532565b611e85565b005b3480156109da57600080fd5b506109e3611ee3565b6040516109f09190615f0a565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190615f25565b611f07565b005b348015610a2e57600080fd5b50610a37611f28565b604051610a449190615f0a565b60405180910390f35b348015610a5957600080fd5b50610a746004803603810190610a6f919061658e565b611f4c565b604051610a819190615c23565b60405180910390f35b348015610a9657600080fd5b50610a9f611fe0565b604051610aac9190615f0a565b60405180910390f35b6000610ac082612004565b9050919050565b606060658054610ad6906165fd565b80601f0160208091040260200160405190810160405280929190818152602001828054610b02906165fd565b8015610b4f5780601f10610b2457610100808354040283529160200191610b4f565b820191906000526020600020905b815481529060010190602001808311610b3257829003601f168201915b5050505050905090565b6000610b648261207e565b6069600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610baa82611537565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c11906166a0565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610c396120c9565b73ffffffffffffffffffffffffffffffffffffffff161480610c685750610c6781610c626120c9565b611f4c565b5b610ca7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9e90616732565b60405180910390fd5b610cb183836120d1565b505050565b6000609980549050905090565b610cd4610cce6120c9565b8261218a565b610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a906167c4565b60405180910390fd5b610d1e83838361221f565b505050565b600061012d6000838152602001908152602001600020600101549050919050565b610d4d82610d23565b610d5681612518565b610d60838361252c565b505050565b6000610d70836115bd565b8210610db1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da890616856565b60405180910390fd5b609760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002054905092915050565b6000610e1461260e565b905090565b610e216120c9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610e8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e85906168e8565b60405180910390fd5b610e98828261261d565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1603610f2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f219061697a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610f69612700565b73ffffffffffffffffffffffffffffffffffffffff1614610fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb690616a0c565b60405180910390fd5b610fc881612757565b61102181600067ffffffffffffffff811115610fe757610fe6615f9c565b5b6040519080825280601f01601f1916602001820160405280156110195781602001600182028036833780820191505090505b506000612785565b50565b600061102e611bdf565b65ffffffffffff168210611077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106e90616a78565b60405180910390fd5b6110d1611083836128f3565b6101c660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061294690919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16905092915050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a61112181612518565b611129612a3c565b50565b61114783838360405180602001604052806000815250611d0d565b505050565b61115d6111576120c9565b8261218a565b61119c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611193906167c4565b60405180910390fd5b6111a581612a9f565b50565b6060436111b3611bdf565b65ffffffffffff16146111fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f290616ae4565b60405180910390fd5b6040518060400160405280601d81526020017f6d6f64653d626c6f636b6e756d6265722666726f6d3d64656661756c74000000815250905090565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff16036112c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112bb9061697a565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611303612700565b73ffffffffffffffffffffffffffffffffffffffff1614611359576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135090616a0c565b60405180910390fd5b61136282612757565b61136e82826001612785565b5050565b600061137c610cb6565b82106113bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b490616b76565b60405180910390fd5b609982815481106113d1576113d0616b96565b5b90600052602060002001549050919050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611473576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146a90616c37565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b905090565b60006101c560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006115106120c9565b905061151c8183612aab565b5050565b600060fb60009054906101000a900460ff16905090565b60008061154383612bc0565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab90616ca3565b60405180910390fd5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361162d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162490616d35565b60405180910390fd5b606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60006116be6101c860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020612bfd565b9050919050565b60008060019054906101000a900460ff161590508080156116f65750600160008054906101000a900460ff1660ff16105b80611723575061170530612c0b565b1580156117225750600160008054906101000a900460ff1660ff16145b5b611762576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175990616dc7565b60405180910390fd5b60016000806101000a81548160ff021916908360ff160217905550801561179f576001600060016101000a81548160ff0219169083151502179055505b6118136040518060400160405280600681526020017f416c6668613700000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4565630000000000000000000000000000000000000000000000000000000000815250612c2e565b61181b612c8b565b611823612cdc565b61182b612d2d565b611833612d86565b61183b612dd7565b6118af6040518060400160405280600681526020017f416c6668613700000000000000000000000000000000000000000000000000008152506040518060400160405280600181526020017f3100000000000000000000000000000000000000000000000000000000000000815250612e28565b6118b7612e85565b6118bf612ed6565b6118cc6000801b3361252c565b6118f67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361252c565b6119207f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361252c565b61194a7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e33361252c565b80156119a35760008060016101000a81548160ff0219169083151502179055507f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498600160405161199a9190616e2c565b60405180910390a15b50565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a6119d081612518565b6119d8612f27565b50565b6000606080600080600060606000801b61019154148015611a0157506000801b61019254145b611a40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3790616e93565b60405180910390fd5b611a48612f8a565b611a5061301d565b46306000801b600067ffffffffffffffff811115611a7157611a70615f9c565b5b604051908082528060200260200182016040528015611a9f5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b6000611ae8611bdf565b65ffffffffffff168210611b31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2890616a78565b60405180910390fd5b611b4e611b3d836128f3565b6101c761294690919063ffffffff16565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b600061012d600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6000611bea436130b0565b905090565b606060668054611bfe906165fd565b80601f0160208091040260200160405190810160405280929190818152602001828054611c2a906165fd565b8015611c775780601f10611c4c57610100808354040283529160200191611c77565b820191906000526020600020905b815481529060010190602001808311611c5a57829003601f168201915b5050505050905090565b6000611ccb6101c660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020613105565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff169050919050565b6000801b81565b611d09611d026120c9565b838361316f565b5050565b611d1e611d186120c9565b8361218a565b611d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d54906167c4565b60405180910390fd5b611d69848484846132db565b50505050565b83421115611db2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da990616eff565b60405180910390fd5b6000611e14611e0c7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf898989604051602001611df19493929190616f1f565b60405160208183030381529060405280519060200120613337565b858585613351565b9050611e1f8161337c565b8614611e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e5790616fb0565b60405180910390fd5b611e6a8188612aab565b50505050505050565b6060611e7e826133db565b9050919050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6611eaf81612518565b6000611ebc61028d612bfd565b9050611ec961028d6134ed565b611ed38482613503565b611edd8184613521565b50505050565b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b611f1082610d23565b611f1981612518565b611f23838361261d565b505050565b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6000606a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e381565b60007f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806120775750612076826135c5565b5b9050919050565b61208781613626565b6120c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120bd90616ca3565b60405180910390fd5b50565b600033905090565b816069600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff1661214483611537565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061219683611537565b90508073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806121d857506121d78185611f4c565b5b8061221657508373ffffffffffffffffffffffffffffffffffffffff166121fe84610b59565b73ffffffffffffffffffffffffffffffffffffffff16145b91505092915050565b8273ffffffffffffffffffffffffffffffffffffffff1661223f82611537565b73ffffffffffffffffffffffffffffffffffffffff1614612295576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161228c90617042565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612304576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122fb906170d4565b60405180910390fd5b6123118383836001613667565b8273ffffffffffffffffffffffffffffffffffffffff1661233182611537565b73ffffffffffffffffffffffffffffffffffffffff1614612387576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237e90617042565b60405180910390fd5b6069600082815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001606860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46125138383836001613681565b505050565b612529816125246120c9565b613693565b50565b6125368282611b73565b61260a57600161012d600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506125af6120c9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45b5050565b6000612618613718565b905090565b6126278282611b73565b156126fc57600061012d600084815260200190815260200160002060000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506126a16120c9565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45b5050565b600061272e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61377c565b60000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f189ab7a9244df0848122154315af71fe140f3db0fe014031783b0946b8c9d2e361278181612518565b5050565b6127b17f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd914360001b613786565b60000160009054906101000a900460ff16156127d5576127d083613790565b6128ee565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801561283d57506040513d601f19601f8201168201806040525081019061283a9190617109565b60015b61287c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612873906171a8565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b81146128e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128d89061723a565b60405180910390fd5b506128ed838383613849565b5b505050565b600063ffffffff801682111561293e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612935906172cc565b60405180910390fd5b819050919050565b6000808360000180549050905060008082905060058311156129c857600061296d84613875565b84612978919061731b565b9050612987876000018261396e565b60000160009054906101000a900463ffffffff1663ffffffff168663ffffffff1610156129b6578091506129c6565b6001816129c3919061734f565b92505b505b60006129d987600001878585613983565b905060008114612a2d576129fc876000016001836129f7919061731b565b61396e565b60000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16612a30565b60005b94505050505092915050565b612a446139f6565b600060fb60006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612a886120c9565b604051612a959190615d94565b60405180910390a1565b612aa881613a3f565b50565b6000612ab68361149c565b9050816101c560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4612bbb8183612bb686613a92565b613aa4565b505050565b60006067600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600081600001549050919050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600060019054906101000a900460ff16612c7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c74906173f5565b60405180910390fd5b612c878282613d27565b5050565b600060019054906101000a900460ff16612cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd1906173f5565b60405180910390fd5b565b600060019054906101000a900460ff16612d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d22906173f5565b60405180910390fd5b565b600060019054906101000a900460ff16612d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d73906173f5565b60405180910390fd5b612d84613d9a565b565b600060019054906101000a900460ff16612dd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dcc906173f5565b60405180910390fd5b565b600060019054906101000a900460ff16612e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1d906173f5565b60405180910390fd5b565b600060019054906101000a900460ff16612e77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6e906173f5565b60405180910390fd5b612e818282613e06565b5050565b600060019054906101000a900460ff16612ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ecb906173f5565b60405180910390fd5b565b600060019054906101000a900460ff16612f25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1c906173f5565b60405180910390fd5b565b612f2f613e91565b600160fb60006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612f736120c9565b604051612f809190615d94565b60405180910390a1565b60606101938054612f9a906165fd565b80601f0160208091040260200160405190810160405280929190818152602001828054612fc6906165fd565b80156130135780601f10612fe857610100808354040283529160200191613013565b820191906000526020600020905b815481529060010190602001808311612ff657829003601f168201915b5050505050905090565b6060610194805461302d906165fd565b80601f0160208091040260200160405190810160405280929190818152602001828054613059906165fd565b80156130a65780601f1061307b576101008083540402835291602001916130a6565b820191906000526020600020905b81548152906001019060200180831161308957829003601f168201915b5050505050905090565b600065ffffffffffff80168211156130fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130f490617487565b60405180910390fd5b819050919050565b6000808260000180549050905060008114613164576131338360000160018361312e919061731b565b61396e565b60000160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613167565b60005b915050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131d4906174f3565b60405180910390fd5b80606a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516132ce9190615c23565b60405180910390a3505050565b6132e684848461221f565b6132f284848484613edb565b613331576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161332890617585565b60405180910390fd5b50505050565b600061334a61334461260e565b83614062565b9050919050565b6000806000613362878787876140a3565b9150915061336f81614185565b8192505050949350505050565b6000806101c860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506133ca81612bfd565b91506133d5816134ed565b50919050565b60606133e68261207e565b600060c960008481526020019081526020016000208054613406906165fd565b80601f0160208091040260200160405190810160405280929190818152602001828054613432906165fd565b801561347f5780601f106134545761010080835404028352916020019161347f565b820191906000526020600020905b81548152906001019060200180831161346257829003601f168201915b5050505050905060006134906142eb565b905060008151036134a55781925050506134e8565b6000825111156134da5780826040516020016134c29291906175e1565b604051602081830303815290604052925050506134e8565b6134e384614302565b925050505b919050565b6001816000016000828254019250508190555050565b61351d82826040518060200160405280600081525061436a565b5050565b61352a82613626565b613569576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161356090617677565b60405180910390fd5b8060c9600084815260200190815260200160002090816135899190617839565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce7826040516135b99190615e2a565b60405180910390a15050565b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061361f575061361e826143c5565b5b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff1661364883612bc0565b73ffffffffffffffffffffffffffffffffffffffff1614159050919050565b61366f613e91565b61367b8484848461443f565b50505050565b61368d8484848461459d565b50505050565b61369d8282611b73565b613714576136aa816145ba565b6136b88360001c60206145e7565b6040516020016136c99291906179a3565b6040516020818303038152906040526040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370b9190615cce565b60405180910390fd5b5050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f613743614823565b61374b61488f565b46306040516020016137619594939291906179dd565b60405160208183030381529060405280519060200120905090565b6000819050919050565b6000819050919050565b61379981612c0b565b6137d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137cf90617aa2565b60405180910390fd5b806138057f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61377c565b60000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b613852836148fb565b60008251118061385f5750805b156138705761386e838361494a565b505b505050565b60008082036138875760009050613969565b6000600161389484614977565b901c6001901b905060018184816138ae576138ad617ac2565b5b048201901c905060018184816138c7576138c6617ac2565b5b048201901c905060018184816138e0576138df617ac2565b5b048201901c905060018184816138f9576138f8617ac2565b5b048201901c9050600181848161391257613911617ac2565b5b048201901c9050600181848161392b5761392a617ac2565b5b048201901c9050600181848161394457613943617ac2565b5b048201901c90506139658182858161395f5761395e617ac2565b5b04614a58565b9150505b919050565b60008260005281602060002001905092915050565b60005b818310156139eb57600061399a8484614a71565b90508463ffffffff166139ad878361396e565b60000160009054906101000a900463ffffffff1663ffffffff1611156139d5578092506139e5565b6001816139e2919061734f565b93505b50613986565b819050949350505050565b6139fe611520565b613a3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613a3490617b3d565b60405180910390fd5b565b613a4881614a97565b600060c960008381526020019081526020016000208054613a68906165fd565b905014613a8f5760c960008281526020019081526020016000206000613a8e9190615b12565b5b50565b6000613a9d826115bd565b9050919050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015613ae05750600081115b15613d2257600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614613c0357600080613b706101c660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020614be5613b6b86614bfb565b614c66565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691508473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051613bf8929190617b5d565b60405180910390a250505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614613d2157600080613c8e6101c660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020614cb6613c8986614bfb565b614c66565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1691508373ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a7248383604051613d16929190617b5d565b60405180910390a250505b5b505050565b600060019054906101000a900460ff16613d76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613d6d906173f5565b60405180910390fd5b8160659081613d859190617839565b508060669081613d959190617839565b505050565b600060019054906101000a900460ff16613de9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613de0906173f5565b60405180910390fd5b600060fb60006101000a81548160ff021916908315150217905550565b600060019054906101000a900460ff16613e55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e4c906173f5565b60405180910390fd5b816101939081613e659190617839565b50806101949081613e769190617839565b506000801b610191819055506000801b610192819055505050565b613e99611520565b15613ed9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ed090617bd2565b60405180910390fd5b565b6000613efc8473ffffffffffffffffffffffffffffffffffffffff16612c0b565b15614055578373ffffffffffffffffffffffffffffffffffffffff1663150b7a02613f256120c9565b8786866040518563ffffffff1660e01b8152600401613f479493929190617c47565b6020604051808303816000875af1925050508015613f8357506040513d601f19601f82011682018060405250810190613f809190617ca8565b60015b614005573d8060008114613fb3576040519150601f19603f3d011682016040523d82523d6000602084013e613fb8565b606091505b506000815103613ffd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ff490617585565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161491505061405a565b600190505b949350505050565b60006040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08360001c11156140de57600060039150915061417c565b6000600187878787604051600081526020016040526040516141039493929190617ce4565b6020604051602081039080840390855afa158015614125573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036141735760006001925092505061417c565b80600092509250505b94509492505050565b6000600481111561419957614198617d29565b5b8160048111156141ac576141ab617d29565b5b03156142e857600160048111156141c6576141c5617d29565b5b8160048111156141d9576141d8617d29565b5b03614219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161421090617da4565b60405180910390fd5b6002600481111561422d5761422c617d29565b5b8160048111156142405761423f617d29565b5b03614280576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161427790617e10565b60405180910390fd5b6003600481111561429457614293617d29565b5b8160048111156142a7576142a6617d29565b5b036142e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142de90617ea2565b60405180910390fd5b5b50565b606060405180602001604052806000815250905090565b606061430d8261207e565b60006143176142eb565b905060008151116143375760405180602001604052806000815250614362565b8061434184614ccc565b6040516020016143529291906175e1565b6040516020818303038152906040525b915050919050565b6143748383614d9a565b6143816000848484613edb565b6143c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016143b790617585565b60405180910390fd5b505050565b60007f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480614438575061443782614fb7565b5b9050919050565b61444b84848484615099565b600181111561448f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161448690617f34565b60405180910390fd5b6000829050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036144d6576144d18161509f565b614515565b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146145145761451385826150e8565b5b5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036145575761455281615255565b614596565b8473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614614595576145948482615326565b5b5b5050505050565b6145a88484836153a5565b6145b484848484615461565b50505050565b60606145e08273ffffffffffffffffffffffffffffffffffffffff16601460ff166145e7565b9050919050565b6060600060028360026145fa9190617f54565b614604919061734f565b67ffffffffffffffff81111561461d5761461c615f9c565b5b6040519080825280601f01601f19166020018201604052801561464f5781602001600182028036833780820191505090505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061468757614686616b96565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106146eb576146ea616b96565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053506000600184600261472b9190617f54565b614735919061734f565b90505b60018111156147d5577f3031323334353637383961626364656600000000000000000000000000000000600f86166010811061477757614776616b96565b5b1a60f81b82828151811061478e5761478d616b96565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600485901c9450806147ce90617f96565b9050614738565b5060008414614819576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016148109061800b565b60405180910390fd5b8091505092915050565b60008061482e612f8a565b905060008151111561484a57808051906020012091505061488c565b60006101915490506000801b811461486657809250505061488c565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470925050505b90565b60008061489a61301d565b90506000815111156148b65780805190602001209150506148f8565b60006101925490506000801b81146148d25780925050506148f8565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470925050505b90565b61490481613790565b8073ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a250565b606061496f83836040518060600160405280602781526020016183e960279139615467565b905092915050565b600080600090506000608084901c111561499957608083901c92506080810190505b6000604084901c11156149b457604083901c92506040810190505b6000602084901c11156149cf57602083901c92506020810190505b6000601084901c11156149ea57601083901c92506010810190505b6000600884901c1115614a0557600883901c92506008810190505b6000600484901c1115614a2057600483901c92506004810190505b6000600284901c1115614a3b57600283901c92506002810190505b6000600184901c1115614a4f576001810190505b80915050919050565b6000818310614a675781614a69565b825b905092915050565b60006002828418614a82919061802b565b828416614a8f919061734f565b905092915050565b6000614aa282611537565b9050614ab2816000846001613667565b614abb82611537565b90506069600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001606860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055506067600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905581600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4614be1816000846001613681565b5050565b60008183614bf39190618084565b905092915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8016821115614c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614c5590618146565b60405180910390fd5b819050919050565b600080614caa614c84614c77611bdf565b65ffffffffffff166128f3565b614c9a614c9088613105565b868863ffffffff16565b876154ed9092919063ffffffff16565b91509150935093915050565b60008183614cc49190618166565b905092915050565b606060006001614cdb8461550a565b01905060008167ffffffffffffffff811115614cfa57614cf9615f9c565b5b6040519080825280601f01601f191660200182016040528015614d2c5781602001600182028036833780820191505090505b509050600082602001820190505b600115614d8f578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581614d8357614d82617ac2565b5b04945060008503614d3a575b819350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603614e09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614e0090618202565b60405180910390fd5b614e1281613626565b15614e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614e499061826e565b60405180910390fd5b614e60600083836001613667565b614e6981613626565b15614ea9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614ea09061826e565b60405180910390fd5b6001606860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550816067600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550808273ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4614fb3600083836001613681565b5050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061508257507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061509257506150918261565d565b5b9050919050565b50505050565b609980549050609a600083815260200190815260200160002081905550609981908060018154018082558091505060019003906000526020600020016000909190919091505550565b600060016150f5846115bd565b6150ff919061731b565b90506000609860008481526020019081526020016000205490508181146151e4576000609760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054905080609760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002081905550816098600083815260200190815260200160002081905550505b6098600084815260200190815260200160002060009055609760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008381526020019081526020016000206000905550505050565b60006001609980549050615269919061731b565b90506000609a600084815260200190815260200160002054905060006099838154811061529957615298616b96565b5b9060005260206000200154905080609983815481106152bb576152ba616b96565b5b906000526020600020018190555081609a600083815260200190815260200160002081905550609a600085815260200190815260200160002060009055609980548061530a5761530961828e565b5b6001900381819060005260206000200160009055905550505050565b6000615331836115bd565b905081609760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600083815260200190815260200160002081905550806098600084815260200190815260200160002081905550505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036153f3576153f06101c7614cb66153eb84614bfb565b614c66565b50505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036154415761543e6101c7614be561543984614bfb565b614c66565b50505b61545c61544d8461149c565b6154568461149c565b83613aa4565b505050565b50505050565b60606000808573ffffffffffffffffffffffffffffffffffffffff168560405161549191906182f9565b600060405180830381855af49150503d80600081146154cc576040519150601f19603f3d011682016040523d82523d6000602084013e6154d1565b606091505b50915091506154e2868383876156c7565b925050509392505050565b6000806154fe85600001858561573c565b91509150935093915050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310615568577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161555e5761555d617ac2565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106155a5576d04ee2d6d415b85acef8100000000838161559b5761559a617ac2565b5b0492506020810190505b662386f26fc1000083106155d457662386f26fc1000083816155ca576155c9617ac2565b5b0492506010810190505b6305f5e10083106155fd576305f5e10083816155f3576155f2617ac2565b5b0492506008810190505b612710831061562257612710838161561857615617617ac2565b5b0492506004810190505b60648310615645576064838161563b5761563a617ac2565b5b0492506002810190505b600a8310615654576001810190505b80915050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60608315615729576000835103615721576156e185612c0b565b615720576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016157179061835c565b60405180910390fd5b5b829050615734565b6157338383615ac2565b5b949350505050565b60008060008580549050905060008111156159d257600061576987600184615764919061731b565b61396e565b6040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160049054906101000a90047bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152505090508563ffffffff16816000015163ffffffff16111561585d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615854906183c8565b60405180910390fd5b8563ffffffff16816000015163ffffffff16036158e1578461588b88600185615886919061731b565b61396e565b60000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1602179055506159c1565b8660405180604001604052808863ffffffff168152602001877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16021790555050505b806020015185935093505050615aba565b8560405180604001604052808763ffffffff168152602001867bffffffffffffffffffffffffffffffffffffffffffffffffffffffff168152509080600181540180825580915050600190039060005260206000200160009091909190915060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff02191690837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff160217905550505060008492509250505b935093915050565b600082511115615ad55781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401615b099190615cce565b60405180910390fd5b508054615b1e906165fd565b6000825580601f10615b305750615b4f565b601f016020900490600052602060002090810190615b4e9190615b52565b5b50565b5b80821115615b6b576000816000905550600101615b53565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b615bb881615b83565b8114615bc357600080fd5b50565b600081359050615bd581615baf565b92915050565b600060208284031215615bf157615bf0615b79565b5b6000615bff84828501615bc6565b91505092915050565b60008115159050919050565b615c1d81615c08565b82525050565b6000602082019050615c386000830184615c14565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015615c78578082015181840152602081019050615c5d565b60008484015250505050565b6000601f19601f8301169050919050565b6000615ca082615c3e565b615caa8185615c49565b9350615cba818560208601615c5a565b615cc381615c84565b840191505092915050565b60006020820190508181036000830152615ce88184615c95565b905092915050565b6000819050919050565b615d0381615cf0565b8114615d0e57600080fd5b50565b600081359050615d2081615cfa565b92915050565b600060208284031215615d3c57615d3b615b79565b5b6000615d4a84828501615d11565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000615d7e82615d53565b9050919050565b615d8e81615d73565b82525050565b6000602082019050615da96000830184615d85565b92915050565b615db881615d73565b8114615dc357600080fd5b50565b600081359050615dd581615daf565b92915050565b60008060408385031215615df257615df1615b79565b5b6000615e0085828601615dc6565b9250506020615e1185828601615d11565b9150509250929050565b615e2481615cf0565b82525050565b6000602082019050615e3f6000830184615e1b565b92915050565b600080600060608486031215615e5e57615e5d615b79565b5b6000615e6c86828701615dc6565b9350506020615e7d86828701615dc6565b9250506040615e8e86828701615d11565b9150509250925092565b6000819050919050565b615eab81615e98565b8114615eb657600080fd5b50565b600081359050615ec881615ea2565b92915050565b600060208284031215615ee457615ee3615b79565b5b6000615ef284828501615eb9565b91505092915050565b615f0481615e98565b82525050565b6000602082019050615f1f6000830184615efb565b92915050565b60008060408385031215615f3c57615f3b615b79565b5b6000615f4a85828601615eb9565b9250506020615f5b85828601615dc6565b9150509250929050565b600060208284031215615f7b57615f7a615b79565b5b6000615f8984828501615dc6565b91505092915050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b615fd482615c84565b810181811067ffffffffffffffff82111715615ff357615ff2615f9c565b5b80604052505050565b6000616006615b6f565b90506160128282615fcb565b919050565b600067ffffffffffffffff82111561603257616031615f9c565b5b61603b82615c84565b9050602081019050919050565b82818337600083830152505050565b600061606a61606584616017565b615ffc565b90508281526020810184848401111561608657616085615f97565b5b616091848285616048565b509392505050565b600082601f8301126160ae576160ad615f92565b5b81356160be848260208601616057565b91505092915050565b600080604083850312156160de576160dd615b79565b5b60006160ec85828601615dc6565b925050602083013567ffffffffffffffff81111561610d5761610c615b7e565b5b61611985828601616099565b9150509250929050565b60007fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b61615881616123565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61619381615cf0565b82525050565b60006161a5838361618a565b60208301905092915050565b6000602082019050919050565b60006161c98261615e565b6161d38185616169565b93506161de8361617a565b8060005b8381101561620f5781516161f68882616199565b9750616201836161b1565b9250506001810190506161e2565b5085935050505092915050565b600060e082019050616231600083018a61614f565b81810360208301526162438189615c95565b905081810360408301526162578188615c95565b90506162666060830187615e1b565b6162736080830186615d85565b61628060a0830185615efb565b81810360c083015261629281846161be565b905098975050505050505050565b600065ffffffffffff82169050919050565b6162bb816162a0565b82525050565b60006020820190506162d660008301846162b2565b92915050565b6162e581615c08565b81146162f057600080fd5b50565b600081359050616302816162dc565b92915050565b6000806040838503121561631f5761631e615b79565b5b600061632d85828601615dc6565b925050602061633e858286016162f3565b9150509250929050565b6000806000806080858703121561636257616361615b79565b5b600061637087828801615dc6565b945050602061638187828801615dc6565b935050604061639287828801615d11565b925050606085013567ffffffffffffffff8111156163b3576163b2615b7e565b5b6163bf87828801616099565b91505092959194509250565b600060ff82169050919050565b6163e1816163cb565b81146163ec57600080fd5b50565b6000813590506163fe816163d8565b92915050565b60008060008060008060c0878903121561642157616420615b79565b5b600061642f89828a01615dc6565b965050602061644089828a01615d11565b955050604061645189828a01615d11565b945050606061646289828a016163ef565b935050608061647389828a01615eb9565b92505060a061648489828a01615eb9565b9150509295509295509295565b600067ffffffffffffffff8211156164ac576164ab615f9c565b5b6164b582615c84565b9050602081019050919050565b60006164d56164d084616491565b615ffc565b9050828152602081018484840111156164f1576164f0615f97565b5b6164fc848285616048565b509392505050565b600082601f83011261651957616518615f92565b5b81356165298482602086016164c2565b91505092915050565b6000806040838503121561654957616548615b79565b5b600061655785828601615dc6565b925050602083013567ffffffffffffffff81111561657857616577615b7e565b5b61658485828601616504565b9150509250929050565b600080604083850312156165a5576165a4615b79565b5b60006165b385828601615dc6565b92505060206165c485828601615dc6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061661557607f821691505b602082108103616628576166276165ce565b5b50919050565b7f4552433732313a20617070726f76616c20746f2063757272656e74206f776e6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061668a602183615c49565b91506166958261662e565b604082019050919050565b600060208201905081810360008301526166b98161667d565b9050919050565b7f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60008201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c000000602082015250565b600061671c603d83615c49565b9150616727826166c0565b604082019050919050565b6000602082019050818103600083015261674b8161670f565b9050919050565b7f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560008201527f72206f7220617070726f76656400000000000000000000000000000000000000602082015250565b60006167ae602d83615c49565b91506167b982616752565b604082019050919050565b600060208201905081810360008301526167dd816167a1565b9050919050565b7f455243373231456e756d657261626c653a206f776e657220696e646578206f7560008201527f74206f6620626f756e6473000000000000000000000000000000000000000000602082015250565b6000616840602b83615c49565b915061684b826167e4565b604082019050919050565b6000602082019050818103600083015261686f81616833565b9050919050565b7f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560008201527f20726f6c657320666f722073656c660000000000000000000000000000000000602082015250565b60006168d2602f83615c49565b91506168dd82616876565b604082019050919050565b60006020820190508181036000830152616901816168c5565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f64656c656761746563616c6c0000000000000000000000000000000000000000602082015250565b6000616964602c83615c49565b915061696f82616908565b604082019050919050565b6000602082019050818103600083015261699381616957565b9050919050565b7f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060008201527f6163746976652070726f78790000000000000000000000000000000000000000602082015250565b60006169f6602c83615c49565b9150616a018261699a565b604082019050919050565b60006020820190508181036000830152616a25816169e9565b9050919050565b7f566f7465733a20667574757265206c6f6f6b7570000000000000000000000000600082015250565b6000616a62601483615c49565b9150616a6d82616a2c565b602082019050919050565b60006020820190508181036000830152616a9181616a55565b9050919050565b7f566f7465733a2062726f6b656e20636c6f636b206d6f64650000000000000000600082015250565b6000616ace601883615c49565b9150616ad982616a98565b602082019050919050565b60006020820190508181036000830152616afd81616ac1565b9050919050565b7f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60008201527f7574206f6620626f756e64730000000000000000000000000000000000000000602082015250565b6000616b60602c83615c49565b9150616b6b82616b04565b604082019050919050565b60006020820190508181036000830152616b8f81616b53565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f555550535570677261646561626c653a206d757374206e6f742062652063616c60008201527f6c6564207468726f7567682064656c656761746563616c6c0000000000000000602082015250565b6000616c21603883615c49565b9150616c2c82616bc5565b604082019050919050565b60006020820190508181036000830152616c5081616c14565b9050919050565b7f4552433732313a20696e76616c696420746f6b656e2049440000000000000000600082015250565b6000616c8d601883615c49565b9150616c9882616c57565b602082019050919050565b60006020820190508181036000830152616cbc81616c80565b9050919050565b7f4552433732313a2061646472657373207a65726f206973206e6f74206120766160008201527f6c6964206f776e65720000000000000000000000000000000000000000000000602082015250565b6000616d1f602983615c49565b9150616d2a82616cc3565b604082019050919050565b60006020820190508181036000830152616d4e81616d12565b9050919050565b7f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160008201527f647920696e697469616c697a6564000000000000000000000000000000000000602082015250565b6000616db1602e83615c49565b9150616dbc82616d55565b604082019050919050565b60006020820190508181036000830152616de081616da4565b9050919050565b6000819050919050565b6000819050919050565b6000616e16616e11616e0c84616de7565b616df1565b6163cb565b9050919050565b616e2681616dfb565b82525050565b6000602082019050616e416000830184616e1d565b92915050565b7f4549503731323a20556e696e697469616c697a65640000000000000000000000600082015250565b6000616e7d601583615c49565b9150616e8882616e47565b602082019050919050565b60006020820190508181036000830152616eac81616e70565b9050919050565b7f566f7465733a207369676e617475726520657870697265640000000000000000600082015250565b6000616ee9601883615c49565b9150616ef482616eb3565b602082019050919050565b60006020820190508181036000830152616f1881616edc565b9050919050565b6000608082019050616f346000830187615efb565b616f416020830186615d85565b616f4e6040830185615e1b565b616f5b6060830184615e1b565b95945050505050565b7f566f7465733a20696e76616c6964206e6f6e6365000000000000000000000000600082015250565b6000616f9a601483615c49565b9150616fa582616f64565b602082019050919050565b60006020820190508181036000830152616fc981616f8d565b9050919050565b7f4552433732313a207472616e736665722066726f6d20696e636f72726563742060008201527f6f776e6572000000000000000000000000000000000000000000000000000000602082015250565b600061702c602583615c49565b915061703782616fd0565b604082019050919050565b6000602082019050818103600083015261705b8161701f565b9050919050565b7f4552433732313a207472616e7366657220746f20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006170be602483615c49565b91506170c982617062565b604082019050919050565b600060208201905081810360008301526170ed816170b1565b9050919050565b60008151905061710381615ea2565b92915050565b60006020828403121561711f5761711e615b79565b5b600061712d848285016170f4565b91505092915050565b7f45524331393637557067726164653a206e657720696d706c656d656e7461746960008201527f6f6e206973206e6f742055555053000000000000000000000000000000000000602082015250565b6000617192602e83615c49565b915061719d82617136565b604082019050919050565b600060208201905081810360008301526171c181617185565b9050919050565b7f45524331393637557067726164653a20756e737570706f727465642070726f7860008201527f6961626c65555549440000000000000000000000000000000000000000000000602082015250565b6000617224602983615c49565b915061722f826171c8565b604082019050919050565b6000602082019050818103600083015261725381617217565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203360008201527f3220626974730000000000000000000000000000000000000000000000000000602082015250565b60006172b6602683615c49565b91506172c18261725a565b604082019050919050565b600060208201905081810360008301526172e5816172a9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061732682615cf0565b915061733183615cf0565b9250828203905081811115617349576173486172ec565b5b92915050565b600061735a82615cf0565b915061736583615cf0565b925082820190508082111561737d5761737c6172ec565b5b92915050565b7f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960008201527f6e697469616c697a696e67000000000000000000000000000000000000000000602082015250565b60006173df602b83615c49565b91506173ea82617383565b604082019050919050565b6000602082019050818103600083015261740e816173d2565b9050919050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203460008201527f3820626974730000000000000000000000000000000000000000000000000000602082015250565b6000617471602683615c49565b915061747c82617415565b604082019050919050565b600060208201905081810360008301526174a081617464565b9050919050565b7f4552433732313a20617070726f766520746f2063616c6c657200000000000000600082015250565b60006174dd601983615c49565b91506174e8826174a7565b602082019050919050565b6000602082019050818103600083015261750c816174d0565b9050919050565b7f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560008201527f63656976657220696d706c656d656e7465720000000000000000000000000000602082015250565b600061756f603283615c49565b915061757a82617513565b604082019050919050565b6000602082019050818103600083015261759e81617562565b9050919050565b600081905092915050565b60006175bb82615c3e565b6175c581856175a5565b93506175d5818560208601615c5a565b80840191505092915050565b60006175ed82856175b0565b91506175f982846175b0565b91508190509392505050565b7f45524337323155524953746f726167653a2055524920736574206f66206e6f6e60008201527f6578697374656e7420746f6b656e000000000000000000000000000000000000602082015250565b6000617661602e83615c49565b915061766c82617605565b604082019050919050565b6000602082019050818103600083015261769081617654565b9050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026176f97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826176bc565b61770386836176bc565b95508019841693508086168417925050509392505050565b600061773661773161772c84615cf0565b616df1565b615cf0565b9050919050565b6000819050919050565b6177508361771b565b61776461775c8261773d565b8484546176c9565b825550505050565b600090565b61777961776c565b617784818484617747565b505050565b5b818110156177a85761779d600082617771565b60018101905061778a565b5050565b601f8211156177ed576177be81617697565b6177c7846176ac565b810160208510156177d6578190505b6177ea6177e2856176ac565b830182617789565b50505b505050565b600082821c905092915050565b6000617810600019846008026177f2565b1980831691505092915050565b600061782983836177ff565b9150826002028217905092915050565b61784282615c3e565b67ffffffffffffffff81111561785b5761785a615f9c565b5b61786582546165fd565b6178708282856177ac565b600060209050601f8311600181146178a35760008415617891578287015190505b61789b858261781d565b865550617903565b601f1984166178b186617697565b60005b828110156178d9578489015182556001820191506020850194506020810190506178b4565b868310156178f657848901516178f2601f8916826177ff565b8355505b6001600288020188555050505b505050505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000600082015250565b60006179416017836175a5565b915061794c8261790b565b601782019050919050565b7f206973206d697373696e6720726f6c6520000000000000000000000000000000600082015250565b600061798d6011836175a5565b915061799882617957565b601182019050919050565b60006179ae82617934565b91506179ba82856175b0565b91506179c582617980565b91506179d182846175b0565b91508190509392505050565b600060a0820190506179f26000830188615efb565b6179ff6020830187615efb565b617a0c6040830186615efb565b617a196060830185615e1b565b617a266080830184615d85565b9695505050505050565b7f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60008201527f6f74206120636f6e747261637400000000000000000000000000000000000000602082015250565b6000617a8c602d83615c49565b9150617a9782617a30565b604082019050919050565b60006020820190508181036000830152617abb81617a7f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b6000617b27601483615c49565b9150617b3282617af1565b602082019050919050565b60006020820190508181036000830152617b5681617b1a565b9050919050565b6000604082019050617b726000830185615e1b565b617b7f6020830184615e1b565b9392505050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000617bbc601083615c49565b9150617bc782617b86565b602082019050919050565b60006020820190508181036000830152617beb81617baf565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000617c1982617bf2565b617c238185617bfd565b9350617c33818560208601615c5a565b617c3c81615c84565b840191505092915050565b6000608082019050617c5c6000830187615d85565b617c696020830186615d85565b617c766040830185615e1b565b8181036060830152617c888184617c0e565b905095945050505050565b600081519050617ca281615baf565b92915050565b600060208284031215617cbe57617cbd615b79565b5b6000617ccc84828501617c93565b91505092915050565b617cde816163cb565b82525050565b6000608082019050617cf96000830187615efb565b617d066020830186617cd5565b617d136040830185615efb565b617d206060830184615efb565b95945050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f45434453413a20696e76616c6964207369676e61747572650000000000000000600082015250565b6000617d8e601883615c49565b9150617d9982617d58565b602082019050919050565b60006020820190508181036000830152617dbd81617d81565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265206c656e67746800600082015250565b6000617dfa601f83615c49565b9150617e0582617dc4565b602082019050919050565b60006020820190508181036000830152617e2981617ded565b9050919050565b7f45434453413a20696e76616c6964207369676e6174757265202773272076616c60008201527f7565000000000000000000000000000000000000000000000000000000000000602082015250565b6000617e8c602283615c49565b9150617e9782617e30565b604082019050919050565b60006020820190508181036000830152617ebb81617e7f565b9050919050565b7f455243373231456e756d657261626c653a20636f6e736563757469766520747260008201527f616e7366657273206e6f7420737570706f727465640000000000000000000000602082015250565b6000617f1e603583615c49565b9150617f2982617ec2565b604082019050919050565b60006020820190508181036000830152617f4d81617f11565b9050919050565b6000617f5f82615cf0565b9150617f6a83615cf0565b9250828202617f7881615cf0565b91508282048414831517617f8f57617f8e6172ec565b5b5092915050565b6000617fa182615cf0565b915060008203617fb457617fb36172ec565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e74600082015250565b6000617ff5602083615c49565b915061800082617fbf565b602082019050919050565b6000602082019050818103600083015261802481617fe8565b9050919050565b600061803682615cf0565b915061804183615cf0565b92508261805157618050617ac2565b5b828204905092915050565b60007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff82169050919050565b600061808f8261805c565b915061809a8361805c565b925082820390507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111156180ce576180cd6172ec565b5b92915050565b7f53616665436173743a2076616c756520646f65736e27742066697420696e203260008201527f3234206269747300000000000000000000000000000000000000000000000000602082015250565b6000618130602783615c49565b915061813b826180d4565b604082019050919050565b6000602082019050818103600083015261815f81618123565b9050919050565b60006181718261805c565b915061817c8361805c565b925082820190507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8111156181b0576181af6172ec565b5b92915050565b7f4552433732313a206d696e7420746f20746865207a65726f2061646472657373600082015250565b60006181ec602083615c49565b91506181f7826181b6565b602082019050919050565b6000602082019050818103600083015261821b816181df565b9050919050565b7f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000600082015250565b6000618258601c83615c49565b915061826382618222565b602082019050919050565b600060208201905081810360008301526182878161824b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b600081905092915050565b60006182d382617bf2565b6182dd81856182bd565b93506182ed818560208601615c5a565b80840191505092915050565b600061830582846182c8565b915081905092915050565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b6000618346601d83615c49565b915061835182618310565b602082019050919050565b6000602082019050818103600083015261837581618339565b9050919050565b7f436865636b706f696e743a2064656372656173696e67206b6579730000000000600082015250565b60006183b2601b83615c49565b91506183bd8261837c565b602082019050919050565b600060208201905081810360008301526183e1816183a5565b905091905056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122027122cf1c1e83a50f815a01df9709edd594d7db58b93d57375a11ff1bb630af764736f6c63430008120033