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