60806040526040518060400160405280600581526020017f76616c7565000000000000000000000000000000000000000000000000000000815250600990816200004a91906200035b565b5034801562000057575f80fd5b506040518060400160405280600881526020017f4861696b754e46540000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4841494b55000000000000000000000000000000000000000000000000000000815250815f9081620000d491906200035b565b508060019081620000e691906200035b565b50505060016008819055506200043f565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200017357607f821691505b6020821081036200018957620001886200012e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620001ed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620001b0565b620001f98683620001b0565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620002436200023d620002378462000211565b6200021a565b62000211565b9050919050565b5f819050919050565b6200025e8362000223565b620002766200026d826200024a565b848454620001bc565b825550505050565b5f90565b6200028c6200027e565b6200029981848462000253565b505050565b5b81811015620002c057620002b45f8262000282565b6001810190506200029f565b5050565b601f8211156200030f57620002d9816200018f565b620002e484620001a1565b81016020851015620002f4578190505b6200030c6200030385620001a1565b8301826200029e565b50505b505050565b5f82821c905092915050565b5f620003315f198460080262000314565b1980831691505092915050565b5f6200034b838362000320565b9150826002028217905092915050565b6200036682620000f7565b67ffffffffffffffff81111562000382576200038162000101565b5b6200038e82546200015b565b6200039b828285620002c4565b5f60209050601f831160018114620003d1575f8415620003bc578287015190505b620003c885826200033e565b86555062000437565b601f198416620003e1866200018f565b5f5b828110156200040a57848901518255600182019150602085019450602081019050620003e3565b868310156200042a578489015162000426601f89168262000320565b8355505b6001600288020188555050505b505050505050565b6134d2806200044d5f395ff3fe608060405234801561000f575f80fd5b506004361061012a575f3560e01c806361bc221a116100ab57806397afe82d1161006f57806397afe82d14610343578063a22cb46514610373578063b88d4fde1461038f578063c87b56dd146103ab578063e985e9c5146103db5761012a565b806361bc221a146102745780636352211e1461029257806370a08231146102c25780637cb82b2a146102f257806395d89b41146103255761012a565b80632c83ea56116100f25780632c83ea56146101e457806331d81cbb14610200578063350fe1651461021e57806342842e0e1461023a57806349af5bfe146102565761012a565b806301ffc9a71461012e57806306fdde031461015e578063081812fc1461017c578063095ea7b3146101ac57806323b872dd146101c8575b5f80fd5b61014860048036038101906101439190612592565b61040b565b60405161015591906125d7565b60405180910390f35b6101666104ec565b604051610173919061267a565b60405180910390f35b610196600480360381019061019191906126cd565b61057b565b6040516101a39190612737565b60405180910390f35b6101c660048036038101906101c1919061277a565b610596565b005b6101e260048036038101906101dd91906127b8565b6105ac565b005b6101fe60048036038101906101f99190612808565b6106ab565b005b610208610a13565b6040516102159190612855565b60405180910390f35b6102386004803603810190610233919061299a565b610a19565b005b610254600480360381019061024f91906127b8565b610ec3565b005b61025e610ee2565b60405161026b9190612bbe565b60405180910390f35b61027c61130a565b6040516102899190612855565b60405180910390f35b6102ac60048036038101906102a791906126cd565b611313565b6040516102b99190612737565b60405180910390f35b6102dc60048036038101906102d79190612bde565b611324565b6040516102e99190612855565b60405180910390f35b61030c600480360381019061030791906126cd565b6113da565b60405161031c9493929190612c09565b60405180910390f35b61032d6115c6565b60405161033a919061267a565b60405180910390f35b61035d6004803603810190610358919061277a565b611656565b60405161036a91906125d7565b60405180910390f35b61038d60048036038101906103889190612c8b565b611680565b005b6103a960048036038101906103a49190612d67565b611696565b005b6103c560048036038101906103c091906126cd565b6116bb565b6040516103d2919061267a565b60405180910390f35b6103f560048036038101906103f09190612de7565b611721565b60405161040291906125d7565b60405180910390f35b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806104d557507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806104e557506104e4826117af565b5b9050919050565b60605f80546104fa90612e52565b80601f016020809104026020016040519081016040528092919081815260200182805461052690612e52565b80156105715780601f1061054857610100808354040283529160200191610571565b820191905f5260205f20905b81548152906001019060200180831161055457829003601f168201915b5050505050905090565b5f61058582611818565b5061058f8261189e565b9050919050565b6105a882826105a36118d7565b6118de565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361061c575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016106139190612737565b60405180910390fd5b5f61062f838361062a6118d7565b6118f0565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146106a5578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161069c93929190612e82565b60405180910390fd5b50505050565b5f821180156106bc57506008548211155b6106fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106f290612f01565b60405180910390fd5b5f600660018461070b9190612f4c565b8154811061071c5761071b612f7f565b5b905f5260205f2090600402016040518060800160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160018201805461079790612e52565b80601f01602080910402602001604051908101604052809291908181526020018280546107c390612e52565b801561080e5780601f106107e55761010080835404028352916020019161080e565b820191905f5260205f20905b8154815290600101906020018083116107f157829003601f168201915b5050505050815260200160028201805461082790612e52565b80601f016020809104026020016040519081016040528092919081815260200182805461085390612e52565b801561089e5780601f106108755761010080835404028352916020019161089e565b820191905f5260205f20905b81548152906001019060200180831161088157829003601f168201915b505050505081526020016003820180546108b790612e52565b80601f01602080910402602001604051908101604052809291908181526020018280546108e390612e52565b801561092e5780601f106109055761010080835404028352916020019161092e565b820191905f5260205f20905b81548152906001019060200180831161091157829003601f168201915b50505050508152505090503373ffffffffffffffffffffffffffffffffffffffff16815f015173ffffffffffffffffffffffffffffffffffffffff16146109aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a190612ff6565b60405180910390fd5b600160075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b60085481565b5f60405180606001604052808581526020018481526020018381525090505f5b6003811015610db2575f828260038110610a5657610a55612f7f565b5b602002015190505f5b600680549050811015610d9d575f60068281548110610a8157610a80612f7f565b5b905f5260205f2090600402016040518060800160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182018054610afc90612e52565b80601f0160208091040260200160405190810160405280929190818152602001828054610b2890612e52565b8015610b735780601f10610b4a57610100808354040283529160200191610b73565b820191905f5260205f20905b815481529060010190602001808311610b5657829003601f168201915b50505050508152602001600282018054610b8c90612e52565b80601f0160208091040260200160405190810160405280929190818152602001828054610bb890612e52565b8015610c035780601f10610bda57610100808354040283529160200191610c03565b820191905f5260205f20905b815481529060010190602001808311610be657829003601f168201915b50505050508152602001600382018054610c1c90612e52565b80601f0160208091040260200160405190810160405280929190818152602001828054610c4890612e52565b8015610c935780601f10610c6a57610100808354040283529160200191610c93565b820191905f5260205f20905b815481529060010190602001808311610c7657829003601f168201915b50505050508152505090505f60405180606001604052808360200151815260200183604001518152602001836060015181525090505f5b6003811015610d87575f828260038110610ce757610ce6612f7f565b5b6020020151905085604051602001610cff919061304e565b6040516020818303038152906040528051906020012081604051602001610d26919061304e565b6040516020818303038152906040528051906020012003610d73576040517f693a889e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b508080610d7f90613064565b915050610cca565b5050508080610d9590613064565b915050610a5f565b50508080610daa90613064565b915050610a39565b50610dbf33600854611afb565b600660405180608001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200186815260200185815260200184815250908060018154018082558091505060019003905f5260205f2090600402015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019081610e779190613248565b506040820151816002019081610e8d9190613248565b506060820151816003019081610ea39190613248565b50505060085f815480929190610eb890613064565b919050555050505050565b610edd83838360405180602001604052805f815250611696565b505050565b60605f805f90505b600680549050811015610f835760075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600183610f429190613317565b81526020019081526020015f205f9054906101000a900460ff1615610f70578180610f6c90613064565b9250505b8080610f7b90613064565b915050610eea565b505f8167ffffffffffffffff811115610f9f57610f9e612876565b5b604051908082528060200260200182016040528015610fd857816020015b610fc56124ef565b815260200190600190039081610fbd5790505b5090505f805f90505b6006805490508110156112c75760075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6001836110399190613317565b81526020019081526020015f205f9054906101000a900460ff16156112b4576006818154811061106c5761106b612f7f565b5b905f5260205f2090600402016040518060800160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820180546110e790612e52565b80601f016020809104026020016040519081016040528092919081815260200182805461111390612e52565b801561115e5780601f106111355761010080835404028352916020019161115e565b820191905f5260205f20905b81548152906001019060200180831161114157829003601f168201915b5050505050815260200160028201805461117790612e52565b80601f01602080910402602001604051908101604052809291908181526020018280546111a390612e52565b80156111ee5780601f106111c5576101008083540402835291602001916111ee565b820191905f5260205f20905b8154815290600101906020018083116111d157829003601f168201915b5050505050815260200160038201805461120790612e52565b80601f016020809104026020016040519081016040528092919081815260200182805461123390612e52565b801561127e5780601f106112555761010080835404028352916020019161127e565b820191905f5260205f20905b81548152906001019060200180831161126157829003601f168201915b50505050508152505083838151811061129a57611299612f7f565b5b602002602001018190525081806112b090613064565b9250505b80806112bf90613064565b915050610fe1565b505f8303611301576040517ff8826a6900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81935050505090565b5f600854905090565b5f61131d82611818565b9050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611395575f6040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161138c9190612737565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600681815481106113e9575f80fd5b905f5260205f2090600402015f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169080600101805461142d90612e52565b80601f016020809104026020016040519081016040528092919081815260200182805461145990612e52565b80156114a45780601f1061147b576101008083540402835291602001916114a4565b820191905f5260205f20905b81548152906001019060200180831161148757829003601f168201915b5050505050908060020180546114b990612e52565b80601f01602080910402602001604051908101604052809291908181526020018280546114e590612e52565b80156115305780601f1061150757610100808354040283529160200191611530565b820191905f5260205f20905b81548152906001019060200180831161151357829003601f168201915b50505050509080600301805461154590612e52565b80601f016020809104026020016040519081016040528092919081815260200182805461157190612e52565b80156115bc5780601f10611593576101008083540402835291602001916115bc565b820191905f5260205f20905b81548152906001019060200180831161159f57829003601f168201915b5050505050905084565b6060600180546115d590612e52565b80601f016020809104026020016040519081016040528092919081815260200182805461160190612e52565b801561164c5780601f106116235761010080835404028352916020019161164c565b820191905f5260205f20905b81548152906001019060200180831161162f57829003601f168201915b5050505050905090565b6007602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b61169261168b6118d7565b8383611b18565b5050565b6116a18484846105ac565b6116b56116ac6118d7565b85858585611c81565b50505050565b60606116c682611818565b505f6116d0611e2d565b90505f8151116116ee5760405180602001604052805f815250611719565b806116f884611e43565b60405160200161170992919061334a565b6040516020818303038152906040525b915050919050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f8061182383611f0d565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361189557826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161188c9190612855565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6118eb8383836001611f46565b505050565b5f806118fb84611f0d565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461193c5761193b818486612105565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119c75761197b5f855f80611f46565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611a4657600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b611b14828260405180602001604052805f8152506121c8565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b8857816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611b7f9190612737565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611c7491906125d7565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115611e26578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401611cdf94939291906133bf565b6020604051808303815f875af1925050508015611d1a57506040513d601f19601f82011682018060405250810190611d17919061341d565b60015b611d9b573d805f8114611d48576040519150601f19603f3d011682016040523d82523d5f602084013e611d4d565b606091505b505f815103611d9357836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611d8a9190612737565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611e2457836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611e1b9190612737565b60405180910390fd5b505b5050505050565b606060405180602001604052805f815250905090565b60605f6001611e51846121eb565b0190505f8167ffffffffffffffff811115611e6f57611e6e612876565b5b6040519080825280601f01601f191660200182016040528015611ea15781602001600182028036833780820191505090505b5090505f82602001820190505b600115611f02578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611ef757611ef6613448565b5b0494505f8503611eae575b819350505050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611f7e57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156120b0575f611f8d84611818565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ff757508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561200a57506120088184611721565b155b1561204c57826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016120439190612737565b60405180910390fd5b81156120ae57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61211083838361233c565b6121c3575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361218457806040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161217b9190612855565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016121ba929190613475565b60405180910390fd5b505050565b6121d283836123fc565b6121e66121dd6118d7565b5f858585611c81565b505050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612247577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161223d5761223c613448565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612284576d04ee2d6d415b85acef8100000000838161227a57612279613448565b5b0492506020810190505b662386f26fc1000083106122b357662386f26fc1000083816122a9576122a8613448565b5b0492506010810190505b6305f5e10083106122dc576305f5e10083816122d2576122d1613448565b5b0492506008810190505b61271083106123015761271083816122f7576122f6613448565b5b0492506004810190505b60648310612324576064838161231a57612319613448565b5b0492506002810190505b600a8310612333576001810190505b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123f357508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806123b457506123b38484611721565b5b806123f257508273ffffffffffffffffffffffffffffffffffffffff166123da8361189e565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361246c575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016124639190612737565b60405180910390fd5b5f61247883835f6118f0565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146124ea575f6040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016124e19190612737565b60405180910390fd5b505050565b60405180608001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020016060815260200160608152602001606081525090565b5f604051905090565b5f80fd5b5f80fd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6125718161253d565b811461257b575f80fd5b50565b5f8135905061258c81612568565b92915050565b5f602082840312156125a7576125a6612535565b5b5f6125b48482850161257e565b91505092915050565b5f8115159050919050565b6125d1816125bd565b82525050565b5f6020820190506125ea5f8301846125c8565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561262757808201518184015260208101905061260c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61264c826125f0565b61265681856125fa565b935061266681856020860161260a565b61266f81612632565b840191505092915050565b5f6020820190508181035f8301526126928184612642565b905092915050565b5f819050919050565b6126ac8161269a565b81146126b6575f80fd5b50565b5f813590506126c7816126a3565b92915050565b5f602082840312156126e2576126e1612535565b5b5f6126ef848285016126b9565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612721826126f8565b9050919050565b61273181612717565b82525050565b5f60208201905061274a5f830184612728565b92915050565b61275981612717565b8114612763575f80fd5b50565b5f8135905061277481612750565b92915050565b5f80604083850312156127905761278f612535565b5b5f61279d85828601612766565b92505060206127ae858286016126b9565b9150509250929050565b5f805f606084860312156127cf576127ce612535565b5b5f6127dc86828701612766565b93505060206127ed86828701612766565b92505060406127fe868287016126b9565b9150509250925092565b5f806040838503121561281e5761281d612535565b5b5f61282b858286016126b9565b925050602061283c85828601612766565b9150509250929050565b61284f8161269a565b82525050565b5f6020820190506128685f830184612846565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6128ac82612632565b810181811067ffffffffffffffff821117156128cb576128ca612876565b5b80604052505050565b5f6128dd61252c565b90506128e982826128a3565b919050565b5f67ffffffffffffffff82111561290857612907612876565b5b61291182612632565b9050602081019050919050565b828183375f83830152505050565b5f61293e612939846128ee565b6128d4565b90508281526020810184848401111561295a57612959612872565b5b61296584828561291e565b509392505050565b5f82601f8301126129815761298061286e565b5b813561299184826020860161292c565b91505092915050565b5f805f606084860312156129b1576129b0612535565b5b5f84013567ffffffffffffffff8111156129ce576129cd612539565b5b6129da8682870161296d565b935050602084013567ffffffffffffffff8111156129fb576129fa612539565b5b612a078682870161296d565b925050604084013567ffffffffffffffff811115612a2857612a27612539565b5b612a348682870161296d565b9150509250925092565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612a7081612717565b82525050565b5f82825260208201905092915050565b5f612a90826125f0565b612a9a8185612a76565b9350612aaa81856020860161260a565b612ab381612632565b840191505092915050565b5f608083015f830151612ad35f860182612a67565b5060208301518482036020860152612aeb8282612a86565b91505060408301518482036040860152612b058282612a86565b91505060608301518482036060860152612b1f8282612a86565b9150508091505092915050565b5f612b378383612abe565b905092915050565b5f602082019050919050565b5f612b5582612a3e565b612b5f8185612a48565b935083602082028501612b7185612a58565b805f5b85811015612bac5784840389528151612b8d8582612b2c565b9450612b9883612b3f565b925060208a01995050600181019050612b74565b50829750879550505050505092915050565b5f6020820190508181035f830152612bd68184612b4b565b905092915050565b5f60208284031215612bf357612bf2612535565b5b5f612c0084828501612766565b91505092915050565b5f608082019050612c1c5f830187612728565b8181036020830152612c2e8186612642565b90508181036040830152612c428185612642565b90508181036060830152612c568184612642565b905095945050505050565b612c6a816125bd565b8114612c74575f80fd5b50565b5f81359050612c8581612c61565b92915050565b5f8060408385031215612ca157612ca0612535565b5b5f612cae85828601612766565b9250506020612cbf85828601612c77565b9150509250929050565b5f67ffffffffffffffff821115612ce357612ce2612876565b5b612cec82612632565b9050602081019050919050565b5f612d0b612d0684612cc9565b6128d4565b905082815260208101848484011115612d2757612d26612872565b5b612d3284828561291e565b509392505050565b5f82601f830112612d4e57612d4d61286e565b5b8135612d5e848260208601612cf9565b91505092915050565b5f805f8060808587031215612d7f57612d7e612535565b5b5f612d8c87828801612766565b9450506020612d9d87828801612766565b9350506040612dae878288016126b9565b925050606085013567ffffffffffffffff811115612dcf57612dce612539565b5b612ddb87828801612d3a565b91505092959194509250565b5f8060408385031215612dfd57612dfc612535565b5b5f612e0a85828601612766565b9250506020612e1b85828601612766565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612e6957607f821691505b602082108103612e7c57612e7b612e25565b5b50919050565b5f606082019050612e955f830186612728565b612ea26020830185612846565b612eaf6040830184612728565b949350505050565b7f496e76616c6964206861696b75204944000000000000000000000000000000005f82015250565b5f612eeb6010836125fa565b9150612ef682612eb7565b602082019050919050565b5f6020820190508181035f830152612f1881612edf565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f612f568261269a565b9150612f618361269a565b9250828203905081811115612f7957612f78612f1f565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f74596f75724861696b7500000000000000000000000000000000000000005f82015250565b5f612fe0600c836125fa565b9150612feb82612fac565b602082019050919050565b5f6020820190508181035f83015261300d81612fd4565b9050919050565b5f81905092915050565b5f613028826125f0565b6130328185613014565b935061304281856020860161260a565b80840191505092915050565b5f613059828461301e565b915081905092915050565b5f61306e8261269a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130a05761309f612f1f565b5b600182019050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026131077fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826130cc565b61311186836130cc565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61314c6131476131428461269a565b613129565b61269a565b9050919050565b5f819050919050565b61316583613132565b61317961317182613153565b8484546130d8565b825550505050565b5f90565b61318d613181565b61319881848461315c565b505050565b5b818110156131bb576131b05f82613185565b60018101905061319e565b5050565b601f821115613200576131d1816130ab565b6131da846130bd565b810160208510156131e9578190505b6131fd6131f5856130bd565b83018261319d565b50505b505050565b5f82821c905092915050565b5f6132205f1984600802613205565b1980831691505092915050565b5f6132388383613211565b9150826002028217905092915050565b613251826125f0565b67ffffffffffffffff81111561326a57613269612876565b5b6132748254612e52565b61327f8282856131bf565b5f60209050601f8311600181146132b0575f841561329e578287015190505b6132a8858261322d565b86555061330f565b601f1984166132be866130ab565b5f5b828110156132e5578489015182556001820191506020850194506020810190506132c0565b8683101561330257848901516132fe601f891682613211565b8355505b6001600288020188555050505b505050505050565b5f6133218261269a565b915061332c8361269a565b925082820190508082111561334457613343612f1f565b5b92915050565b5f613355828561301e565b9150613361828461301e565b91508190509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f6133918261336d565b61339b8185613377565b93506133ab81856020860161260a565b6133b481612632565b840191505092915050565b5f6080820190506133d25f830187612728565b6133df6020830186612728565b6133ec6040830185612846565b81810360608301526133fe8184613387565b905095945050505050565b5f8151905061341781612568565b92915050565b5f6020828403121561343257613431612535565b5b5f61343f84828501613409565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6040820190506134885f830185612728565b6134956020830184612846565b939250505056fea26469706673582212205a4524f7868d8f72e4858474d442dc7074fa6dc36bf497183a1ca498a414d6e664736f6c63430008140033