<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def create( cls, name: str, architecture: str, content: io.IOBase, *, title: str = "", filetype: BootResourceFileType = BootResourceFileType.TGZ, chunk_size=(1 << 22), progress_callback=None):
 """Create a `BootResource`. Creates an uploaded boot resource with `content`. The `content` is uploaded in chunks of `chunk_size`. `content` must be seekable as the first pass through the `content` will calculate the size and sha256 value then the second pass will perform the actual upload. :param name: Name of the boot resource. Must be in format 'os/release'. :type name: `str` :param architecture: Architecture of the boot resource. Must be in format 'arch/subarch'. :type architecture: `str` :param content: Content of the boot resource. :type content: `io.IOBase` :param title: Title of the boot resource. :type title: `str` :param filetype: Type of file in content. :type filetype: `str` :param chunk_size: Size in bytes to upload to MAAS in chunks. (Default is 4 MiB). :type chunk_size: `int` :param progress_callback: Called to inform the current progress of the upload. One argument is passed with the progress as a precentage. If the resource was already complete and no content needed to be uploaded then this callback will never be called. :type progress_callback: Callable :returns: Create boot resource. :rtype: `BootResource`. """

        if '/' not in name:
            raise ValueError(
                "name must be in format os/release; missing '/'")
        if '/' not in architecture:
            raise ValueError(
                "architecture must be in format arch/subarch; missing '/'")
        if not content.readable():
            raise ValueError("content must be readable")
        elif not content.seekable():
            raise ValueError("content must be seekable")
        if chunk_size <= 0:
            raise ValueError(
                "chunk_size must be greater than 0, not %d" % chunk_size)

        size, sha256 = calc_size_and_sha265(content, chunk_size)
        resource = cls._object(await cls._handler.create(
            name=name, architecture=architecture, title=title,
            filetype=filetype.value, size=str(size), sha256=sha256))
        newest_set = max(resource.sets, default=None)
        assert newest_set is not None
        resource_set = resource.sets[newest_set]
        assert len(resource_set.files) == 1
        rfile = list(resource_set.files.values())[0]
        if rfile.complete:
            # Already created and fully up-to-date.
            return resource
        else:
            # Upload in chunks and reload boot resource.
            await cls._upload_chunks(
                rfile, content, chunk_size, progress_callback)
            return cls._object.read(resource.id)