#!/usr/bin/env python3

import base64
import json
import sys


def decode_base64url(data):
    # Not the same as "bin/base64 -d":
    # + -> -
    # / -> _
    # = -> ''
    pad = len(data) % 4
    if pad > 0:
        data += '=' * (4 - pad)
    return base64.urlsafe_b64decode(data)


def decode_jwt(token):
    token = token.rstrip('\n')
    header, payload, signature = token.split('.')
    decoded_header = json.loads(decode_base64url(header))
    decoded_payload = json.loads(decode_base64url(payload))
    # the signature is binary, so we don't decode it

    return decoded_header, decoded_payload, signature


def main():
    header, payload, signature = decode_jwt(sys.stdin.read())
    out = {
        'header': header,
        'payload': payload,
        'signature': signature,
    }
    print(json.dumps(out, indent=4))


if __name__ == '__main__':
    main()
