608060405260026008556000600d60006101000a81548160ff0219169083151502179055503480156200003157600080fd5b506040518060400160405280601781526020017f53686962617269756d204e6574776f726b20546f6b656e0000000000000000008152506040518060400160405280600981526020017f53484942415249554d00000000000000000000000000000000000000000000008152508160039081620000af919062000601565b508060049081620000c1919062000601565b50505060006a39a6e842a13c064184000090506200010a6103e8620000f6600184620001d860201b620025b71790919060201c565b620001f060201b620025cd1790919060201c565b600781905550620001206200020860201b60201c565b600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001706200020860201b60201c565b600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620001d1620001c46200020860201b60201c565b826200021060201b60201c565b50620008b5565b60008183620001e8919062000717565b905092915050565b6000818362000200919062000791565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000282576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000279906200082a565b60405180910390fd5b62000296600083836200037d60201b60201c565b8060026000828254620002aa91906200084c565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200035d919062000898565b60405180910390a362000379600083836200038260201b60201c565b5050565b505050565b505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200040957607f821691505b6020821081036200041f576200041e620003c1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620004897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200044a565b6200049586836200044a565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620004e2620004dc620004d684620004ad565b620004b7565b620004ad565b9050919050565b6000819050919050565b620004fe83620004c1565b620005166200050d82620004e9565b84845462000457565b825550505050565b600090565b6200052d6200051e565b6200053a818484620004f3565b505050565b5b8181101562000562576200055660008262000523565b60018101905062000540565b5050565b601f821115620005b1576200057b8162000425565b62000586846200043a565b8101602085101562000596578190505b620005ae620005a5856200043a565b8301826200053f565b50505b505050565b600082821c905092915050565b6000620005d660001984600802620005b6565b1980831691505092915050565b6000620005f18383620005c3565b9150826002028217905092915050565b6200060c8262000387565b67ffffffffffffffff81111562000628576200062762000392565b5b620006348254620003f0565b6200064182828562000566565b600060209050601f83116001811462000679576000841562000664578287015190505b620006708582620005e3565b865550620006e0565b601f198416620006898662000425565b60005b82811015620006b3578489015182556001820191506020850194506020810190506200068c565b86831015620006d35784890151620006cf601f891682620005c3565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006200072482620004ad565b91506200073183620004ad565b92508282026200074181620004ad565b915082820484148315176200075b576200075a620006e8565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200079e82620004ad565b9150620007ab83620004ad565b925082620007be57620007bd62000762565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000812601f83620007c9565b91506200081f82620007da565b602082019050919050565b60006020820190508181036000830152620008458162000803565b9050919050565b60006200085982620004ad565b91506200086683620004ad565b9250828201905080821115620008815762000880620006e8565b5b92915050565b6200089281620004ad565b82525050565b6000602082019050620008af600083018462000887565b92915050565b61438280620008c56000396000f3fe60806040526004361061021e5760003560e01c80637c09ba5811610123578063a8ba5c3c116100ab578063c5bf9bc81161006f578063c5bf9bc814610851578063d424ad9e1461087c578063d54ad2a1146108a7578063dd62ed3e146108d2578063fb87a6351461090f57610225565b8063a8ba5c3c14610758578063a9059cbb14610783578063b1a952c0146107c0578063c34c08e5146107e9578063c352a2c21461081457610225565b80638fa2ecf5116100f25780638fa2ecf51461066157806395d4063f1461069e57806395d89b41146106c7578063960bfe04146106f2578063a457c2d71461071b57610225565b80637c09ba58146105a2578063817b1cd2146105cb57806383919f6f146105f657806387a021721461063857610225565b806323b872dd116101a6578063441f67c711610175578063441f67c7146104975780636b7aee29146104d457806370a08231146105115780637796ff371461054e5780637b6bb9c21461057957610225565b806323b872dd146103c9578063313ce5671461040657806339509351146104315780633b51e5cf1461046e57610225565b8063095ea7b3116101ed578063095ea7b3146102e457806310087fb11461032157806318160ddd1461034a5780631c3c0ea8146103755780631cfff51b1461039e57610225565b8063014f4c171461022a578063043c96931461025357806306fdde031461027c578063087040bf146102a757610225565b3661022557005b600080fd5b34801561023657600080fd5b50610251600480360381019061024c9190613161565b610951565b005b34801561025f57600080fd5b5061027a600480360381019061027591906131da565b610a43565b005b34801561028857600080fd5b50610291610c8b565b60405161029e9190613297565b60405180910390f35b3480156102b357600080fd5b506102ce60048036038101906102c991906132f4565b610d1d565b6040516102db919061334d565b60405180910390f35b3480156102f057600080fd5b5061030b60048036038101906103069190613394565b610fa6565b60405161031891906133e3565b60405180910390f35b34801561032d57600080fd5b50610348600480360381019061034391906133fe565b610fc9565b005b34801561035657600080fd5b5061035f611449565b60405161036c919061334d565b60405180910390f35b34801561038157600080fd5b5061039c6004803603810190610397919061343e565b611453565b005b3480156103aa57600080fd5b506103b361152e565b6040516103c091906133e3565b60405180910390f35b3480156103d557600080fd5b506103f060048036038101906103eb919061346b565b611541565b6040516103fd91906133e3565b60405180910390f35b34801561041257600080fd5b5061041b611570565b60405161042891906134cd565b60405180910390f35b34801561043d57600080fd5b5061045860048036038101906104539190613394565b611579565b60405161046591906133e3565b60405180910390f35b34801561047a57600080fd5b50610495600480360381019061049091906134e8565b6115b0565b005b3480156104a357600080fd5b506104be60048036038101906104b99190613515565b611664565b6040516104cb91906133e3565b60405180910390f35b3480156104e057600080fd5b506104fb60048036038101906104f6919061343e565b611716565b60405161050891906133e3565b60405180910390f35b34801561051d57600080fd5b506105386004803603810190610533919061343e565b611736565b604051610545919061334d565b60405180910390f35b34801561055a57600080fd5b5061056361177e565b604051610570919061334d565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b9190613555565b611784565b005b3480156105ae57600080fd5b506105c960048036038101906105c4919061343e565b6119d5565b005b3480156105d757600080fd5b506105e0611ab0565b6040516105ed919061334d565b60405180910390f35b34801561060257600080fd5b5061061d60048036038101906106189190613515565b611ab6565b60405161062f969594939291906135a4565b60405180910390f35b34801561064457600080fd5b5061065f600480360381019061065a91906131da565b611b1f565b005b34801561066d57600080fd5b5061068860048036038101906106839190613515565b611e11565b604051610695919061334d565b60405180910390f35b3480156106aa57600080fd5b506106c560048036038101906106c091906131da565b611e75565b005b3480156106d357600080fd5b506106dc6120a3565b6040516106e99190613297565b60405180910390f35b3480156106fe57600080fd5b5061071960048036038101906107149190613605565b612135565b005b34801561072757600080fd5b50610742600480360381019061073d9190613394565b612282565b60405161074f91906133e3565b60405180910390f35b34801561076457600080fd5b5061076d6122f9565b60405161077a9190613632565b60405180910390f35b34801561078f57600080fd5b506107aa60048036038101906107a59190613394565b61231f565b6040516107b791906133e3565b60405180910390f35b3480156107cc57600080fd5b506107e760048036038101906107e29190613555565b612342565b005b3480156107f557600080fd5b506107fe612412565b60405161080b9190613632565b60405180910390f35b34801561082057600080fd5b5061083b60048036038101906108369190613515565b612438565b604051610848919061334d565b60405180910390f35b34801561085d57600080fd5b506108666124c8565b604051610873919061334d565b60405180910390f35b34801561088857600080fd5b506108916124ce565b60405161089e919061334d565b60405180910390f35b3480156108b357600080fd5b506108bc6124d4565b6040516108c9919061334d565b60405180910390f35b3480156108de57600080fd5b506108f960048036038101906108f4919061364d565b6124da565b604051610906919061334d565b60405180910390f35b34801561091b57600080fd5b50610936600480360381019061093191906131da565b612561565b6040516109489695949392919061368d565b60405180910390f35b6109596125e3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df9061373a565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600d60009054906101000a900460ff16610a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a89906137cc565b60405180910390fd5b806000600e60008360ff1660ff16815260200190815260200160002060000160019054906101000a900460ff1660ff1603610b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af990613838565b60405180910390fd5b610b0c3383611664565b610b4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b42906138a4565b60405180910390fd5b6000610b573384612438565b905080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff1681526020019081526020016000206004016000828254610bc291906138f3565b925050819055506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff1681526020019081526020016000206005018190555042600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff16815260200190815260200160002060010181905550505050565b606060038054610c9a90613956565b80601f0160208091040260200160405190810160405280929190818152602001828054610cc690613956565b8015610d135780601f10610ce857610100808354040283529160200191610d13565b820191906000526020600020905b815481529060010190602001808311610cf657829003601f168201915b5050505050905090565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610daf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610da6906139f9565b60405180910390fd5b60006009549050600754811015610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290613a65565b60405180910390fd5b600754811115610e0b5760075490505b610e1533826125eb565b610e343073e592427a0aece92de3edee1f18e0157c0586156483612741565b60006040518061010001604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018673ffffffffffffffffffffffffffffffffffffffff1681526020018562ffffff168152602001600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200142815260200183815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090508160096000828254610f059190613a85565b9250508190555073e592427a0aece92de3edee1f18e0157c0586156473ffffffffffffffffffffffffffffffffffffffff1663414bf389826040518263ffffffff1660e01b8152600401610f599190613b97565b6020604051808303816000875af1158015610f78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f9c9190613bc8565b9250505092915050565b600080610fb16125e3565b9050610fbe818585612741565b600191505092915050565b600d60009054906101000a900460ff16611018576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161100f906137cc565b60405180910390fd5b806000600e60008360ff1660ff16815260200190815260200160002060000160019054906101000a900460ff1660ff1603611088576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107f90613838565b60405180910390fd5b6000600e60008460ff1660ff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff168152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905061111c3384611664565b1561126d5761112b338461290a565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff168152602001908152602001600020600501600082825461119391906138f3565b9250508190555083600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff168152602001908152602001600020600301600082825461120391906138f3565b9250508190555042600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff1681526020019081526020016000206001018190555061139b565b6040518060c001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020014281526020016112b1836040015142612b9f90919063ffffffff16565b8152602001858152602001600081526020016000815250600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a082015181600501559050505b83600b60008282546113ad91906138f3565b9250508190555083600e60008560ff1660ff16815260200190815260200160002060030160008282546113e091906138f3565b925050819055506113f2333086611541565b503373ffffffffffffffffffffffffffffffffffffffff167f6fd834963a54b6cf49c9a5c48e8f947fb86c2fe1d4dbfdc73448cdb9b3985310848660405161143b929190613bf5565b60405180910390a250505050565b6000600254905090565b61145b6125e3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e19061373a565b60405180910390fd5b80600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d60009054906101000a900460ff1681565b60008061154c6125e3565b9050611559858285612bb5565b611564858585612c41565b60019150509392505050565b60006012905090565b6000806115846125e3565b90506115a581858561159685896124da565b6115a091906138f3565b612741565b600191505092915050565b6115b86125e3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e9061373a565b60405180910390fd5b80600d60006101000a81548160ff02191690831515021790555050565b60008273ffffffffffffffffffffffffffffffffffffffff16600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008460ff1660ff16815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614905092915050565b600a6020528060005260406000206000915054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60085481565b61178c6125e3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461181b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118129061373a565b60405180910390fd5b6000600e60008360ff1660ff168152602001908152602001600020600301541461187a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187190613c90565b60405180910390fd5b60008260ff16116118c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b790613d22565b60405180910390fd5b60006040518060c001604052808360ff1681526020018460ff1681526020016118f8620151808560ff166125b790919063ffffffff16565b815260200160008152602001600081526020016000815250905080600e60008460ff1660ff16815260200190815260200160002060008201518160000160006101000a81548160ff021916908360ff16021790555060208201518160000160016101000a81548160ff021916908360ff16021790555060408201518160010155606082015181600201556080820151816003015560a082015181600401559050507fd2f86ce9c03caccefe2ff4f5229d5b79d397adcabf9cfcfc3cc82c275a3f27d4826040516119c891906134cd565b60405180910390a1505050565b6119dd6125e3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a639061373a565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600f602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030154908060040154908060050154905086565b806000600e60008360ff1660ff16815260200190815260200160002060000160019054906101000a900460ff1660ff1603611b8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8690613838565b60405180910390fd5b611b993383611664565b611bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcf906138a4565b60405180910390fd5b6000611be43384612438565b90506000611bf23385611e11565b9050600d60009054906101000a900460ff1615611d0b57600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff16815260200190815260200160002060020154421015611ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9c90613db4565b60405180910390fd5b81600c6000828254611cb791906138f3565b9250508190555081600e60008660ff1660ff1681526020019081526020016000206004016000828254611cea91906138f3565b92505081905550611cfb33836125eb565b611d05338261231f565b50611d17565b611d15338261231f565b505b80600b6000828254611d299190613a85565b9250508190555080600e60008660ff1660ff1681526020019081526020016000206003016000828254611d5c9190613a85565b92505081905550600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff168152602001908152602001600020600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560018201600090556002820160009055600382016000905560048201600090556005820160009055505050505050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008360ff1660ff16815260200190815260200160002060030154905092915050565b600d60009054906101000a900460ff16611ec4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ebb906137cc565b60405180910390fd5b806000600e60008360ff1660ff16815260200190815260200160002060000160019054906101000a900460ff1660ff1603611f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2b90613838565b60405180910390fd5b611f3e3383611664565b611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f74906138a4565b60405180910390fd5b6000611f893384612438565b905080600c6000828254611f9d91906138f3565b9250508190555080600e60008560ff1660ff1681526020019081526020016000206004016000828254611fd091906138f3565b92505081905550611fe133826125eb565b42600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff168152602001908152602001600020600101819055506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff16815260200190815260200160002060050181905550505050565b6060600480546120b290613956565b80601f01602080910402602001604051908101604052809291908181526020018280546120de90613956565b801561212b5780601f106121005761010080835404028352916020019161212b565b820191906000526020600020905b81548152906001019060200180831161210e57829003601f168201915b5050505050905090565b61213d6125e3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c39061373a565b60405180910390fd5b6121fc620f42406121ee60016121e0611449565b6125b790919063ffffffff16565b6125cd90919063ffffffff16565b811015801561223957506122356127106122276005612219611449565b6125b790919063ffffffff16565b6125cd90919063ffffffff16565b8111155b612278576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226f90613e46565b60405180910390fd5b8060078190555050565b60008061228d6125e3565b9050600061229b82866124da565b9050838110156122e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d790613ed8565b60405180910390fd5b6122ed8286868403612741565b60019250505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061232a6125e3565b9050612337818585612c41565b600191505092915050565b61234a6125e3565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123d09061373a565b60405180910390fd5b81600e60008360ff1660ff16815260200190815260200160002060000160016101000a81548160ff021916908360ff1602179055505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080612445848461290a565b90506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008560ff1660ff16815260200190815260200160002060050154905060008111156124bd5780826124ba91906138f3565b91505b819250505092915050565b60075481565b60095481565b600c5481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e6020528060005260406000206000915090508060000160009054906101000a900460ff16908060000160019054906101000a900460ff16908060010154908060020154908060030154908060040154905086565b600081836125c59190613ef8565b905092915050565b600081836125db9190613f69565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361265a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265190613fe6565b60405180910390fd5b61266660008383612e30565b806002600082825461267891906138f3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612729919061334d565b60405180910390a361273d60008383612e35565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036127b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a790614078565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361281f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128169061410a565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516128fd919061334d565b60405180910390a3505050565b60006129168383611664565b612955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294c906138a4565b60405180910390fd5b60006129618484611e11565b9050600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008460ff1660ff16815260200190815260200160002060040154816129c891906138f3565b90506000612a396001600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008760ff1660ff168152602001908152602001600020600101546125cd90919063ffffffff16565b90506000612a516001426125cd90919063ffffffff16565b90506000612a688383612e3a90919063ffffffff16565b90506000600e60008860ff1660ff1681526020019081526020016000206040518060c00160405290816000820160009054906101000a900460ff1660ff1660ff1681526020016000820160019054906101000a900460ff1660ff1660ff16815260200160018201548152602001600282015481526020016003820154815260200160048201548152505090506000612b236064612b15846020015160ff16896125b790919063ffffffff16565b6125cd90919063ffffffff16565b90506000612b75603c612b67603c612b596018612b4b61016d896125cd90919063ffffffff16565b6125cd90919063ffffffff16565b6125cd90919063ffffffff16565b6125cd90919063ffffffff16565b90506000612b8c85836125b790919063ffffffff16565b9050809850505050505050505092915050565b60008183612bad91906138f3565b905092915050565b6000612bc184846124da565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114612c3b5781811015612c2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c2490614176565b60405180910390fd5b612c3a8484848403612741565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612cb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ca790614208565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d169061429a565b60405180910390fd5b60008103612d3857612d3383836000612e50565b612e2b565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612dd95750600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612e1f57612e066064612df8600854846125b790919063ffffffff16565b6125cd90919063ffffffff16565b60096000828254612e1791906138f3565b925050819055505b612e2a838383612e50565b5b505050565b505050565b505050565b60008183612e489190613a85565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612ebf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612eb690614208565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f259061429a565b60405180910390fd5b612f39838383612e30565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612fbf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fb69061432c565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516130ad919061334d565b60405180910390a36130c0848484612e35565b50505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006130f6826130cb565b9050919050565b613106816130eb565b811461311157600080fd5b50565b600081359050613123816130fd565b92915050565b60008115159050919050565b61313e81613129565b811461314957600080fd5b50565b60008135905061315b81613135565b92915050565b60008060408385031215613178576131776130c6565b5b600061318685828601613114565b92505060206131978582860161314c565b9150509250929050565b600060ff82169050919050565b6131b7816131a1565b81146131c257600080fd5b50565b6000813590506131d4816131ae565b92915050565b6000602082840312156131f0576131ef6130c6565b5b60006131fe848285016131c5565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613241578082015181840152602081019050613226565b60008484015250505050565b6000601f19601f8301169050919050565b600061326982613207565b6132738185613212565b9350613283818560208601613223565b61328c8161324d565b840191505092915050565b600060208201905081810360008301526132b1818461325e565b905092915050565b600062ffffff82169050919050565b6132d1816132b9565b81146132dc57600080fd5b50565b6000813590506132ee816132c8565b92915050565b6000806040838503121561330b5761330a6130c6565b5b600061331985828601613114565b925050602061332a858286016132df565b9150509250929050565b6000819050919050565b61334781613334565b82525050565b6000602082019050613362600083018461333e565b92915050565b61337181613334565b811461337c57600080fd5b50565b60008135905061338e81613368565b92915050565b600080604083850312156133ab576133aa6130c6565b5b60006133b985828601613114565b92505060206133ca8582860161337f565b9150509250929050565b6133dd81613129565b82525050565b60006020820190506133f860008301846133d4565b92915050565b60008060408385031215613415576134146130c6565b5b60006134238582860161337f565b9250506020613434858286016131c5565b9150509250929050565b600060208284031215613454576134536130c6565b5b600061346284828501613114565b91505092915050565b600080600060608486031215613484576134836130c6565b5b600061349286828701613114565b93505060206134a386828701613114565b92505060406134b48682870161337f565b9150509250925092565b6134c7816131a1565b82525050565b60006020820190506134e260008301846134be565b92915050565b6000602082840312156134fe576134fd6130c6565b5b600061350c8482850161314c565b91505092915050565b6000806040838503121561352c5761352b6130c6565b5b600061353a85828601613114565b925050602061354b858286016131c5565b9150509250929050565b6000806040838503121561356c5761356b6130c6565b5b600061357a858286016131c5565b925050602061358b858286016131c5565b9150509250929050565b61359e816130eb565b82525050565b600060c0820190506135b96000830189613595565b6135c6602083018861333e565b6135d3604083018761333e565b6135e0606083018661333e565b6135ed608083018561333e565b6135fa60a083018461333e565b979650505050505050565b60006020828403121561361b5761361a6130c6565b5b60006136298482850161337f565b91505092915050565b60006020820190506136476000830184613595565b92915050565b60008060408385031215613664576136636130c6565b5b600061367285828601613114565b925050602061368385828601613114565b9150509250929050565b600060c0820190506136a260008301896134be565b6136af60208301886134be565b6136bc604083018761333e565b6136c9606083018661333e565b6136d6608083018561333e565b6136e360a083018461333e565b979650505050505050565b7f43616c6c6572206973206e6f742074686520736861726552656365697665722e600082015250565b6000613724602083613212565b915061372f826136ee565b602082019050919050565b6000602082019050818103600083015261375381613717565b9050919050565b7f5374616b696e672069732063757272656e746c79206e6f7420656e61626c656460008201527f2e00000000000000000000000000000000000000000000000000000000000000602082015250565b60006137b6602183613212565b91506137c18261375a565b604082019050919050565b600060208201905081810360008301526137e5816137a9565b9050919050565b7f5468697320706f6f6c20646f6573206e6f742065786973742e00000000000000600082015250565b6000613822601983613212565b915061382d826137ec565b602082019050919050565b6000602082019050818103600083015261385181613815565b9050919050565b7f596f7520617265206e6f74207374616b656420696e207468697320706f6f6c2e600082015250565b600061388e602083613212565b915061389982613858565b602082019050919050565b600060208201905081810360008301526138bd81613881565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138fe82613334565b915061390983613334565b9250828201905080821115613921576139206138c4565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061396e57607f821691505b60208210810361398157613980613927565b5b50919050565b7f4f6e6c7920746865206578656375746f722063616e2063616c6c20746869732060008201527f66756e6374696f6e2e0000000000000000000000000000000000000000000000602082015250565b60006139e3602983613212565b91506139ee82613987565b604082019050919050565b60006020820190508181036000830152613a12816139d6565b9050919050565b7f4e6f7420656e6f7567682073686172657320636f6c6c6365746564207965742e600082015250565b6000613a4f602083613212565b9150613a5a82613a19565b602082019050919050565b60006020820190508181036000830152613a7e81613a42565b9050919050565b6000613a9082613334565b9150613a9b83613334565b9250828203905081811115613ab357613ab26138c4565b5b92915050565b613ac2816130eb565b82525050565b613ad1816132b9565b82525050565b613ae081613334565b82525050565b613aef816130cb565b82525050565b61010082016000820151613b0c6000850182613ab9565b506020820151613b1f6020850182613ab9565b506040820151613b326040850182613ac8565b506060820151613b456060850182613ab9565b506080820151613b586080850182613ad7565b5060a0820151613b6b60a0850182613ad7565b5060c0820151613b7e60c0850182613ad7565b5060e0820151613b9160e0850182613ae6565b50505050565b600061010082019050613bad6000830184613af5565b92915050565b600081519050613bc281613368565b92915050565b600060208284031215613bde57613bdd6130c6565b5b6000613bec84828501613bb3565b91505092915050565b6000604082019050613c0a60008301856134be565b613c17602083018461333e565b9392505050565b7f4120706f6f6c206f662074686973206c6f636b2074696d6520616c726561647960008201527f2065786973747320616e6420686173207374616b657320696e2069742e000000602082015250565b6000613c7a603d83613212565b9150613c8582613c1e565b604082019050919050565b60006020820190508181036000830152613ca981613c6d565b9050919050565b7f596f752063616e6e6f74206d616b65206120706f6f6c207769746820616e204160008201527f5052206f66203025000000000000000000000000000000000000000000000000602082015250565b6000613d0c602883613212565b9150613d1782613cb0565b604082019050919050565b60006020820190508181036000830152613d3b81613cff565b9050919050565b7f596f752063616e6e6f7420756e73616b652061206c6f636b656420706f73697460008201527f696f6e2e00000000000000000000000000000000000000000000000000000000602082015250565b6000613d9e602483613212565b9150613da982613d42565b604082019050919050565b60006020820190508181036000830152613dcd81613d91565b9050919050565b7f4d6178207468726573686f6c642065786365656465642028302e30303031252060008201527f2d20302e30352529000000000000000000000000000000000000000000000000602082015250565b6000613e30602883613212565b9150613e3b82613dd4565b604082019050919050565b60006020820190508181036000830152613e5f81613e23565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613ec2602583613212565b9150613ecd82613e66565b604082019050919050565b60006020820190508181036000830152613ef181613eb5565b9050919050565b6000613f0382613334565b9150613f0e83613334565b9250828202613f1c81613334565b91508282048414831517613f3357613f326138c4565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613f7482613334565b9150613f7f83613334565b925082613f8f57613f8e613f3a565b5b828204905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613fd0601f83613212565b9150613fdb82613f9a565b602082019050919050565b60006020820190508181036000830152613fff81613fc3565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614062602483613212565b915061406d82614006565b604082019050919050565b6000602082019050818103600083015261409181614055565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006140f4602283613212565b91506140ff82614098565b604082019050919050565b60006020820190508181036000830152614123816140e7565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000614160601d83613212565b915061416b8261412a565b602082019050919050565b6000602082019050818103600083015261418f81614153565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006141f2602583613212565b91506141fd82614196565b604082019050919050565b60006020820190508181036000830152614221816141e5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614284602383613212565b915061428f82614228565b604082019050919050565b600060208201905081810360008301526142b381614277565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614316602683613212565b9150614321826142ba565b604082019050919050565b6000602082019050818103600083015261434581614309565b905091905056fea26469706673582212208b4dce88bfd6069ecfce4c7273cb3bce56de2704a74f4c537449fa5035473d7264736f6c63430008120033