<|start_filename|>UWP/RadialDevice/winrt/Windows.Gaming.UI.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Gaming.UI.3.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Gaming::UI::IGameBarStatics> : produce_base<D, Windows::Gaming::UI::IGameBarStatics>
{
    HRESULT __stdcall add_VisibilityChanged(abi_arg_in<Windows::Foundation::EventHandler<Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().VisibilityChanged(*reinterpret_cast<const Windows::Foundation::EventHandler<Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_VisibilityChanged(event_token token) noexcept override
    {
        try
        {
            this->shim().VisibilityChanged(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_IsInputRedirectedChanged(abi_arg_in<Windows::Foundation::EventHandler<Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().IsInputRedirectedChanged(*reinterpret_cast<const Windows::Foundation::EventHandler<Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_IsInputRedirectedChanged(event_token token) noexcept override
    {
        try
        {
            this->shim().IsInputRedirectedChanged(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Visible(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Visible());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsInputRedirected(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsInputRedirected());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Gaming::UI {

template <typename D> event_token impl_IGameBarStatics<D>::VisibilityChanged(const Windows::Foundation::EventHandler<Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IGameBarStatics &>(static_cast<const D &>(*this))->add_VisibilityChanged(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IGameBarStatics> impl_IGameBarStatics<D>::VisibilityChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IGameBarStatics>(this, &ABI::Windows::Gaming::UI::IGameBarStatics::remove_VisibilityChanged, VisibilityChanged(handler));
}

template <typename D> void impl_IGameBarStatics<D>::VisibilityChanged(event_token token) const
{
    check_hresult(static_cast<const IGameBarStatics &>(static_cast<const D &>(*this))->remove_VisibilityChanged(token));
}

template <typename D> event_token impl_IGameBarStatics<D>::IsInputRedirectedChanged(const Windows::Foundation::EventHandler<Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IGameBarStatics &>(static_cast<const D &>(*this))->add_IsInputRedirectedChanged(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IGameBarStatics> impl_IGameBarStatics<D>::IsInputRedirectedChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IGameBarStatics>(this, &ABI::Windows::Gaming::UI::IGameBarStatics::remove_IsInputRedirectedChanged, IsInputRedirectedChanged(handler));
}

template <typename D> void impl_IGameBarStatics<D>::IsInputRedirectedChanged(event_token token) const
{
    check_hresult(static_cast<const IGameBarStatics &>(static_cast<const D &>(*this))->remove_IsInputRedirectedChanged(token));
}

template <typename D> bool impl_IGameBarStatics<D>::Visible() const
{
    bool value {};
    check_hresult(static_cast<const IGameBarStatics &>(static_cast<const D &>(*this))->get_Visible(&value));
    return value;
}

template <typename D> bool impl_IGameBarStatics<D>::IsInputRedirected() const
{
    bool value {};
    check_hresult(static_cast<const IGameBarStatics &>(static_cast<const D &>(*this))->get_IsInputRedirected(&value));
    return value;
}

inline event_token GameBar::VisibilityChanged(const Windows::Foundation::EventHandler<Windows::IInspectable> & handler)
{
    return get_activation_factory<GameBar, IGameBarStatics>().VisibilityChanged(handler);
}

inline factory_event_revoker<IGameBarStatics> GameBar::VisibilityChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & handler)
{
    auto factory = get_activation_factory<GameBar, IGameBarStatics>();
    return { factory, &ABI::Windows::Gaming::UI::IGameBarStatics::remove_VisibilityChanged, factory.VisibilityChanged(handler) };
}

inline void GameBar::VisibilityChanged(event_token token)
{
    get_activation_factory<GameBar, IGameBarStatics>().VisibilityChanged(token);
}

inline event_token GameBar::IsInputRedirectedChanged(const Windows::Foundation::EventHandler<Windows::IInspectable> & handler)
{
    return get_activation_factory<GameBar, IGameBarStatics>().IsInputRedirectedChanged(handler);
}

inline factory_event_revoker<IGameBarStatics> GameBar::IsInputRedirectedChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & handler)
{
    auto factory = get_activation_factory<GameBar, IGameBarStatics>();
    return { factory, &ABI::Windows::Gaming::UI::IGameBarStatics::remove_IsInputRedirectedChanged, factory.IsInputRedirectedChanged(handler) };
}

inline void GameBar::IsInputRedirectedChanged(event_token token)
{
    get_activation_factory<GameBar, IGameBarStatics>().IsInputRedirectedChanged(token);
}

inline bool GameBar::Visible()
{
    return get_activation_factory<GameBar, IGameBarStatics>().Visible();
}

inline bool GameBar::IsInputRedirected()
{
    return get_activation_factory<GameBar, IGameBarStatics>().IsInputRedirected();
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.WiFiDirect.Services.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Devices.WiFiDirect.Services.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Devices::WiFiDirect::Services {

struct WINRT_EBO WiFiDirectService :
    Windows::Devices::WiFiDirect::Services::IWiFiDirectService
{
    WiFiDirectService(std::nullptr_t) noexcept {}
    static hstring GetSelector(hstring_ref serviceName);
    static hstring GetSelector(hstring_ref serviceName, const Windows::Storage::Streams::IBuffer & serviceInfoFilter);
    static Windows::Foundation::IAsyncOperation<Windows::Devices::WiFiDirect::Services::WiFiDirectService> FromIdAsync(hstring_ref deviceId);
};

struct WINRT_EBO WiFiDirectServiceAdvertiser :
    Windows::Devices::WiFiDirect::Services::IWiFiDirectServiceAdvertiser
{
    WiFiDirectServiceAdvertiser(std::nullptr_t) noexcept {}
    WiFiDirectServiceAdvertiser(hstring_ref serviceName);
};

struct WINRT_EBO WiFiDirectServiceAutoAcceptSessionConnectedEventArgs :
    Windows::Devices::WiFiDirect::Services::IWiFiDirectServiceAutoAcceptSessionConnectedEventArgs
{
    WiFiDirectServiceAutoAcceptSessionConnectedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO WiFiDirectServiceProvisioningInfo :
    Windows::Devices::WiFiDirect::Services::IWiFiDirectServiceProvisioningInfo
{
    WiFiDirectServiceProvisioningInfo(std::nullptr_t) noexcept {}
};

struct WINRT_EBO WiFiDirectServiceRemotePortAddedEventArgs :
    Windows::Devices::WiFiDirect::Services::IWiFiDirectServiceRemotePortAddedEventArgs
{
    WiFiDirectServiceRemotePortAddedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO WiFiDirectServiceSession :
    Windows::Devices::WiFiDirect::Services::IWiFiDirectServiceSession
{
    WiFiDirectServiceSession(std::nullptr_t) noexcept {}
};

struct WINRT_EBO WiFiDirectServiceSessionDeferredEventArgs :
    Windows::Devices::WiFiDirect::Services::IWiFiDirectServiceSessionDeferredEventArgs
{
    WiFiDirectServiceSessionDeferredEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO WiFiDirectServiceSessionRequest :
    Windows::Devices::WiFiDirect::Services::IWiFiDirectServiceSessionRequest
{
    WiFiDirectServiceSessionRequest(std::nullptr_t) noexcept {}
};

struct WINRT_EBO WiFiDirectServiceSessionRequestedEventArgs :
    Windows::Devices::WiFiDirect::Services::IWiFiDirectServiceSessionRequestedEventArgs
{
    WiFiDirectServiceSessionRequestedEventArgs(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Calls.Provider.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.ApplicationModel.Calls.Provider.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
#define WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
template <> struct __declspec(uuid("cdb5efb3-5788-509d-9be1-71ccb8a3362a")) __declspec(novtable) IAsyncOperation<bool> : impl_IAsyncOperation<bool> {};
#endif

#ifndef WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
#define WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
template <> struct __declspec(uuid("c1d3d1a2-ae17-5a5f-b5a2-bdcc8844889a")) __declspec(novtable) AsyncOperationCompletedHandler<bool> : impl_AsyncOperationCompletedHandler<bool> {};
#endif


}

namespace Windows::ApplicationModel::Calls::Provider {

template <typename D>
struct WINRT_EBO impl_IPhoneCallOrigin
{
    hstring Category() const;
    void Category(hstring_ref value) const;
    hstring CategoryDescription() const;
    void CategoryDescription(hstring_ref value) const;
    hstring Location() const;
    void Location(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IPhoneCallOrigin2
{
    hstring DisplayName() const;
    void DisplayName(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IPhoneCallOrigin3
{
    Windows::Storage::StorageFile DisplayPicture() const;
    void DisplayPicture(const Windows::Storage::StorageFile & value) const;
};

template <typename D>
struct WINRT_EBO impl_IPhoneCallOriginManagerStatics
{
    bool IsCurrentAppActiveCallOriginApp() const;
    void ShowPhoneCallOriginSettingsUI() const;
    void SetCallOrigin(GUID requestId, const Windows::ApplicationModel::Calls::Provider::PhoneCallOrigin & callOrigin) const;
};

template <typename D>
struct WINRT_EBO impl_IPhoneCallOriginManagerStatics2
{
    Windows::Foundation::IAsyncOperation<bool> RequestSetAsActiveCallOriginAppAsync() const;
};

struct IPhoneCallOrigin :
    Windows::IInspectable,
    impl::consume<IPhoneCallOrigin>
{
    IPhoneCallOrigin(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPhoneCallOrigin>(m_ptr); }
};

struct IPhoneCallOrigin2 :
    Windows::IInspectable,
    impl::consume<IPhoneCallOrigin2>,
    impl::require<IPhoneCallOrigin2, Windows::ApplicationModel::Calls::Provider::IPhoneCallOrigin>
{
    IPhoneCallOrigin2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPhoneCallOrigin2>(m_ptr); }
};

struct IPhoneCallOrigin3 :
    Windows::IInspectable,
    impl::consume<IPhoneCallOrigin3>,
    impl::require<IPhoneCallOrigin3, Windows::ApplicationModel::Calls::Provider::IPhoneCallOrigin, Windows::ApplicationModel::Calls::Provider::IPhoneCallOrigin2>
{
    IPhoneCallOrigin3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPhoneCallOrigin3>(m_ptr); }
};

struct IPhoneCallOriginManagerStatics :
    Windows::IInspectable,
    impl::consume<IPhoneCallOriginManagerStatics>
{
    IPhoneCallOriginManagerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPhoneCallOriginManagerStatics>(m_ptr); }
};

struct IPhoneCallOriginManagerStatics2 :
    Windows::IInspectable,
    impl::consume<IPhoneCallOriginManagerStatics2>,
    impl::require<IPhoneCallOriginManagerStatics2, Windows::ApplicationModel::Calls::Provider::IPhoneCallOriginManagerStatics>
{
    IPhoneCallOriginManagerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPhoneCallOriginManagerStatics2>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Text.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.UI.Text.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.UI.0.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Text {

struct FontWeight
{
    uint16_t Weight;
};

}

namespace Windows::UI::Text {

using FontWeight = ABI::Windows::UI::Text::FontWeight;

}

namespace ABI::Windows::UI::Text {

struct __declspec(uuid("7880a444-01ab-4997-8517-df822a0c45f1")) __declspec(novtable) IFontWeights : Windows::IInspectable
{
};

struct __declspec(uuid("b3b579d5-1ba9-48eb-9dad-c095e8c23ba3")) __declspec(novtable) IFontWeightsStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Black(Windows::UI::Text::FontWeight * value) = 0;
    virtual HRESULT __stdcall get_Bold(Windows::UI::Text::FontWeight * value) = 0;
    virtual HRESULT __stdcall get_ExtraBlack(Windows::UI::Text::FontWeight * value) = 0;
    virtual HRESULT __stdcall get_ExtraBold(Windows::UI::Text::FontWeight * value) = 0;
    virtual HRESULT __stdcall get_ExtraLight(Windows::UI::Text::FontWeight * value) = 0;
    virtual HRESULT __stdcall get_Light(Windows::UI::Text::FontWeight * value) = 0;
    virtual HRESULT __stdcall get_Medium(Windows::UI::Text::FontWeight * value) = 0;
    virtual HRESULT __stdcall get_Normal(Windows::UI::Text::FontWeight * value) = 0;
    virtual HRESULT __stdcall get_SemiBold(Windows::UI::Text::FontWeight * value) = 0;
    virtual HRESULT __stdcall get_SemiLight(Windows::UI::Text::FontWeight * value) = 0;
    virtual HRESULT __stdcall get_Thin(Windows::UI::Text::FontWeight * value) = 0;
};

struct __declspec(uuid("5adef3db-05fb-442d-8065-642afea02ced")) __declspec(novtable) ITextCharacterFormat : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AllCaps(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_AllCaps(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_BackgroundColor(Windows::UI::Color * value) = 0;
    virtual HRESULT __stdcall put_BackgroundColor(Windows::UI::Color value) = 0;
    virtual HRESULT __stdcall get_Bold(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_Bold(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_FontStretch(winrt::Windows::UI::Text::FontStretch * value) = 0;
    virtual HRESULT __stdcall put_FontStretch(winrt::Windows::UI::Text::FontStretch value) = 0;
    virtual HRESULT __stdcall get_FontStyle(winrt::Windows::UI::Text::FontStyle * value) = 0;
    virtual HRESULT __stdcall put_FontStyle(winrt::Windows::UI::Text::FontStyle value) = 0;
    virtual HRESULT __stdcall get_ForegroundColor(Windows::UI::Color * value) = 0;
    virtual HRESULT __stdcall put_ForegroundColor(Windows::UI::Color value) = 0;
    virtual HRESULT __stdcall get_Hidden(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_Hidden(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_Italic(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_Italic(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_Kerning(float * value) = 0;
    virtual HRESULT __stdcall put_Kerning(float value) = 0;
    virtual HRESULT __stdcall get_LanguageTag(hstring * value) = 0;
    virtual HRESULT __stdcall put_LanguageTag(hstring value) = 0;
    virtual HRESULT __stdcall get_LinkType(winrt::Windows::UI::Text::LinkType * value) = 0;
    virtual HRESULT __stdcall get_Name(hstring * value) = 0;
    virtual HRESULT __stdcall put_Name(hstring value) = 0;
    virtual HRESULT __stdcall get_Outline(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_Outline(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_Position(float * value) = 0;
    virtual HRESULT __stdcall put_Position(float value) = 0;
    virtual HRESULT __stdcall get_ProtectedText(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_ProtectedText(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_Size(float * value) = 0;
    virtual HRESULT __stdcall put_Size(float value) = 0;
    virtual HRESULT __stdcall get_SmallCaps(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_SmallCaps(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_Spacing(float * value) = 0;
    virtual HRESULT __stdcall put_Spacing(float value) = 0;
    virtual HRESULT __stdcall get_Strikethrough(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_Strikethrough(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_Subscript(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_Subscript(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_Superscript(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_Superscript(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_TextScript(winrt::Windows::UI::Text::TextScript * value) = 0;
    virtual HRESULT __stdcall put_TextScript(winrt::Windows::UI::Text::TextScript value) = 0;
    virtual HRESULT __stdcall get_Underline(winrt::Windows::UI::Text::UnderlineType * value) = 0;
    virtual HRESULT __stdcall put_Underline(winrt::Windows::UI::Text::UnderlineType value) = 0;
    virtual HRESULT __stdcall get_Weight(int32_t * value) = 0;
    virtual HRESULT __stdcall put_Weight(int32_t value) = 0;
    virtual HRESULT __stdcall abi_SetClone(Windows::UI::Text::ITextCharacterFormat * value) = 0;
    virtual HRESULT __stdcall abi_GetClone(Windows::UI::Text::ITextCharacterFormat ** value) = 0;
    virtual HRESULT __stdcall abi_IsEqual(Windows::UI::Text::ITextCharacterFormat * format, bool * value) = 0;
};

struct __declspec(uuid("779e7c33-189d-4bfa-97c8-10db135d976e")) __declspec(novtable) ITextConstantsStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AutoColor(Windows::UI::Color * value) = 0;
    virtual HRESULT __stdcall get_MinUnitCount(int32_t * value) = 0;
    virtual HRESULT __stdcall get_MaxUnitCount(int32_t * value) = 0;
    virtual HRESULT __stdcall get_UndefinedColor(Windows::UI::Color * value) = 0;
    virtual HRESULT __stdcall get_UndefinedFloatValue(float * value) = 0;
    virtual HRESULT __stdcall get_UndefinedInt32Value(int32_t * value) = 0;
    virtual HRESULT __stdcall get_UndefinedFontStretch(winrt::Windows::UI::Text::FontStretch * value) = 0;
    virtual HRESULT __stdcall get_UndefinedFontStyle(winrt::Windows::UI::Text::FontStyle * value) = 0;
};

struct __declspec(uuid("beee4ddb-90b2-408c-a2f6-0a0ac31e33e4")) __declspec(novtable) ITextDocument : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CaretType(winrt::Windows::UI::Text::CaretType * value) = 0;
    virtual HRESULT __stdcall put_CaretType(winrt::Windows::UI::Text::CaretType value) = 0;
    virtual HRESULT __stdcall get_DefaultTabStop(float * value) = 0;
    virtual HRESULT __stdcall put_DefaultTabStop(float value) = 0;
    virtual HRESULT __stdcall get_Selection(Windows::UI::Text::ITextSelection ** value) = 0;
    virtual HRESULT __stdcall get_UndoLimit(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_UndoLimit(uint32_t value) = 0;
    virtual HRESULT __stdcall abi_CanCopy(bool * value) = 0;
    virtual HRESULT __stdcall abi_CanPaste(bool * value) = 0;
    virtual HRESULT __stdcall abi_CanRedo(bool * value) = 0;
    virtual HRESULT __stdcall abi_CanUndo(bool * value) = 0;
    virtual HRESULT __stdcall abi_ApplyDisplayUpdates(int32_t * count) = 0;
    virtual HRESULT __stdcall abi_BatchDisplayUpdates(int32_t * count) = 0;
    virtual HRESULT __stdcall abi_BeginUndoGroup() = 0;
    virtual HRESULT __stdcall abi_EndUndoGroup() = 0;
    virtual HRESULT __stdcall abi_GetDefaultCharacterFormat(Windows::UI::Text::ITextCharacterFormat ** value) = 0;
    virtual HRESULT __stdcall abi_GetDefaultParagraphFormat(Windows::UI::Text::ITextParagraphFormat ** value) = 0;
    virtual HRESULT __stdcall abi_GetRange(int32_t startPosition, int32_t endPosition, Windows::UI::Text::ITextRange ** value) = 0;
    virtual HRESULT __stdcall abi_GetRangeFromPoint(Windows::Foundation::Point point, winrt::Windows::UI::Text::PointOptions options, Windows::UI::Text::ITextRange ** value) = 0;
    virtual HRESULT __stdcall abi_GetText(winrt::Windows::UI::Text::TextGetOptions options, hstring * value) = 0;
    virtual HRESULT __stdcall abi_LoadFromStream(winrt::Windows::UI::Text::TextSetOptions options, Windows::Storage::Streams::IRandomAccessStream * value) = 0;
    virtual HRESULT __stdcall abi_Redo() = 0;
    virtual HRESULT __stdcall abi_SaveToStream(winrt::Windows::UI::Text::TextGetOptions options, Windows::Storage::Streams::IRandomAccessStream * value) = 0;
    virtual HRESULT __stdcall abi_SetDefaultCharacterFormat(Windows::UI::Text::ITextCharacterFormat * value) = 0;
    virtual HRESULT __stdcall abi_SetDefaultParagraphFormat(Windows::UI::Text::ITextParagraphFormat * value) = 0;
    virtual HRESULT __stdcall abi_SetText(winrt::Windows::UI::Text::TextSetOptions options, hstring value) = 0;
    virtual HRESULT __stdcall abi_Undo() = 0;
};

struct __declspec(uuid("2cf8cfa6-4676-498a-93f5-bbdbfc0bd883")) __declspec(novtable) ITextParagraphFormat : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Alignment(winrt::Windows::UI::Text::ParagraphAlignment * value) = 0;
    virtual HRESULT __stdcall put_Alignment(winrt::Windows::UI::Text::ParagraphAlignment value) = 0;
    virtual HRESULT __stdcall get_FirstLineIndent(float * value) = 0;
    virtual HRESULT __stdcall get_KeepTogether(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_KeepTogether(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_KeepWithNext(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_KeepWithNext(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_LeftIndent(float * value) = 0;
    virtual HRESULT __stdcall get_LineSpacing(float * value) = 0;
    virtual HRESULT __stdcall get_LineSpacingRule(winrt::Windows::UI::Text::LineSpacingRule * value) = 0;
    virtual HRESULT __stdcall get_ListAlignment(winrt::Windows::UI::Text::MarkerAlignment * value) = 0;
    virtual HRESULT __stdcall put_ListAlignment(winrt::Windows::UI::Text::MarkerAlignment value) = 0;
    virtual HRESULT __stdcall get_ListLevelIndex(int32_t * value) = 0;
    virtual HRESULT __stdcall put_ListLevelIndex(int32_t value) = 0;
    virtual HRESULT __stdcall get_ListStart(int32_t * value) = 0;
    virtual HRESULT __stdcall put_ListStart(int32_t value) = 0;
    virtual HRESULT __stdcall get_ListStyle(winrt::Windows::UI::Text::MarkerStyle * value) = 0;
    virtual HRESULT __stdcall put_ListStyle(winrt::Windows::UI::Text::MarkerStyle value) = 0;
    virtual HRESULT __stdcall get_ListTab(float * value) = 0;
    virtual HRESULT __stdcall put_ListTab(float value) = 0;
    virtual HRESULT __stdcall get_ListType(winrt::Windows::UI::Text::MarkerType * value) = 0;
    virtual HRESULT __stdcall put_ListType(winrt::Windows::UI::Text::MarkerType value) = 0;
    virtual HRESULT __stdcall get_NoLineNumber(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_NoLineNumber(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_PageBreakBefore(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_PageBreakBefore(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_RightIndent(float * value) = 0;
    virtual HRESULT __stdcall put_RightIndent(float value) = 0;
    virtual HRESULT __stdcall get_RightToLeft(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_RightToLeft(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_Style(winrt::Windows::UI::Text::ParagraphStyle * value) = 0;
    virtual HRESULT __stdcall put_Style(winrt::Windows::UI::Text::ParagraphStyle value) = 0;
    virtual HRESULT __stdcall get_SpaceAfter(float * value) = 0;
    virtual HRESULT __stdcall put_SpaceAfter(float value) = 0;
    virtual HRESULT __stdcall get_SpaceBefore(float * value) = 0;
    virtual HRESULT __stdcall put_SpaceBefore(float value) = 0;
    virtual HRESULT __stdcall get_WidowControl(winrt::Windows::UI::Text::FormatEffect * value) = 0;
    virtual HRESULT __stdcall put_WidowControl(winrt::Windows::UI::Text::FormatEffect value) = 0;
    virtual HRESULT __stdcall get_TabCount(int32_t * value) = 0;
    virtual HRESULT __stdcall abi_AddTab(float position, winrt::Windows::UI::Text::TabAlignment align, winrt::Windows::UI::Text::TabLeader leader) = 0;
    virtual HRESULT __stdcall abi_ClearAllTabs() = 0;
    virtual HRESULT __stdcall abi_DeleteTab(float position) = 0;
    virtual HRESULT __stdcall abi_GetClone(Windows::UI::Text::ITextParagraphFormat ** value) = 0;
    virtual HRESULT __stdcall abi_GetTab(int32_t index, float * position, winrt::Windows::UI::Text::TabAlignment * align, winrt::Windows::UI::Text::TabLeader * leader) = 0;
    virtual HRESULT __stdcall abi_IsEqual(Windows::UI::Text::ITextParagraphFormat * format, bool * value) = 0;
    virtual HRESULT __stdcall abi_SetClone(Windows::UI::Text::ITextParagraphFormat * format) = 0;
    virtual HRESULT __stdcall abi_SetIndents(float start, float left, float right) = 0;
    virtual HRESULT __stdcall abi_SetLineSpacing(winrt::Windows::UI::Text::LineSpacingRule rule, float spacing) = 0;
};

struct __declspec(uuid("5b9e4e57-c072-42a0-8945-af503ee54768")) __declspec(novtable) ITextRange : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Character(wchar_t * value) = 0;
    virtual HRESULT __stdcall put_Character(wchar_t value) = 0;
    virtual HRESULT __stdcall get_CharacterFormat(Windows::UI::Text::ITextCharacterFormat ** value) = 0;
    virtual HRESULT __stdcall put_CharacterFormat(Windows::UI::Text::ITextCharacterFormat * value) = 0;
    virtual HRESULT __stdcall get_FormattedText(Windows::UI::Text::ITextRange ** value) = 0;
    virtual HRESULT __stdcall put_FormattedText(Windows::UI::Text::ITextRange * value) = 0;
    virtual HRESULT __stdcall get_EndPosition(int32_t * value) = 0;
    virtual HRESULT __stdcall put_EndPosition(int32_t value) = 0;
    virtual HRESULT __stdcall get_Gravity(winrt::Windows::UI::Text::RangeGravity * value) = 0;
    virtual HRESULT __stdcall put_Gravity(winrt::Windows::UI::Text::RangeGravity value) = 0;
    virtual HRESULT __stdcall get_Length(int32_t * length) = 0;
    virtual HRESULT __stdcall get_Link(hstring * value) = 0;
    virtual HRESULT __stdcall put_Link(hstring value) = 0;
    virtual HRESULT __stdcall get_ParagraphFormat(Windows::UI::Text::ITextParagraphFormat ** value) = 0;
    virtual HRESULT __stdcall put_ParagraphFormat(Windows::UI::Text::ITextParagraphFormat * value) = 0;
    virtual HRESULT __stdcall get_StartPosition(int32_t * value) = 0;
    virtual HRESULT __stdcall put_StartPosition(int32_t value) = 0;
    virtual HRESULT __stdcall get_StoryLength(int32_t * value) = 0;
    virtual HRESULT __stdcall get_Text(hstring * value) = 0;
    virtual HRESULT __stdcall put_Text(hstring value) = 0;
    virtual HRESULT __stdcall abi_CanPaste(int32_t format, bool * value) = 0;
    virtual HRESULT __stdcall abi_ChangeCase(winrt::Windows::UI::Text::LetterCase value) = 0;
    virtual HRESULT __stdcall abi_Collapse(bool value) = 0;
    virtual HRESULT __stdcall abi_Copy() = 0;
    virtual HRESULT __stdcall abi_Cut() = 0;
    virtual HRESULT __stdcall abi_Delete(winrt::Windows::UI::Text::TextRangeUnit unit, int32_t count, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_EndOf(winrt::Windows::UI::Text::TextRangeUnit unit, bool extend, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_Expand(winrt::Windows::UI::Text::TextRangeUnit unit, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_FindText(hstring value, int32_t scanLength, winrt::Windows::UI::Text::FindOptions options, int32_t * length) = 0;
    virtual HRESULT __stdcall abi_GetCharacterUtf32(uint32_t * value, int32_t offset) = 0;
    virtual HRESULT __stdcall abi_GetClone(Windows::UI::Text::ITextRange ** value) = 0;
    virtual HRESULT __stdcall abi_GetIndex(winrt::Windows::UI::Text::TextRangeUnit unit, int32_t * index) = 0;
    virtual HRESULT __stdcall abi_GetPoint(winrt::Windows::UI::Text::HorizontalCharacterAlignment horizontalAlign, winrt::Windows::UI::Text::VerticalCharacterAlignment verticalAlign, winrt::Windows::UI::Text::PointOptions options, Windows::Foundation::Point * point) = 0;
    virtual HRESULT __stdcall abi_GetRect(winrt::Windows::UI::Text::PointOptions options, Windows::Foundation::Rect * rect, int32_t * hit) = 0;
    virtual HRESULT __stdcall abi_GetText(winrt::Windows::UI::Text::TextGetOptions options, hstring * value) = 0;
    virtual HRESULT __stdcall abi_GetTextViaStream(winrt::Windows::UI::Text::TextGetOptions options, Windows::Storage::Streams::IRandomAccessStream * value) = 0;
    virtual HRESULT __stdcall abi_InRange(Windows::UI::Text::ITextRange * range, bool * value) = 0;
    virtual HRESULT __stdcall abi_InsertImage(int32_t width, int32_t height, int32_t ascent, winrt::Windows::UI::Text::VerticalCharacterAlignment verticalAlign, hstring alternateText, Windows::Storage::Streams::IRandomAccessStream * value) = 0;
    virtual HRESULT __stdcall abi_InStory(Windows::UI::Text::ITextRange * range, bool * value) = 0;
    virtual HRESULT __stdcall abi_IsEqual(Windows::UI::Text::ITextRange * range, bool * value) = 0;
    virtual HRESULT __stdcall abi_Move(winrt::Windows::UI::Text::TextRangeUnit unit, int32_t count, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_MoveEnd(winrt::Windows::UI::Text::TextRangeUnit unit, int32_t count, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_MoveStart(winrt::Windows::UI::Text::TextRangeUnit unit, int32_t count, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_Paste(int32_t format) = 0;
    virtual HRESULT __stdcall abi_ScrollIntoView(winrt::Windows::UI::Text::PointOptions value) = 0;
    virtual HRESULT __stdcall abi_MatchSelection() = 0;
    virtual HRESULT __stdcall abi_SetIndex(winrt::Windows::UI::Text::TextRangeUnit unit, int32_t index, bool extend) = 0;
    virtual HRESULT __stdcall abi_SetPoint(Windows::Foundation::Point point, winrt::Windows::UI::Text::PointOptions options, bool extend) = 0;
    virtual HRESULT __stdcall abi_SetRange(int32_t startPosition, int32_t endPosition) = 0;
    virtual HRESULT __stdcall abi_SetText(winrt::Windows::UI::Text::TextSetOptions options, hstring value) = 0;
    virtual HRESULT __stdcall abi_SetTextViaStream(winrt::Windows::UI::Text::TextSetOptions options, Windows::Storage::Streams::IRandomAccessStream * value) = 0;
    virtual HRESULT __stdcall abi_StartOf(winrt::Windows::UI::Text::TextRangeUnit unit, bool extend, int32_t * delta) = 0;
};

struct __declspec(uuid("a6d36724-f28f-430a-b2cf-c343671ec0e9")) __declspec(novtable) ITextSelection : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Options(winrt::Windows::UI::Text::SelectionOptions * value) = 0;
    virtual HRESULT __stdcall put_Options(winrt::Windows::UI::Text::SelectionOptions value) = 0;
    virtual HRESULT __stdcall get_Type(winrt::Windows::UI::Text::SelectionType * value) = 0;
    virtual HRESULT __stdcall abi_EndKey(winrt::Windows::UI::Text::TextRangeUnit unit, bool extend, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_HomeKey(winrt::Windows::UI::Text::TextRangeUnit unit, bool extend, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_MoveDown(winrt::Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_MoveLeft(winrt::Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_MoveRight(winrt::Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_MoveUp(winrt::Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend, int32_t * delta) = 0;
    virtual HRESULT __stdcall abi_TypeText(hstring value) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::UI::Text::FontWeights> { using default_interface = Windows::UI::Text::IFontWeights; };

}

namespace Windows::UI::Text {

template <typename T> struct impl_IFontWeights;
template <typename T> struct impl_IFontWeightsStatics;
template <typename T> struct impl_ITextCharacterFormat;
template <typename T> struct impl_ITextConstantsStatics;
template <typename T> struct impl_ITextDocument;
template <typename T> struct impl_ITextParagraphFormat;
template <typename T> struct impl_ITextRange;
template <typename T> struct impl_ITextSelection;

}

namespace impl {

template <> struct traits<Windows::UI::Text::IFontWeights>
{
    using abi = ABI::Windows::UI::Text::IFontWeights;
    template <typename D> using consume = Windows::UI::Text::impl_IFontWeights<D>;
};

template <> struct traits<Windows::UI::Text::IFontWeightsStatics>
{
    using abi = ABI::Windows::UI::Text::IFontWeightsStatics;
    template <typename D> using consume = Windows::UI::Text::impl_IFontWeightsStatics<D>;
};

template <> struct traits<Windows::UI::Text::ITextCharacterFormat>
{
    using abi = ABI::Windows::UI::Text::ITextCharacterFormat;
    template <typename D> using consume = Windows::UI::Text::impl_ITextCharacterFormat<D>;
};

template <> struct traits<Windows::UI::Text::ITextConstantsStatics>
{
    using abi = ABI::Windows::UI::Text::ITextConstantsStatics;
    template <typename D> using consume = Windows::UI::Text::impl_ITextConstantsStatics<D>;
};

template <> struct traits<Windows::UI::Text::ITextDocument>
{
    using abi = ABI::Windows::UI::Text::ITextDocument;
    template <typename D> using consume = Windows::UI::Text::impl_ITextDocument<D>;
};

template <> struct traits<Windows::UI::Text::ITextParagraphFormat>
{
    using abi = ABI::Windows::UI::Text::ITextParagraphFormat;
    template <typename D> using consume = Windows::UI::Text::impl_ITextParagraphFormat<D>;
};

template <> struct traits<Windows::UI::Text::ITextRange>
{
    using abi = ABI::Windows::UI::Text::ITextRange;
    template <typename D> using consume = Windows::UI::Text::impl_ITextRange<D>;
};

template <> struct traits<Windows::UI::Text::ITextSelection>
{
    using abi = ABI::Windows::UI::Text::ITextSelection;
    template <typename D> using consume = Windows::UI::Text::impl_ITextSelection<D>;
};

template <> struct traits<Windows::UI::Text::FontWeights>
{
    using abi = ABI::Windows::UI::Text::FontWeights;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Text.FontWeights"; }
};

template <> struct traits<Windows::UI::Text::TextConstants>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Text.TextConstants"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Security.Authentication.Web.Core.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Security.Authentication.Web.Core.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Security.Credentials.0.h"
#include "Windows.System.0.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Foundation.1.h"
#include "Windows.Security.Credentials.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Security::Authentication::Web::Core {

struct __declspec(uuid("6fb7037d-424e-44ec-977c-ef2415462a5a")) __declspec(novtable) IWebAccountEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Account(Windows::Security::Credentials::IWebAccount ** value) = 0;
};

struct __declspec(uuid("7445f5fd-aa9d-4619-8d5d-c138a4ede3e5")) __declspec(novtable) IWebAccountMonitor : Windows::IInspectable
{
    virtual HRESULT __stdcall add_Updated(Windows::Foundation::TypedEventHandler<Windows::Security::Authentication::Web::Core::WebAccountMonitor, Windows::Security::Authentication::Web::Core::WebAccountEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_Updated(event_token token) = 0;
    virtual HRESULT __stdcall add_Removed(Windows::Foundation::TypedEventHandler<Windows::Security::Authentication::Web::Core::WebAccountMonitor, Windows::Security::Authentication::Web::Core::WebAccountEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_Removed(event_token token) = 0;
    virtual HRESULT __stdcall add_DefaultSignInAccountChanged(Windows::Foundation::TypedEventHandler<Windows::Security::Authentication::Web::Core::WebAccountMonitor, Windows::IInspectable> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_DefaultSignInAccountChanged(event_token token) = 0;
};

struct __declspec(uuid("6aca7c92-a581-4479-9c10-752eff44fd34")) __declspec(novtable) IWebAuthenticationCoreManagerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetTokenSilentlyAsync(Windows::Security::Authentication::Web::Core::IWebTokenRequest * request, Windows::Foundation::IAsyncOperation<Windows::Security::Authentication::Web::Core::WebTokenRequestResult> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_GetTokenSilentlyWithWebAccountAsync(Windows::Security::Authentication::Web::Core::IWebTokenRequest * request, Windows::Security::Credentials::IWebAccount * webAccount, Windows::Foundation::IAsyncOperation<Windows::Security::Authentication::Web::Core::WebTokenRequestResult> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_RequestTokenAsync(Windows::Security::Authentication::Web::Core::IWebTokenRequest * request, Windows::Foundation::IAsyncOperation<Windows::Security::Authentication::Web::Core::WebTokenRequestResult> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_RequestTokenWithWebAccountAsync(Windows::Security::Authentication::Web::Core::IWebTokenRequest * request, Windows::Security::Credentials::IWebAccount * webAccount, Windows::Foundation::IAsyncOperation<Windows::Security::Authentication::Web::Core::WebTokenRequestResult> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_FindAccountAsync(Windows::Security::Credentials::IWebAccountProvider * provider, hstring webAccountId, Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccount> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_FindAccountProviderAsync(hstring webAccountProviderId, Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccountProvider> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_FindAccountProviderWithAuthorityAsync(hstring webAccountProviderId, hstring authority, Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccountProvider> ** asyncInfo) = 0;
};

struct __declspec(uuid("f584184a-8b57-4820-b6a4-70a5b6fcf44a")) __declspec(novtable) IWebAuthenticationCoreManagerStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_FindAccountProviderWithAuthorityForUserAsync(hstring webAccountProviderId, hstring authority, Windows::System::IUser * user, Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccountProvider> ** asyncInfo) = 0;
};

struct __declspec(uuid("2404eeb2-8924-4d93-ab3a-99688b419d56")) __declspec(novtable) IWebAuthenticationCoreManagerStatics3 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateWebAccountMonitor(Windows::Foundation::Collections::IIterable<Windows::Security::Credentials::WebAccount> * webAccounts, Windows::Security::Authentication::Web::Core::IWebAccountMonitor ** result) = 0;
};

struct __declspec(uuid("db191bb1-50c5-4809-8dca-09c99410245c")) __declspec(novtable) IWebProviderError : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ErrorCode(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_ErrorMessage(hstring * value) = 0;
    virtual HRESULT __stdcall get_Properties(Windows::Foundation::Collections::IMap<hstring, hstring> ** value) = 0;
};

struct __declspec(uuid("e3c40a2d-89ef-4e37-847f-a8b9d5a32910")) __declspec(novtable) IWebProviderErrorFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(uint32_t errorCode, hstring errorMessage, Windows::Security::Authentication::Web::Core::IWebProviderError ** webProviderError) = 0;
};

struct __declspec(uuid("b77b4d68-adcb-4673-b364-0cf7b35caf97")) __declspec(novtable) IWebTokenRequest : Windows::IInspectable
{
    virtual HRESULT __stdcall get_WebAccountProvider(Windows::Security::Credentials::IWebAccountProvider ** value) = 0;
    virtual HRESULT __stdcall get_Scope(hstring * value) = 0;
    virtual HRESULT __stdcall get_ClientId(hstring * value) = 0;
    virtual HRESULT __stdcall get_PromptType(winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestPromptType * value) = 0;
    virtual HRESULT __stdcall get_Properties(Windows::Foundation::Collections::IMap<hstring, hstring> ** requestProperties) = 0;
};

struct __declspec(uuid("d700c079-30c8-4397-9654-961c3be8b855")) __declspec(novtable) IWebTokenRequest2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AppProperties(Windows::Foundation::Collections::IMap<hstring, hstring> ** requestProperties) = 0;
};

struct __declspec(uuid("6cf2141c-0ff0-4c67-b84f-99ddbe4a72c9")) __declspec(novtable) IWebTokenRequestFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(Windows::Security::Credentials::IWebAccountProvider * provider, hstring scope, hstring clientId, Windows::Security::Authentication::Web::Core::IWebTokenRequest ** webTokenRequest) = 0;
    virtual HRESULT __stdcall abi_CreateWithPromptType(Windows::Security::Credentials::IWebAccountProvider * provider, hstring scope, hstring clientId, winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestPromptType promptType, Windows::Security::Authentication::Web::Core::IWebTokenRequest ** webTokenRequest) = 0;
    virtual HRESULT __stdcall abi_CreateWithProvider(Windows::Security::Credentials::IWebAccountProvider * provider, Windows::Security::Authentication::Web::Core::IWebTokenRequest ** webTokenRequest) = 0;
    virtual HRESULT __stdcall abi_CreateWithScope(Windows::Security::Credentials::IWebAccountProvider * provider, hstring scope, Windows::Security::Authentication::Web::Core::IWebTokenRequest ** webTokenRequest) = 0;
};

struct __declspec(uuid("c12a8305-d1f8-4483-8d54-38fe292784ff")) __declspec(novtable) IWebTokenRequestResult : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ResponseData(Windows::Foundation::Collections::IVectorView<Windows::Security::Authentication::Web::Core::WebTokenResponse> ** value) = 0;
    virtual HRESULT __stdcall get_ResponseStatus(winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestStatus * value) = 0;
    virtual HRESULT __stdcall get_ResponseError(Windows::Security::Authentication::Web::Core::IWebProviderError ** value) = 0;
    virtual HRESULT __stdcall abi_InvalidateCacheAsync(Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("67a7c5ca-83f6-44c6-a3b1-0eb69e41fa8a")) __declspec(novtable) IWebTokenResponse : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Token(hstring * value) = 0;
    virtual HRESULT __stdcall get_ProviderError(Windows::Security::Authentication::Web::Core::IWebProviderError ** value) = 0;
    virtual HRESULT __stdcall get_WebAccount(Windows::Security::Credentials::IWebAccount ** value) = 0;
    virtual HRESULT __stdcall get_Properties(Windows::Foundation::Collections::IMap<hstring, hstring> ** value) = 0;
};

struct __declspec(uuid("ab6bf7f8-5450-4ef6-97f7-052b0431c0f0")) __declspec(novtable) IWebTokenResponseFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateWithToken(hstring token, Windows::Security::Authentication::Web::Core::IWebTokenResponse ** webTokenResponse) = 0;
    virtual HRESULT __stdcall abi_CreateWithTokenAndAccount(hstring token, Windows::Security::Credentials::IWebAccount * webAccount, Windows::Security::Authentication::Web::Core::IWebTokenResponse ** webTokenResponse) = 0;
    virtual HRESULT __stdcall abi_CreateWithTokenAccountAndError(hstring token, Windows::Security::Credentials::IWebAccount * webAccount, Windows::Security::Authentication::Web::Core::IWebProviderError * error, Windows::Security::Authentication::Web::Core::IWebTokenResponse ** webTokenResponse) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Security::Authentication::Web::Core::WebAccountEventArgs> { using default_interface = Windows::Security::Authentication::Web::Core::IWebAccountEventArgs; };
template <> struct traits<Windows::Security::Authentication::Web::Core::WebAccountMonitor> { using default_interface = Windows::Security::Authentication::Web::Core::IWebAccountMonitor; };
template <> struct traits<Windows::Security::Authentication::Web::Core::WebProviderError> { using default_interface = Windows::Security::Authentication::Web::Core::IWebProviderError; };
template <> struct traits<Windows::Security::Authentication::Web::Core::WebTokenRequest> { using default_interface = Windows::Security::Authentication::Web::Core::IWebTokenRequest; };
template <> struct traits<Windows::Security::Authentication::Web::Core::WebTokenRequestResult> { using default_interface = Windows::Security::Authentication::Web::Core::IWebTokenRequestResult; };
template <> struct traits<Windows::Security::Authentication::Web::Core::WebTokenResponse> { using default_interface = Windows::Security::Authentication::Web::Core::IWebTokenResponse; };

}

namespace Windows::Security::Authentication::Web::Core {

template <typename T> struct impl_IWebAccountEventArgs;
template <typename T> struct impl_IWebAccountMonitor;
template <typename T> struct impl_IWebAuthenticationCoreManagerStatics;
template <typename T> struct impl_IWebAuthenticationCoreManagerStatics2;
template <typename T> struct impl_IWebAuthenticationCoreManagerStatics3;
template <typename T> struct impl_IWebProviderError;
template <typename T> struct impl_IWebProviderErrorFactory;
template <typename T> struct impl_IWebTokenRequest;
template <typename T> struct impl_IWebTokenRequest2;
template <typename T> struct impl_IWebTokenRequestFactory;
template <typename T> struct impl_IWebTokenRequestResult;
template <typename T> struct impl_IWebTokenResponse;
template <typename T> struct impl_IWebTokenResponseFactory;

}

namespace impl {

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebAccountEventArgs>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebAccountEventArgs;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebAccountEventArgs<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebAccountMonitor>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebAccountMonitor;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebAccountMonitor<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebAuthenticationCoreManagerStatics<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics2>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics2;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebAuthenticationCoreManagerStatics2<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics3>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics3;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebAuthenticationCoreManagerStatics3<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebProviderError>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebProviderError;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebProviderError<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebProviderErrorFactory>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebProviderErrorFactory;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebProviderErrorFactory<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebTokenRequest>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebTokenRequest;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebTokenRequest<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebTokenRequest2>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebTokenRequest2;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebTokenRequest2<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebTokenRequestFactory<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebTokenRequestResult<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebTokenResponse>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebTokenResponse;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebTokenResponse<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory;
    template <typename D> using consume = Windows::Security::Authentication::Web::Core::impl_IWebTokenResponseFactory<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Core::WebAccountEventArgs>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::WebAccountEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Core.WebAccountEventArgs"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Core::WebAccountMonitor>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::WebAccountMonitor;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Core.WebAccountMonitor"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Core::WebAuthenticationCoreManager>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Core.WebAuthenticationCoreManager"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Core::WebProviderError>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::WebProviderError;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Core.WebProviderError"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Core::WebTokenRequest>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::WebTokenRequest;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Core.WebTokenRequest"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Core::WebTokenRequestResult>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::WebTokenRequestResult;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Core.WebTokenRequestResult"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Core::WebTokenResponse>
{
    using abi = ABI::Windows::Security::Authentication::Web::Core::WebTokenResponse;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Core.WebTokenResponse"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Devices.Pwm.Provider.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Devices.Pwm.Provider.3.h"
#include "Windows.Devices.Pwm.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Devices::Pwm::Provider::IPwmControllerProvider> : produce_base<D, Windows::Devices::Pwm::Provider::IPwmControllerProvider>
{
    HRESULT __stdcall get_PinCount(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PinCount());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ActualFrequency(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ActualFrequency());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetDesiredFrequency(double frequency, double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SetDesiredFrequency(frequency));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaxFrequency(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxFrequency());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MinFrequency(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MinFrequency());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AcquirePin(int32_t pin) noexcept override
    {
        try
        {
            this->shim().AcquirePin(pin);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReleasePin(int32_t pin) noexcept override
    {
        try
        {
            this->shim().ReleasePin(pin);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EnablePin(int32_t pin) noexcept override
    {
        try
        {
            this->shim().EnablePin(pin);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_DisablePin(int32_t pin) noexcept override
    {
        try
        {
            this->shim().DisablePin(pin);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetPulseParameters(int32_t pin, double dutyCycle, bool invertPolarity) noexcept override
    {
        try
        {
            this->shim().SetPulseParameters(pin, dutyCycle, invertPolarity);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Pwm::Provider::IPwmProvider> : produce_base<D, Windows::Devices::Pwm::Provider::IPwmProvider>
{
    HRESULT __stdcall abi_GetControllers(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Pwm::Provider::IPwmControllerProvider>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetControllers());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Devices::Pwm::Provider {

template <typename D> int32_t impl_IPwmControllerProvider<D>::PinCount() const
{
    int32_t value {};
    check_hresult(static_cast<const IPwmControllerProvider &>(static_cast<const D &>(*this))->get_PinCount(&value));
    return value;
}

template <typename D> double impl_IPwmControllerProvider<D>::ActualFrequency() const
{
    double value {};
    check_hresult(static_cast<const IPwmControllerProvider &>(static_cast<const D &>(*this))->get_ActualFrequency(&value));
    return value;
}

template <typename D> double impl_IPwmControllerProvider<D>::SetDesiredFrequency(double frequency) const
{
    double value {};
    check_hresult(static_cast<const IPwmControllerProvider &>(static_cast<const D &>(*this))->abi_SetDesiredFrequency(frequency, &value));
    return value;
}

template <typename D> double impl_IPwmControllerProvider<D>::MaxFrequency() const
{
    double value {};
    check_hresult(static_cast<const IPwmControllerProvider &>(static_cast<const D &>(*this))->get_MaxFrequency(&value));
    return value;
}

template <typename D> double impl_IPwmControllerProvider<D>::MinFrequency() const
{
    double value {};
    check_hresult(static_cast<const IPwmControllerProvider &>(static_cast<const D &>(*this))->get_MinFrequency(&value));
    return value;
}

template <typename D> void impl_IPwmControllerProvider<D>::AcquirePin(int32_t pin) const
{
    check_hresult(static_cast<const IPwmControllerProvider &>(static_cast<const D &>(*this))->abi_AcquirePin(pin));
}

template <typename D> void impl_IPwmControllerProvider<D>::ReleasePin(int32_t pin) const
{
    check_hresult(static_cast<const IPwmControllerProvider &>(static_cast<const D &>(*this))->abi_ReleasePin(pin));
}

template <typename D> void impl_IPwmControllerProvider<D>::EnablePin(int32_t pin) const
{
    check_hresult(static_cast<const IPwmControllerProvider &>(static_cast<const D &>(*this))->abi_EnablePin(pin));
}

template <typename D> void impl_IPwmControllerProvider<D>::DisablePin(int32_t pin) const
{
    check_hresult(static_cast<const IPwmControllerProvider &>(static_cast<const D &>(*this))->abi_DisablePin(pin));
}

template <typename D> void impl_IPwmControllerProvider<D>::SetPulseParameters(int32_t pin, double dutyCycle, bool invertPolarity) const
{
    check_hresult(static_cast<const IPwmControllerProvider &>(static_cast<const D &>(*this))->abi_SetPulseParameters(pin, dutyCycle, invertPolarity));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Pwm::Provider::IPwmControllerProvider> impl_IPwmProvider<D>::GetControllers() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Pwm::Provider::IPwmControllerProvider> result;
    check_hresult(static_cast<const IPwmProvider &>(static_cast<const D &>(*this))->abi_GetControllers(put(result)));
    return result;
}

}

}


<|start_filename|>Desktop/RadialDevice/DeviceListener.h<|end_filename|>
#pragma once

#include <wrl\implements.h>
#include <wrl\module.h>
#include <wrl\event.h>
#include <roapi.h>
#include <wrl.h>
#include <wrl\client.h>
#include <windows.foundation.h>
#include <windows.foundation.numerics.h>
#include <windows.foundation.collections.h>
#include <windows.ui.input.h>
#include <Windows.ApplicationModel.h>
#include <Windows.ApplicationModel.datatransfer.h>

#include <RadialControllerInterop.h>

using namespace ABI::Windows::UI::Input;
using namespace ABI::Windows::Foundation;
using namespace Microsoft::WRL;
using namespace Microsoft::WRL::Wrappers;

class CRadialDevice;
class DeviceListener
{
	CRadialDevice*	m_pRadialDevice = nullptr;
	
    Microsoft::WRL::ComPtr<IRadialControllerInterop> m_controllerInterop;
    Microsoft::WRL::ComPtr<ABI::Windows::UI::Input::IRadialController> m_controller;
    Microsoft::WRL::ComPtr<ABI::Windows::UI::Input::IRadialControllerMenuItemStatics> m_menuItemStatics;

	EventRegistrationToken m_bottonClickedToken;
    EventRegistrationToken m_rotatedToken;
    EventRegistrationToken m_screenContactStartedToken;
    EventRegistrationToken m_screenContactEndedToken;
    EventRegistrationToken m_screenContactContinuedToken;
    EventRegistrationToken m_controlLostToken;
    EventRegistrationToken m_controlAcquiredToken;
    EventRegistrationToken m_buttonClickedToken;
        
    HRESULT RegisterForEvents(HWND hwnd);
	HRESULT AddMenuItemFromKnownIcon(ComPtr<ABI::Windows::UI::Input::IRadialControllerMenuItem>* pOutNewMenuItem, _In_ HSTRING itemName, _In_ RadialControllerMenuKnownIcon icon, _Out_ EventRegistrationToken* pOutToken);
	HRESULT AddMenuItemFromUnknownIcon(ComPtr<ABI::Windows::UI::Input::IRadialControllerMenuItem>* pOutNewMenuItem, _In_ HSTRING itemName, _In_ ComPtr<ABI::Windows::Storage::Streams::IRandomAccessStreamReference> icon, _Out_ EventRegistrationToken* pOutToken);
    HRESULT OnItemInvoked(_In_ ABI::Windows::UI::Input::IRadialControllerMenuItem* item, _In_ IInspectable* args);

    HRESULT OnScreenContactContinued(_In_ ABI::Windows::UI::Input::IRadialController*, _In_ ABI::Windows::UI::Input::IRadialControllerScreenContactContinuedEventArgs* args);
    HRESULT OnScreenContactStarted(_In_ ABI::Windows::UI::Input::IRadialController*, _In_ ABI::Windows::UI::Input::IRadialControllerScreenContactStartedEventArgs* args);
    HRESULT OnScreenContactEnded(_In_ ABI::Windows::UI::Input::IRadialController* /*sender*/, _In_ IInspectable* args);
    HRESULT OnControlLost(_In_ ABI::Windows::UI::Input::IRadialController* sender, _In_ IInspectable* args);
    HRESULT OnControlAcquired(_In_ ABI::Windows::UI::Input::IRadialController* sender, _In_ ABI::Windows::UI::Input::IRadialControllerControlAcquiredEventArgs* args);
    HRESULT OnRotationChanged(_In_ ABI::Windows::UI::Input::IRadialController* sender, _In_ ABI::Windows::UI::Input::IRadialControllerRotationChangedEventArgs* args);
	HRESULT OnButtonClicked(_In_ ABI::Windows::UI::Input::IRadialController* sender, _In_ ABI::Windows::UI::Input::IRadialControllerButtonClickedEventArgs* args);
       
    DWORD _threadId = 0;
	
public:
    DeviceListener();
	~DeviceListener();

    HRESULT Init(CRadialDevice* pRadialDevice,HWND hwnd);
    HRESULT SetRotationResolution(double res);
	HRESULT AddMenuItem(ComPtr<ABI::Windows::UI::Input::IRadialControllerMenuItem>* pOutMenuItem, const WCHAR* wchIconFileName, const WCHAR* wchMenuName, EventRegistrationToken* pOutToken);;
	

private:
	
};



<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Documents.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Xaml::Documents {

struct IBlock;
struct IBlockFactory;
struct IBlockStatics;
struct IBold;
struct IGlyphs;
struct IGlyphs2;
struct IGlyphsStatics;
struct IGlyphsStatics2;
struct IHyperlink;
struct IHyperlink2;
struct IHyperlink3;
struct IHyperlinkClickEventArgs;
struct IHyperlinkStatics;
struct IHyperlinkStatics2;
struct IHyperlinkStatics3;
struct IInline;
struct IInlineFactory;
struct IInlineUIContainer;
struct IItalic;
struct ILineBreak;
struct IParagraph;
struct IParagraphStatics;
struct IRun;
struct IRunStatics;
struct ISpan;
struct ISpanFactory;
struct ITextElement;
struct ITextElement2;
struct ITextElement3;
struct ITextElementFactory;
struct ITextElementOverrides;
struct ITextElementStatics;
struct ITextElementStatics2;
struct ITextElementStatics3;
struct ITextPointer;
struct ITypography;
struct ITypographyStatics;
struct IUnderline;
struct Block;
struct BlockCollection;
struct Bold;
struct Glyphs;
struct Hyperlink;
struct HyperlinkClickEventArgs;
struct Inline;
struct InlineCollection;
struct InlineUIContainer;
struct Italic;
struct LineBreak;
struct Paragraph;
struct Run;
struct Span;
struct TextElement;
struct TextPointer;
struct Typography;
struct Underline;

}

namespace Windows::UI::Xaml::Documents {

struct IBlock;
struct IBlockFactory;
struct IBlockStatics;
struct IBold;
struct IGlyphs;
struct IGlyphs2;
struct IGlyphsStatics;
struct IGlyphsStatics2;
struct IHyperlink;
struct IHyperlink2;
struct IHyperlink3;
struct IHyperlinkClickEventArgs;
struct IHyperlinkStatics;
struct IHyperlinkStatics2;
struct IHyperlinkStatics3;
struct IInline;
struct IInlineFactory;
struct IInlineUIContainer;
struct IItalic;
struct ILineBreak;
struct IParagraph;
struct IParagraphStatics;
struct IRun;
struct IRunStatics;
struct ISpan;
struct ISpanFactory;
struct ITextElement;
struct ITextElement2;
struct ITextElement3;
struct ITextElementFactory;
struct ITextElementOverrides;
struct ITextElementStatics;
struct ITextElementStatics2;
struct ITextElementStatics3;
struct ITextPointer;
struct ITypography;
struct ITypographyStatics;
struct IUnderline;
struct Block;
struct BlockCollection;
struct Bold;
struct Glyphs;
struct Hyperlink;
struct HyperlinkClickEventArgs;
struct Inline;
struct InlineCollection;
struct InlineUIContainer;
struct Italic;
struct LineBreak;
struct Paragraph;
struct Run;
struct Span;
struct TextElement;
struct TextPointer;
struct Typography;
struct Underline;

}

namespace Windows::UI::Xaml::Documents {

enum class LogicalDirection
{
    Backward = 0,
    Forward = 1,
};

enum class UnderlineStyle
{
    None = 0,
    Single = 1,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Text.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.UI.Text.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::UI::Text {

struct WINRT_EBO FontWeights :
    Windows::UI::Text::IFontWeights
{
    FontWeights(std::nullptr_t) noexcept {}
    static Windows::UI::Text::FontWeight Black();
    static Windows::UI::Text::FontWeight Bold();
    static Windows::UI::Text::FontWeight ExtraBlack();
    static Windows::UI::Text::FontWeight ExtraBold();
    static Windows::UI::Text::FontWeight ExtraLight();
    static Windows::UI::Text::FontWeight Light();
    static Windows::UI::Text::FontWeight Medium();
    static Windows::UI::Text::FontWeight Normal();
    static Windows::UI::Text::FontWeight SemiBold();
    static Windows::UI::Text::FontWeight SemiLight();
    static Windows::UI::Text::FontWeight Thin();
};

struct TextConstants
{
    TextConstants() = delete;
    static Windows::UI::Color AutoColor();
    static int32_t MinUnitCount();
    static int32_t MaxUnitCount();
    static Windows::UI::Color UndefinedColor();
    static float UndefinedFloatValue();
    static int32_t UndefinedInt32Value();
    static Windows::UI::Text::FontStretch UndefinedFontStretch();
    static Windows::UI::Text::FontStyle UndefinedFontStyle();
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Foundation.Metadata.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Foundation.Metadata.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Foundation::Metadata {

struct ApiInformation
{
    ApiInformation() = delete;
    static bool IsTypePresent(hstring_ref typeName);
    static bool IsMethodPresent(hstring_ref typeName, hstring_ref methodName);
    static bool IsMethodPresent(hstring_ref typeName, hstring_ref methodName, uint32_t inputParameterCount);
    static bool IsEventPresent(hstring_ref typeName, hstring_ref eventName);
    static bool IsPropertyPresent(hstring_ref typeName, hstring_ref propertyName);
    static bool IsReadOnlyPropertyPresent(hstring_ref typeName, hstring_ref propertyName);
    static bool IsWriteablePropertyPresent(hstring_ref typeName, hstring_ref propertyName);
    static bool IsEnumNamedValuePresent(hstring_ref enumTypeName, hstring_ref valueName);
    static bool IsApiContractPresent(hstring_ref contractName, uint16_t majorVersion);
    static bool IsApiContractPresent(hstring_ref contractName, uint16_t majorVersion, uint16_t minorVersion);
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.System.UserProfile.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.System.UserProfile.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
#define WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
template <> struct __declspec(uuid("cdb5efb3-5788-509d-9be1-71ccb8a3362a")) __declspec(novtable) IAsyncOperation<bool> : impl_IAsyncOperation<bool> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_09335560_6c6b_5a26_9348_97b781132b20
#define WINRT_GENERIC_09335560_6c6b_5a26_9348_97b781132b20
template <> struct __declspec(uuid("09335560-6c6b-5a26-9348-97b781132b20")) __declspec(novtable) IKeyValuePair<hstring, Windows::IInspectable> : impl_IKeyValuePair<hstring, Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_3e1fe603_f897_5263_b328_0806426b8a79
#define WINRT_GENERIC_3e1fe603_f897_5263_b328_0806426b8a79
template <> struct __declspec(uuid("3e1fe603-f897-5263-b328-0806426b8a79")) __declspec(novtable) IAsyncOperation<hstring> : impl_IAsyncOperation<hstring> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
#define WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
template <> struct __declspec(uuid("2f13c006-a03a-5f69-b090-75a43e33423e")) __declspec(novtable) IVectorView<hstring> : impl_IVectorView<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
#define WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
template <> struct __declspec(uuid("c50898f6-c536-5f47-8583-8b2c2438a13b")) __declspec(novtable) EventHandler<Windows::IInspectable> : impl_EventHandler<Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_bb78502a_f79d_54fa_92c9_90c5039fdf7e
#define WINRT_GENERIC_bb78502a_f79d_54fa_92c9_90c5039fdf7e
template <> struct __declspec(uuid("bb78502a-f79d-54fa-92c9-90c5039fdf7e")) __declspec(novtable) IMapView<hstring, Windows::IInspectable> : impl_IMapView<hstring, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
#define WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
template <> struct __declspec(uuid("e2fcc7c1-3bfc-5a0b-b2b0-72e769d1cb7e")) __declspec(novtable) IIterable<hstring> : impl_IIterable<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_641cb9dd_a28d_59e2_b8db_a227eda6cf2e
#define WINRT_GENERIC_641cb9dd_a28d_59e2_b8db_a227eda6cf2e
template <> struct __declspec(uuid("641cb9dd-a28d-59e2-b8db-a227eda6cf2e")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Uri> : impl_IAsyncOperation<Windows::Foundation::Uri> {};
#endif

#ifndef WINRT_GENERIC_6809e406_6d3b_5164_8f32_b845b0781405
#define WINRT_GENERIC_6809e406_6d3b_5164_8f32_b845b0781405
template <> struct __declspec(uuid("6809e406-6d3b-5164-8f32-b845b0781405")) __declspec(novtable) IAsyncOperation<winrt::Windows::System::UserProfile::SetAccountPictureResult> : impl_IAsyncOperation<winrt::Windows::System::UserProfile::SetAccountPictureResult> {};
#endif

#ifndef WINRT_GENERIC_5361bfc9_0740_544a_9797_1ffe5e73c54e
#define WINRT_GENERIC_5361bfc9_0740_544a_9797_1ffe5e73c54e
template <> struct __declspec(uuid("5361bfc9-0740-544a-9797-1ffe5e73c54e")) __declspec(novtable) IAsyncOperation<winrt::Windows::System::UserProfile::SetImageFeedResult> : impl_IAsyncOperation<winrt::Windows::System::UserProfile::SetImageFeedResult> {};
#endif

#ifndef WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
#define WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
template <> struct __declspec(uuid("c1d3d1a2-ae17-5a5f-b5a2-bdcc8844889a")) __declspec(novtable) AsyncOperationCompletedHandler<bool> : impl_AsyncOperationCompletedHandler<bool> {};
#endif

#ifndef WINRT_GENERIC_b79a741f_7fb5_50ae_9e99_911201ec3d41
#define WINRT_GENERIC_b79a741f_7fb5_50ae_9e99_911201ec3d41
template <> struct __declspec(uuid("b79a741f-7fb5-50ae-9e99-911201ec3d41")) __declspec(novtable) AsyncOperationCompletedHandler<hstring> : impl_AsyncOperationCompletedHandler<hstring> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
#define WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
template <> struct __declspec(uuid("8c304ebb-6615-50a4-8829-879ecd443236")) __declspec(novtable) IIterator<hstring> : impl_IIterator<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_ad46f1cc_2bb0_585c_9885_03c2780d4d58
#define WINRT_GENERIC_ad46f1cc_2bb0_585c_9885_03c2780d4d58
template <> struct __declspec(uuid("ad46f1cc-2bb0-585c-9885-03c2780d4d58")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Uri> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Uri> {};
#endif

#ifndef WINRT_GENERIC_603f3e31_7a51_518c_9280_c188ea4213d8
#define WINRT_GENERIC_603f3e31_7a51_518c_9280_c188ea4213d8
template <> struct __declspec(uuid("603f3e31-7a51-518c-9280-c188ea4213d8")) __declspec(novtable) AsyncOperationCompletedHandler<winrt::Windows::System::UserProfile::SetAccountPictureResult> : impl_AsyncOperationCompletedHandler<winrt::Windows::System::UserProfile::SetAccountPictureResult> {};
#endif

#ifndef WINRT_GENERIC_f214731a_1305_5b44_932c_af9a1e4d78c9
#define WINRT_GENERIC_f214731a_1305_5b44_932c_af9a1e4d78c9
template <> struct __declspec(uuid("f214731a-1305-5b44-932c-af9a1e4d78c9")) __declspec(novtable) AsyncOperationCompletedHandler<winrt::Windows::System::UserProfile::SetImageFeedResult> : impl_AsyncOperationCompletedHandler<winrt::Windows::System::UserProfile::SetImageFeedResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_fe2f3d47_5d47_5499_8374_430c7cda0204
#define WINRT_GENERIC_fe2f3d47_5d47_5499_8374_430c7cda0204
template <> struct __declspec(uuid("fe2f3d47-5d47-5499-8374-430c7cda0204")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::IInspectable>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::IInspectable>> {};
#endif

#ifndef WINRT_GENERIC_5db5fa32_707c_5849_a06b_91c8eb9d10e8
#define WINRT_GENERIC_5db5fa32_707c_5849_a06b_91c8eb9d10e8
template <> struct __declspec(uuid("5db5fa32-707c-5849-a06b-91c8eb9d10e8")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::IInspectable>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::IInspectable>> {};
#endif


}

namespace Windows::System::UserProfile {

template <typename D>
struct WINRT_EBO impl_IAdvertisingManagerForUser
{
    hstring AdvertisingId() const;
    Windows::System::User User() const;
};

template <typename D>
struct WINRT_EBO impl_IAdvertisingManagerStatics
{
    hstring AdvertisingId() const;
};

template <typename D>
struct WINRT_EBO impl_IAdvertisingManagerStatics2
{
    Windows::System::UserProfile::AdvertisingManagerForUser GetForUser(const Windows::System::User & user) const;
};

template <typename D>
struct WINRT_EBO impl_IFirstSignInSettings
{
};

template <typename D>
struct WINRT_EBO impl_IFirstSignInSettingsStatics
{
    Windows::System::UserProfile::FirstSignInSettings GetDefault() const;
};

template <typename D>
struct WINRT_EBO impl_IGlobalizationPreferencesStatics
{
    Windows::Foundation::Collections::IVectorView<hstring> Calendars() const;
    Windows::Foundation::Collections::IVectorView<hstring> Clocks() const;
    Windows::Foundation::Collections::IVectorView<hstring> Currencies() const;
    Windows::Foundation::Collections::IVectorView<hstring> Languages() const;
    hstring HomeGeographicRegion() const;
    Windows::Globalization::DayOfWeek WeekStartsOn() const;
};

template <typename D>
struct WINRT_EBO impl_ILockScreenImageFeedStatics
{
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::UserProfile::SetImageFeedResult> RequestSetImageFeedAsync(const Windows::Foundation::Uri & syndicationFeedUri) const;
    bool TryRemoveImageFeed() const;
};

template <typename D>
struct WINRT_EBO impl_ILockScreenStatics
{
    Windows::Foundation::Uri OriginalImageFile() const;
    Windows::Storage::Streams::IRandomAccessStream GetImageStream() const;
    Windows::Foundation::IAsyncAction SetImageFileAsync(const Windows::Storage::IStorageFile & value) const;
    Windows::Foundation::IAsyncAction SetImageStreamAsync(const Windows::Storage::Streams::IRandomAccessStream & value) const;
};

template <typename D>
struct WINRT_EBO impl_IUserInformationStatics
{
    bool AccountPictureChangeEnabled() const;
    bool NameAccessAllowed() const;
    Windows::Storage::IStorageFile GetAccountPicture(Windows::System::UserProfile::AccountPictureKind kind) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::UserProfile::SetAccountPictureResult> SetAccountPictureAsync(const Windows::Storage::IStorageFile & image) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::UserProfile::SetAccountPictureResult> SetAccountPicturesAsync(const Windows::Storage::IStorageFile & smallImage, const Windows::Storage::IStorageFile & largeImage, const Windows::Storage::IStorageFile & video) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::UserProfile::SetAccountPictureResult> SetAccountPictureFromStreamAsync(const Windows::Storage::Streams::IRandomAccessStream & image) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::UserProfile::SetAccountPictureResult> SetAccountPicturesFromStreamsAsync(const Windows::Storage::Streams::IRandomAccessStream & smallImage, const Windows::Storage::Streams::IRandomAccessStream & largeImage, const Windows::Storage::Streams::IRandomAccessStream & video) const;
    event_token AccountPictureChanged(const Windows::Foundation::EventHandler<Windows::IInspectable> & changeHandler) const;
    using AccountPictureChanged_revoker = event_revoker<IUserInformationStatics>;
    AccountPictureChanged_revoker AccountPictureChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & changeHandler) const;
    void AccountPictureChanged(event_token token) const;
    Windows::Foundation::IAsyncOperation<hstring> GetDisplayNameAsync() const;
    Windows::Foundation::IAsyncOperation<hstring> GetFirstNameAsync() const;
    Windows::Foundation::IAsyncOperation<hstring> GetLastNameAsync() const;
    Windows::Foundation::IAsyncOperation<hstring> GetPrincipalNameAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Uri> GetSessionInitiationProtocolUriAsync() const;
    Windows::Foundation::IAsyncOperation<hstring> GetDomainNameAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IUserProfilePersonalizationSettings
{
    Windows::Foundation::IAsyncOperation<bool> TrySetLockScreenImageAsync(const Windows::Storage::StorageFile & imageFile) const;
    Windows::Foundation::IAsyncOperation<bool> TrySetWallpaperImageAsync(const Windows::Storage::StorageFile & imageFile) const;
};

template <typename D>
struct WINRT_EBO impl_IUserProfilePersonalizationSettingsStatics
{
    Windows::System::UserProfile::UserProfilePersonalizationSettings Current() const;
    bool IsSupported() const;
};

struct IAdvertisingManagerForUser :
    Windows::IInspectable,
    impl::consume<IAdvertisingManagerForUser>
{
    IAdvertisingManagerForUser(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAdvertisingManagerForUser>(m_ptr); }
};

struct IAdvertisingManagerStatics :
    Windows::IInspectable,
    impl::consume<IAdvertisingManagerStatics>
{
    IAdvertisingManagerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAdvertisingManagerStatics>(m_ptr); }
};

struct IAdvertisingManagerStatics2 :
    Windows::IInspectable,
    impl::consume<IAdvertisingManagerStatics2>
{
    IAdvertisingManagerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAdvertisingManagerStatics2>(m_ptr); }
};

struct IFirstSignInSettings :
    Windows::IInspectable,
    impl::consume<IFirstSignInSettings>,
    impl::require<IFirstSignInSettings, Windows::Foundation::Collections::IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::IInspectable>>, Windows::Foundation::Collections::IMapView<hstring, Windows::IInspectable>>
{
    IFirstSignInSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFirstSignInSettings>(m_ptr); }
};

struct IFirstSignInSettingsStatics :
    Windows::IInspectable,
    impl::consume<IFirstSignInSettingsStatics>
{
    IFirstSignInSettingsStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFirstSignInSettingsStatics>(m_ptr); }
};

struct IGlobalizationPreferencesStatics :
    Windows::IInspectable,
    impl::consume<IGlobalizationPreferencesStatics>
{
    IGlobalizationPreferencesStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGlobalizationPreferencesStatics>(m_ptr); }
};

struct ILockScreenImageFeedStatics :
    Windows::IInspectable,
    impl::consume<ILockScreenImageFeedStatics>
{
    ILockScreenImageFeedStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILockScreenImageFeedStatics>(m_ptr); }
};

struct ILockScreenStatics :
    Windows::IInspectable,
    impl::consume<ILockScreenStatics>
{
    ILockScreenStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILockScreenStatics>(m_ptr); }
};

struct IUserInformationStatics :
    Windows::IInspectable,
    impl::consume<IUserInformationStatics>
{
    IUserInformationStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserInformationStatics>(m_ptr); }
};

struct IUserProfilePersonalizationSettings :
    Windows::IInspectable,
    impl::consume<IUserProfilePersonalizationSettings>
{
    IUserProfilePersonalizationSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserProfilePersonalizationSettings>(m_ptr); }
};

struct IUserProfilePersonalizationSettingsStatics :
    Windows::IInspectable,
    impl::consume<IUserProfilePersonalizationSettingsStatics>
{
    IUserProfilePersonalizationSettingsStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserProfilePersonalizationSettingsStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Phone.System.Profile.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Phone.System.Profile.3.h"
#include "Windows.Phone.System.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Phone::System::Profile::IRetailModeStatics> : produce_base<D, Windows::Phone::System::Profile::IRetailModeStatics>
{
    HRESULT __stdcall get_RetailModeEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RetailModeEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Phone::System::Profile {

template <typename D> bool impl_IRetailModeStatics<D>::RetailModeEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IRetailModeStatics &>(static_cast<const D &>(*this))->get_RetailModeEnabled(&value));
    return value;
}

inline bool RetailMode::RetailModeEnabled()
{
    return get_activation_factory<RetailMode, IRetailModeStatics>().RetailModeEnabled();
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Gaming.Input.Custom.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Storage.Streams.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Gaming.Input.3.h"
#include "internal/Windows.Gaming.Input.Custom.3.h"
#include "Windows.Gaming.Input.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Gaming::Input::Custom::ICustomGameControllerFactory> : produce_base<D, Windows::Gaming::Input::Custom::ICustomGameControllerFactory>
{
    HRESULT __stdcall abi_CreateGameController(abi_arg_in<Windows::Gaming::Input::Custom::IGameControllerProvider> provider, abi_arg_out<Windows::IInspectable> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateGameController(*reinterpret_cast<const Windows::Gaming::Input::Custom::IGameControllerProvider *>(&provider)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_OnGameControllerAdded(abi_arg_in<Windows::Gaming::Input::IGameController> value) noexcept override
    {
        try
        {
            this->shim().OnGameControllerAdded(*reinterpret_cast<const Windows::Gaming::Input::IGameController *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_OnGameControllerRemoved(abi_arg_in<Windows::Gaming::Input::IGameController> value) noexcept override
    {
        try
        {
            this->shim().OnGameControllerRemoved(*reinterpret_cast<const Windows::Gaming::Input::IGameController *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::Custom::IGameControllerFactoryManagerStatics> : produce_base<D, Windows::Gaming::Input::Custom::IGameControllerFactoryManagerStatics>
{
    HRESULT __stdcall abi_RegisterCustomFactoryForGipInterface(abi_arg_in<Windows::Gaming::Input::Custom::ICustomGameControllerFactory> factory, GUID interfaceId) noexcept override
    {
        try
        {
            this->shim().RegisterCustomFactoryForGipInterface(*reinterpret_cast<const Windows::Gaming::Input::Custom::ICustomGameControllerFactory *>(&factory), interfaceId);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RegisterCustomFactoryForHardwareId(abi_arg_in<Windows::Gaming::Input::Custom::ICustomGameControllerFactory> factory, uint16_t hardwareVendorId, uint16_t hardwareProductId) noexcept override
    {
        try
        {
            this->shim().RegisterCustomFactoryForHardwareId(*reinterpret_cast<const Windows::Gaming::Input::Custom::ICustomGameControllerFactory *>(&factory), hardwareVendorId, hardwareProductId);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RegisterCustomFactoryForXusbType(abi_arg_in<Windows::Gaming::Input::Custom::ICustomGameControllerFactory> factory, Windows::Gaming::Input::Custom::XusbDeviceType xusbType, Windows::Gaming::Input::Custom::XusbDeviceSubtype xusbSubtype) noexcept override
    {
        try
        {
            this->shim().RegisterCustomFactoryForXusbType(*reinterpret_cast<const Windows::Gaming::Input::Custom::ICustomGameControllerFactory *>(&factory), xusbType, xusbSubtype);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::Custom::IGameControllerInputSink> : produce_base<D, Windows::Gaming::Input::Custom::IGameControllerInputSink>
{
    HRESULT __stdcall abi_OnInputResumed(uint64_t timestamp) noexcept override
    {
        try
        {
            this->shim().OnInputResumed(timestamp);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_OnInputSuspended(uint64_t timestamp) noexcept override
    {
        try
        {
            this->shim().OnInputSuspended(timestamp);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::Custom::IGameControllerProvider> : produce_base<D, Windows::Gaming::Input::Custom::IGameControllerProvider>
{
    HRESULT __stdcall get_FirmwareVersionInfo(abi_arg_out<Windows::Gaming::Input::Custom::GameControllerVersionInfo> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FirmwareVersionInfo());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HardwareProductId(uint16_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HardwareProductId());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HardwareVendorId(uint16_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HardwareVendorId());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HardwareVersionInfo(abi_arg_out<Windows::Gaming::Input::Custom::GameControllerVersionInfo> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HardwareVersionInfo());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsConnected(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsConnected());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::Custom::IGipFirmwareUpdateResult> : produce_base<D, Windows::Gaming::Input::Custom::IGipFirmwareUpdateResult>
{
    HRESULT __stdcall get_ExtendedErrorCode(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExtendedErrorCode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FinalComponentId(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FinalComponentId());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Status(Windows::Gaming::Input::Custom::GipFirmwareUpdateStatus * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Status());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::Custom::IGipGameControllerInputSink> : produce_base<D, Windows::Gaming::Input::Custom::IGipGameControllerInputSink>
{
    HRESULT __stdcall abi_OnKeyReceived(uint64_t timestamp, uint8_t keyCode, bool isPressed) noexcept override
    {
        try
        {
            this->shim().OnKeyReceived(timestamp, keyCode, isPressed);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_OnMessageReceived(uint64_t timestamp, Windows::Gaming::Input::Custom::GipMessageClass messageClass, uint8_t messageId, uint8_t sequenceId, uint32_t __messageBufferSize, abi_arg_in<uint8_t> * messageBuffer) noexcept override
    {
        try
        {
            this->shim().OnMessageReceived(timestamp, messageClass, messageId, sequenceId, array_ref<const uint8_t>(messageBuffer, messageBuffer + __messageBufferSize));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::Custom::IGipGameControllerProvider> : produce_base<D, Windows::Gaming::Input::Custom::IGipGameControllerProvider>
{
    HRESULT __stdcall abi_SendMessage(Windows::Gaming::Input::Custom::GipMessageClass messageClass, uint8_t messageId, uint32_t __messageBufferSize, abi_arg_in<uint8_t> * messageBuffer) noexcept override
    {
        try
        {
            this->shim().SendMessage(messageClass, messageId, array_ref<const uint8_t>(messageBuffer, messageBuffer + __messageBufferSize));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SendReceiveMessage(Windows::Gaming::Input::Custom::GipMessageClass messageClass, uint8_t messageId, uint32_t __requestMessageBufferSize, abi_arg_in<uint8_t> * requestMessageBuffer, uint32_t __responseMessageBufferSize, abi_arg_out<uint8_t> responseMessageBuffer) noexcept override
    {
        try
        {
            this->shim().SendReceiveMessage(messageClass, messageId, array_ref<const uint8_t>(requestMessageBuffer, requestMessageBuffer + __requestMessageBufferSize), *responseMessageBuffer);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UpdateFirmwareAsync(abi_arg_in<Windows::Storage::Streams::IInputStream> firmwareImage, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Gaming::Input::Custom::GipFirmwareUpdateResult, Windows::Gaming::Input::Custom::GipFirmwareUpdateProgress>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().UpdateFirmwareAsync(*reinterpret_cast<const Windows::Storage::Streams::IInputStream *>(&firmwareImage)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::Custom::IXusbGameControllerInputSink> : produce_base<D, Windows::Gaming::Input::Custom::IXusbGameControllerInputSink>
{
    HRESULT __stdcall abi_OnInputReceived(uint64_t timestamp, uint8_t reportId, uint32_t __inputBufferSize, abi_arg_in<uint8_t> * inputBuffer) noexcept override
    {
        try
        {
            this->shim().OnInputReceived(timestamp, reportId, array_ref<const uint8_t>(inputBuffer, inputBuffer + __inputBufferSize));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::Custom::IXusbGameControllerProvider> : produce_base<D, Windows::Gaming::Input::Custom::IXusbGameControllerProvider>
{
    HRESULT __stdcall abi_SetVibration(double lowFrequencyMotorSpeed, double highFrequencyMotorSpeed) noexcept override
    {
        try
        {
            this->shim().SetVibration(lowFrequencyMotorSpeed, highFrequencyMotorSpeed);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Gaming::Input::Custom {

template <typename D> void impl_IGameControllerInputSink<D>::OnInputResumed(uint64_t timestamp) const
{
    check_hresult(static_cast<const IGameControllerInputSink &>(static_cast<const D &>(*this))->abi_OnInputResumed(timestamp));
}

template <typename D> void impl_IGameControllerInputSink<D>::OnInputSuspended(uint64_t timestamp) const
{
    check_hresult(static_cast<const IGameControllerInputSink &>(static_cast<const D &>(*this))->abi_OnInputSuspended(timestamp));
}

template <typename D> void impl_IGipGameControllerInputSink<D>::OnKeyReceived(uint64_t timestamp, uint8_t keyCode, bool isPressed) const
{
    check_hresult(static_cast<const IGipGameControllerInputSink &>(static_cast<const D &>(*this))->abi_OnKeyReceived(timestamp, keyCode, isPressed));
}

template <typename D> void impl_IGipGameControllerInputSink<D>::OnMessageReceived(uint64_t timestamp, Windows::Gaming::Input::Custom::GipMessageClass messageClass, uint8_t messageId, uint8_t sequenceId, array_ref<const uint8_t> messageBuffer) const
{
    check_hresult(static_cast<const IGipGameControllerInputSink &>(static_cast<const D &>(*this))->abi_OnMessageReceived(timestamp, messageClass, messageId, sequenceId, messageBuffer.size(), get(messageBuffer)));
}

template <typename D> void impl_IXusbGameControllerInputSink<D>::OnInputReceived(uint64_t timestamp, uint8_t reportId, array_ref<const uint8_t> inputBuffer) const
{
    check_hresult(static_cast<const IXusbGameControllerInputSink &>(static_cast<const D &>(*this))->abi_OnInputReceived(timestamp, reportId, inputBuffer.size(), get(inputBuffer)));
}

template <typename D> uint32_t impl_IGipFirmwareUpdateResult<D>::ExtendedErrorCode() const
{
    uint32_t value {};
    check_hresult(static_cast<const IGipFirmwareUpdateResult &>(static_cast<const D &>(*this))->get_ExtendedErrorCode(&value));
    return value;
}

template <typename D> uint32_t impl_IGipFirmwareUpdateResult<D>::FinalComponentId() const
{
    uint32_t value {};
    check_hresult(static_cast<const IGipFirmwareUpdateResult &>(static_cast<const D &>(*this))->get_FinalComponentId(&value));
    return value;
}

template <typename D> Windows::Gaming::Input::Custom::GipFirmwareUpdateStatus impl_IGipFirmwareUpdateResult<D>::Status() const
{
    Windows::Gaming::Input::Custom::GipFirmwareUpdateStatus value {};
    check_hresult(static_cast<const IGipFirmwareUpdateResult &>(static_cast<const D &>(*this))->get_Status(&value));
    return value;
}

template <typename D> Windows::Gaming::Input::Custom::GameControllerVersionInfo impl_IGameControllerProvider<D>::FirmwareVersionInfo() const
{
    Windows::Gaming::Input::Custom::GameControllerVersionInfo value {};
    check_hresult(static_cast<const IGameControllerProvider &>(static_cast<const D &>(*this))->get_FirmwareVersionInfo(put(value)));
    return value;
}

template <typename D> uint16_t impl_IGameControllerProvider<D>::HardwareProductId() const
{
    uint16_t value {};
    check_hresult(static_cast<const IGameControllerProvider &>(static_cast<const D &>(*this))->get_HardwareProductId(&value));
    return value;
}

template <typename D> uint16_t impl_IGameControllerProvider<D>::HardwareVendorId() const
{
    uint16_t value {};
    check_hresult(static_cast<const IGameControllerProvider &>(static_cast<const D &>(*this))->get_HardwareVendorId(&value));
    return value;
}

template <typename D> Windows::Gaming::Input::Custom::GameControllerVersionInfo impl_IGameControllerProvider<D>::HardwareVersionInfo() const
{
    Windows::Gaming::Input::Custom::GameControllerVersionInfo value {};
    check_hresult(static_cast<const IGameControllerProvider &>(static_cast<const D &>(*this))->get_HardwareVersionInfo(put(value)));
    return value;
}

template <typename D> bool impl_IGameControllerProvider<D>::IsConnected() const
{
    bool value {};
    check_hresult(static_cast<const IGameControllerProvider &>(static_cast<const D &>(*this))->get_IsConnected(&value));
    return value;
}

template <typename D> void impl_IGipGameControllerProvider<D>::SendMessage(Windows::Gaming::Input::Custom::GipMessageClass messageClass, uint8_t messageId, array_ref<const uint8_t> messageBuffer) const
{
    check_hresult(static_cast<const IGipGameControllerProvider &>(static_cast<const D &>(*this))->abi_SendMessage(messageClass, messageId, messageBuffer.size(), get(messageBuffer)));
}

template <typename D> void impl_IGipGameControllerProvider<D>::SendReceiveMessage(Windows::Gaming::Input::Custom::GipMessageClass messageClass, uint8_t messageId, array_ref<const uint8_t> requestMessageBuffer, array_ref<uint8_t> responseMessageBuffer) const
{
    check_hresult(static_cast<const IGipGameControllerProvider &>(static_cast<const D &>(*this))->abi_SendReceiveMessage(messageClass, messageId, requestMessageBuffer.size(), get(requestMessageBuffer), responseMessageBuffer.size(), get(responseMessageBuffer)));
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Gaming::Input::Custom::GipFirmwareUpdateResult, Windows::Gaming::Input::Custom::GipFirmwareUpdateProgress> impl_IGipGameControllerProvider<D>::UpdateFirmwareAsync(const Windows::Storage::Streams::IInputStream & firmwareImage) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Gaming::Input::Custom::GipFirmwareUpdateResult, Windows::Gaming::Input::Custom::GipFirmwareUpdateProgress> result;
    check_hresult(static_cast<const IGipGameControllerProvider &>(static_cast<const D &>(*this))->abi_UpdateFirmwareAsync(get(firmwareImage), put(result)));
    return result;
}

template <typename D> void impl_IXusbGameControllerProvider<D>::SetVibration(double lowFrequencyMotorSpeed, double highFrequencyMotorSpeed) const
{
    check_hresult(static_cast<const IXusbGameControllerProvider &>(static_cast<const D &>(*this))->abi_SetVibration(lowFrequencyMotorSpeed, highFrequencyMotorSpeed));
}

template <typename D> Windows::IInspectable impl_ICustomGameControllerFactory<D>::CreateGameController(const Windows::Gaming::Input::Custom::IGameControllerProvider & provider) const
{
    Windows::IInspectable value;
    check_hresult(static_cast<const ICustomGameControllerFactory &>(static_cast<const D &>(*this))->abi_CreateGameController(get(provider), put(value)));
    return value;
}

template <typename D> void impl_ICustomGameControllerFactory<D>::OnGameControllerAdded(const Windows::Gaming::Input::IGameController & value) const
{
    check_hresult(static_cast<const ICustomGameControllerFactory &>(static_cast<const D &>(*this))->abi_OnGameControllerAdded(get(value)));
}

template <typename D> void impl_ICustomGameControllerFactory<D>::OnGameControllerRemoved(const Windows::Gaming::Input::IGameController & value) const
{
    check_hresult(static_cast<const ICustomGameControllerFactory &>(static_cast<const D &>(*this))->abi_OnGameControllerRemoved(get(value)));
}

template <typename D> void impl_IGameControllerFactoryManagerStatics<D>::RegisterCustomFactoryForGipInterface(const Windows::Gaming::Input::Custom::ICustomGameControllerFactory & factory, GUID interfaceId) const
{
    check_hresult(static_cast<const IGameControllerFactoryManagerStatics &>(static_cast<const D &>(*this))->abi_RegisterCustomFactoryForGipInterface(get(factory), interfaceId));
}

template <typename D> void impl_IGameControllerFactoryManagerStatics<D>::RegisterCustomFactoryForHardwareId(const Windows::Gaming::Input::Custom::ICustomGameControllerFactory & factory, uint16_t hardwareVendorId, uint16_t hardwareProductId) const
{
    check_hresult(static_cast<const IGameControllerFactoryManagerStatics &>(static_cast<const D &>(*this))->abi_RegisterCustomFactoryForHardwareId(get(factory), hardwareVendorId, hardwareProductId));
}

template <typename D> void impl_IGameControllerFactoryManagerStatics<D>::RegisterCustomFactoryForXusbType(const Windows::Gaming::Input::Custom::ICustomGameControllerFactory & factory, Windows::Gaming::Input::Custom::XusbDeviceType xusbType, Windows::Gaming::Input::Custom::XusbDeviceSubtype xusbSubtype) const
{
    check_hresult(static_cast<const IGameControllerFactoryManagerStatics &>(static_cast<const D &>(*this))->abi_RegisterCustomFactoryForXusbType(get(factory), xusbType, xusbSubtype));
}

inline void GameControllerFactoryManager::RegisterCustomFactoryForGipInterface(const Windows::Gaming::Input::Custom::ICustomGameControllerFactory & factory, GUID interfaceId)
{
    get_activation_factory<GameControllerFactoryManager, IGameControllerFactoryManagerStatics>().RegisterCustomFactoryForGipInterface(factory, interfaceId);
}

inline void GameControllerFactoryManager::RegisterCustomFactoryForHardwareId(const Windows::Gaming::Input::Custom::ICustomGameControllerFactory & factory, uint16_t hardwareVendorId, uint16_t hardwareProductId)
{
    get_activation_factory<GameControllerFactoryManager, IGameControllerFactoryManagerStatics>().RegisterCustomFactoryForHardwareId(factory, hardwareVendorId, hardwareProductId);
}

inline void GameControllerFactoryManager::RegisterCustomFactoryForXusbType(const Windows::Gaming::Input::Custom::ICustomGameControllerFactory & factory, Windows::Gaming::Input::Custom::XusbDeviceType xusbType, Windows::Gaming::Input::Custom::XusbDeviceSubtype xusbSubtype)
{
    get_activation_factory<GameControllerFactoryManager, IGameControllerFactoryManagerStatics>().RegisterCustomFactoryForXusbType(factory, xusbType, xusbSubtype);
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Security.Cryptography.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Security.Cryptography.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Security::Cryptography {

struct CryptographicBuffer
{
    CryptographicBuffer() = delete;
    static bool Compare(const Windows::Storage::Streams::IBuffer & object1, const Windows::Storage::Streams::IBuffer & object2);
    static Windows::Storage::Streams::IBuffer GenerateRandom(uint32_t length);
    static uint32_t GenerateRandomNumber();
    static Windows::Storage::Streams::IBuffer CreateFromByteArray(array_ref<const uint8_t> value);
    static void CopyToByteArray(const Windows::Storage::Streams::IBuffer & buffer, com_array<uint8_t> & value);
    static Windows::Storage::Streams::IBuffer DecodeFromHexString(hstring_ref value);
    static hstring EncodeToHexString(const Windows::Storage::Streams::IBuffer & buffer);
    static Windows::Storage::Streams::IBuffer DecodeFromBase64String(hstring_ref value);
    static hstring EncodeToBase64String(const Windows::Storage::Streams::IBuffer & buffer);
    static Windows::Storage::Streams::IBuffer ConvertStringToBinary(hstring_ref value, Windows::Security::Cryptography::BinaryStringEncoding encoding);
    static hstring ConvertBinaryToString(Windows::Security::Cryptography::BinaryStringEncoding encoding, const Windows::Storage::Streams::IBuffer & buffer);
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Graphics.Printing.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Graphics::Printing {

struct PrintPageDescription;

}

namespace Windows::Graphics::Printing {

using PrintPageDescription = ABI::Windows::Graphics::Printing::PrintPageDescription;

}

namespace ABI::Windows::Graphics::Printing {

struct IPrintDocumentSource;
struct IPrintManager;
struct IPrintManagerStatic;
struct IPrintManagerStatic2;
struct IPrintPageInfo;
struct IPrintTask;
struct IPrintTask2;
struct IPrintTaskCompletedEventArgs;
struct IPrintTaskOptions;
struct IPrintTaskOptionsCore;
struct IPrintTaskOptionsCoreProperties;
struct IPrintTaskOptionsCoreUIConfiguration;
struct IPrintTaskProgressingEventArgs;
struct IPrintTaskRequest;
struct IPrintTaskRequestedDeferral;
struct IPrintTaskRequestedEventArgs;
struct IPrintTaskSourceRequestedArgs;
struct IPrintTaskSourceRequestedDeferral;
struct IPrintTaskTargetDeviceSupport;
struct IStandardPrintTaskOptionsStatic;
struct IStandardPrintTaskOptionsStatic2;
struct PrintTaskSourceRequestedHandler;
struct PrintManager;
struct PrintPageInfo;
struct PrintTask;
struct PrintTaskCompletedEventArgs;
struct PrintTaskOptions;
struct PrintTaskProgressingEventArgs;
struct PrintTaskRequest;
struct PrintTaskRequestedDeferral;
struct PrintTaskRequestedEventArgs;
struct PrintTaskSourceRequestedArgs;
struct PrintTaskSourceRequestedDeferral;

}

namespace Windows::Graphics::Printing {

struct PrintTaskSourceRequestedHandler;
struct IPrintDocumentSource;
struct IPrintManager;
struct IPrintManagerStatic;
struct IPrintManagerStatic2;
struct IPrintPageInfo;
struct IPrintTask;
struct IPrintTask2;
struct IPrintTaskCompletedEventArgs;
struct IPrintTaskOptions;
struct IPrintTaskOptionsCore;
struct IPrintTaskOptionsCoreProperties;
struct IPrintTaskOptionsCoreUIConfiguration;
struct IPrintTaskProgressingEventArgs;
struct IPrintTaskRequest;
struct IPrintTaskRequestedDeferral;
struct IPrintTaskRequestedEventArgs;
struct IPrintTaskSourceRequestedArgs;
struct IPrintTaskSourceRequestedDeferral;
struct IPrintTaskTargetDeviceSupport;
struct IStandardPrintTaskOptionsStatic;
struct IStandardPrintTaskOptionsStatic2;
struct PrintManager;
struct PrintPageInfo;
struct PrintTask;
struct PrintTaskCompletedEventArgs;
struct PrintTaskOptions;
struct PrintTaskProgressingEventArgs;
struct PrintTaskRequest;
struct PrintTaskRequestedDeferral;
struct PrintTaskRequestedEventArgs;
struct PrintTaskSourceRequestedArgs;
struct PrintTaskSourceRequestedDeferral;
struct StandardPrintTaskOptions;

}

namespace Windows::Graphics::Printing {

enum class PrintBinding
{
    Default = 0,
    NotAvailable = 1,
    PrinterCustom = 2,
    None = 3,
    Bale = 4,
    BindBottom = 5,
    BindLeft = 6,
    BindRight = 7,
    BindTop = 8,
    Booklet = 9,
    EdgeStitchBottom = 10,
    EdgeStitchLeft = 11,
    EdgeStitchRight = 12,
    EdgeStitchTop = 13,
    Fold = 14,
    JogOffset = 15,
    Trim = 16,
};

enum class PrintBordering
{
    Default = 0,
    NotAvailable = 1,
    PrinterCustom = 2,
    Bordered = 3,
    Borderless = 4,
};

enum class PrintCollation
{
    Default = 0,
    NotAvailable = 1,
    PrinterCustom = 2,
    Collated = 3,
    Uncollated = 4,
};

enum class PrintColorMode
{
    Default = 0,
    NotAvailable = 1,
    PrinterCustom = 2,
    Color = 3,
    Grayscale = 4,
    Monochrome = 5,
};

enum class PrintDuplex
{
    Default = 0,
    NotAvailable = 1,
    PrinterCustom = 2,
    OneSided = 3,
    TwoSidedShortEdge = 4,
    TwoSidedLongEdge = 5,
};

enum class PrintHolePunch
{
    Default = 0,
    NotAvailable = 1,
    PrinterCustom = 2,
    None = 3,
    LeftEdge = 4,
    RightEdge = 5,
    TopEdge = 6,
    BottomEdge = 7,
};

enum class PrintMediaSize
{
    Default = 0,
    NotAvailable = 1,
    PrinterCustom = 2,
    BusinessCard = 3,
    CreditCard = 4,
    IsoA0 = 5,
    IsoA1 = 6,
    IsoA10 = 7,
    IsoA2 = 8,
    IsoA3 = 9,
    IsoA3Extra = 10,
    IsoA3Rotated = 11,
    IsoA4 = 12,
    IsoA4Extra = 13,
    IsoA4Rotated = 14,
    IsoA5 = 15,
    IsoA5Extra = 16,
    IsoA5Rotated = 17,
    IsoA6 = 18,
    IsoA6Rotated = 19,
    IsoA7 = 20,
    IsoA8 = 21,
    IsoA9 = 22,
    IsoB0 = 23,
    IsoB1 = 24,
    IsoB10 = 25,
    IsoB2 = 26,
    IsoB3 = 27,
    IsoB4 = 28,
    IsoB4Envelope = 29,
    IsoB5Envelope = 30,
    IsoB5Extra = 31,
    IsoB7 = 32,
    IsoB8 = 33,
    IsoB9 = 34,
    IsoC0 = 35,
    IsoC1 = 36,
    IsoC10 = 37,
    IsoC2 = 38,
    IsoC3 = 39,
    IsoC3Envelope = 40,
    IsoC4 = 41,
    IsoC4Envelope = 42,
    IsoC5 = 43,
    IsoC5Envelope = 44,
    IsoC6 = 45,
    IsoC6C5Envelope = 46,
    IsoC6Envelope = 47,
    IsoC7 = 48,
    IsoC8 = 49,
    IsoC9 = 50,
    IsoDLEnvelope = 51,
    IsoDLEnvelopeRotated = 52,
    IsoSRA3 = 53,
    Japan2LPhoto = 54,
    JapanChou3Envelope = 55,
    JapanChou3EnvelopeRotated = 56,
    JapanChou4Envelope = 57,
    JapanChou4EnvelopeRotated = 58,
    JapanDoubleHagakiPostcard = 59,
    JapanDoubleHagakiPostcardRotated = 60,
    JapanHagakiPostcard = 61,
    JapanHagakiPostcardRotated = 62,
    JapanKaku2Envelope = 63,
    JapanKaku2EnvelopeRotated = 64,
    JapanKaku3Envelope = 65,
    JapanKaku3EnvelopeRotated = 66,
    JapanLPhoto = 67,
    JapanQuadrupleHagakiPostcard = 68,
    JapanYou1Envelope = 69,
    JapanYou2Envelope = 70,
    JapanYou3Envelope = 71,
    JapanYou4Envelope = 72,
    JapanYou4EnvelopeRotated = 73,
    JapanYou6Envelope = 74,
    JapanYou6EnvelopeRotated = 75,
    JisB0 = 76,
    JisB1 = 77,
    JisB10 = 78,
    JisB2 = 79,
    JisB3 = 80,
    JisB4 = 81,
    JisB4Rotated = 82,
    JisB5 = 83,
    JisB5Rotated = 84,
    JisB6 = 85,
    JisB6Rotated = 86,
    JisB7 = 87,
    JisB8 = 88,
    JisB9 = 89,
    NorthAmerica10x11 = 90,
    NorthAmerica10x12 = 91,
    NorthAmerica10x14 = 92,
    NorthAmerica11x17 = 93,
    NorthAmerica14x17 = 94,
    NorthAmerica4x6 = 95,
    NorthAmerica4x8 = 96,
    NorthAmerica5x7 = 97,
    NorthAmerica8x10 = 98,
    NorthAmerica9x11 = 99,
    NorthAmericaArchitectureASheet = 100,
    NorthAmericaArchitectureBSheet = 101,
    NorthAmericaArchitectureCSheet = 102,
    NorthAmericaArchitectureDSheet = 103,
    NorthAmericaArchitectureESheet = 104,
    NorthAmericaCSheet = 105,
    NorthAmericaDSheet = 106,
    NorthAmericaESheet = 107,
    NorthAmericaExecutive = 108,
    NorthAmericaGermanLegalFanfold = 109,
    NorthAmericaGermanStandardFanfold = 110,
    NorthAmericaLegal = 111,
    NorthAmericaLegalExtra = 112,
    NorthAmericaLetter = 113,
    NorthAmericaLetterExtra = 114,
    NorthAmericaLetterPlus = 115,
    NorthAmericaLetterRotated = 116,
    NorthAmericaMonarchEnvelope = 117,
    NorthAmericaNote = 118,
    NorthAmericaNumber10Envelope = 119,
    NorthAmericaNumber10EnvelopeRotated = 120,
    NorthAmericaNumber11Envelope = 121,
    NorthAmericaNumber12Envelope = 122,
    NorthAmericaNumber14Envelope = 123,
    NorthAmericaNumber9Envelope = 124,
    NorthAmericaPersonalEnvelope = 125,
    NorthAmericaQuarto = 126,
    NorthAmericaStatement = 127,
    NorthAmericaSuperA = 128,
    NorthAmericaSuperB = 129,
    NorthAmericaTabloid = 130,
    NorthAmericaTabloidExtra = 131,
    OtherMetricA3Plus = 132,
    OtherMetricA4Plus = 133,
    OtherMetricFolio = 134,
    OtherMetricInviteEnvelope = 135,
    OtherMetricItalianEnvelope = 136,
    Prc10Envelope = 137,
    Prc10EnvelopeRotated = 138,
    Prc16K = 139,
    Prc16KRotated = 140,
    Prc1Envelope = 141,
    Prc1EnvelopeRotated = 142,
    Prc2Envelope = 143,
    Prc2EnvelopeRotated = 144,
    Prc32K = 145,
    Prc32KBig = 146,
    Prc32KRotated = 147,
    Prc3Envelope = 148,
    Prc3EnvelopeRotated = 149,
    Prc4Envelope = 150,
    Prc4EnvelopeRotated = 151,
    Prc5Envelope = 152,
    Prc5EnvelopeRotated = 153,
    Prc6Envelope = 154,
    Prc6EnvelopeRotated = 155,
    Prc7Envelope = 156,
    Prc7EnvelopeRotated = 157,
    Prc8Envelope = 158,
    Prc8EnvelopeRotated = 159,
    Prc9Envelope = 160,
    Prc9EnvelopeRotated = 161,
    Roll04Inch = 162,
    Roll06Inch = 163,
    Roll08Inch = 164,
    Roll12Inch = 165,
    Roll15Inch = 166,
    Roll18Inch = 167,
    Roll22Inch = 168,
    Roll24Inch = 169,
    Roll30Inch = 170,
    Roll36Inch = 171,
    Roll54Inch = 172,
};

enum class PrintMediaType
{
    Default = 0,
    NotAvailable = 1,
    PrinterCustom = 2,
    AutoSelect = 3,
    Archival = 4,
    BackPrintFilm = 5,
    Bond = 6,
    CardStock = 7,
    Continuous = 8,
    EnvelopePlain = 9,
    EnvelopeWindow = 10,
    Fabric = 11,
    HighResolution = 12,
    Label = 13,
    MultiLayerForm = 14,
    MultiPartForm = 15,
    Photographic = 16,
    PhotographicFilm = 17,
    PhotographicGlossy = 18,
    PhotographicHighGloss = 19,
    PhotographicMatte = 20,
    PhotographicSatin = 21,
    PhotographicSemiGloss = 22,
    Plain = 23,
    Screen = 24,
    ScreenPaged = 25,
    Stationery = 26,
    TabStockFull = 27,
    TabStockPreCut = 28,
    Transparency = 29,
    TShirtTransfer = 30,
    None = 31,
};

enum class PrintOrientation
{
    Default = 0,
    NotAvailable = 1,
    PrinterCustom = 2,
    Portrait = 3,
    PortraitFlipped = 4,
    Landscape = 5,
    LandscapeFlipped = 6,
};

enum class PrintQuality
{
    Default = 0,
    NotAvailable = 1,
    PrinterCustom = 2,
    Automatic = 3,
    Draft = 4,
    Fax = 5,
    High = 6,
    Normal = 7,
    Photographic = 8,
    Text = 9,
};

enum class PrintStaple
{
    Default = 0,
    NotAvailable = 1,
    PrinterCustom = 2,
    None = 3,
    StapleTopLeft = 4,
    StapleTopRight = 5,
    StapleBottomLeft = 6,
    StapleBottomRight = 7,
    StapleDualLeft = 8,
    StapleDualRight = 9,
    StapleDualTop = 10,
    StapleDualBottom = 11,
    SaddleStitch = 12,
};

enum class PrintTaskCompletion
{
    Abandoned = 0,
    Canceled = 1,
    Failed = 2,
    Submitted = 3,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Security.Authentication.Web.Provider.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Security.Authentication.Web.Provider.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Security.Authentication.Web.0.h"
#include "Windows.Security.Authentication.Web.Core.0.h"
#include "Windows.Security.Credentials.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.Security.Credentials.1.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Security.Cryptography.Core.1.h"
#include "Windows.Foundation.1.h"
#include "Windows.Storage.Streams.1.h"
#include "Windows.Web.Http.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Security::Authentication::Web::Provider {

struct __declspec(uuid("e7bd66ba-0bc7-4c66-bfd4-65d3082cbca8")) __declspec(novtable) IWebAccountClientView : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ApplicationCallbackUri(Windows::Foundation::IUriRuntimeClass ** value) = 0;
    virtual HRESULT __stdcall get_Type(winrt::Windows::Security::Authentication::Web::Provider::WebAccountClientViewType * value) = 0;
    virtual HRESULT __stdcall get_AccountPairwiseId(hstring * value) = 0;
};

struct __declspec(uuid("616d16a4-de22-4855-a326-06cebf2a3f23")) __declspec(novtable) IWebAccountClientViewFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(winrt::Windows::Security::Authentication::Web::Provider::WebAccountClientViewType viewType, Windows::Foundation::IUriRuntimeClass * applicationCallbackUri, Windows::Security::Authentication::Web::Provider::IWebAccountClientView ** view) = 0;
    virtual HRESULT __stdcall abi_CreateWithPairwiseId(winrt::Windows::Security::Authentication::Web::Provider::WebAccountClientViewType viewType, Windows::Foundation::IUriRuntimeClass * applicationCallbackUri, hstring accountPairwiseId, Windows::Security::Authentication::Web::Provider::IWebAccountClientView ** view) = 0;
};

struct __declspec(uuid("b2e8e1a6-d49a-4032-84bf-1a2847747bf1")) __declspec(novtable) IWebAccountManagerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_UpdateWebAccountPropertiesAsync(Windows::Security::Credentials::IWebAccount * webAccount, hstring webAccountUserName, Windows::Foundation::Collections::IMapView<hstring, hstring> * additionalProperties, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_AddWebAccountAsync(hstring webAccountId, hstring webAccountUserName, Windows::Foundation::Collections::IMapView<hstring, hstring> * props, Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccount> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_DeleteWebAccountAsync(Windows::Security::Credentials::IWebAccount * webAccount, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_FindAllProviderWebAccountsAsync(Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Credentials::WebAccount>> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_PushCookiesAsync(Windows::Foundation::IUriRuntimeClass * uri, Windows::Foundation::Collections::IVectorView<Windows::Web::Http::HttpCookie> * cookies, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_SetViewAsync(Windows::Security::Credentials::IWebAccount * webAccount, Windows::Security::Authentication::Web::Provider::IWebAccountClientView * view, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_ClearViewAsync(Windows::Security::Credentials::IWebAccount * webAccount, Windows::Foundation::IUriRuntimeClass * applicationCallbackUri, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_GetViewsAsync(Windows::Security::Credentials::IWebAccount * webAccount, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Authentication::Web::Provider::WebAccountClientView>> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_SetWebAccountPictureAsync(Windows::Security::Credentials::IWebAccount * webAccount, Windows::Storage::Streams::IRandomAccessStream * webAccountPicture, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_ClearWebAccountPictureAsync(Windows::Security::Credentials::IWebAccount * webAccount, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("68a7a829-2d5f-4653-8bb0-bd2fa6bd2d87")) __declspec(novtable) IWebAccountManagerStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_PullCookiesAsync(hstring uriString, hstring callerPFN, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("e8fa446f-3a1b-48a4-8e90-1e59ca6f54db")) __declspec(novtable) IWebAccountMapManagerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_AddWebAccountWithScopeAndMapAsync(hstring webAccountId, hstring webAccountUserName, Windows::Foundation::Collections::IMapView<hstring, hstring> * props, winrt::Windows::Security::Authentication::Web::Provider::WebAccountScope scope, hstring perUserWebAccountId, Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccount> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_SetPerAppToPerUserAccountAsync(Windows::Security::Credentials::IWebAccount * perAppAccount, hstring perUserWebAccountId, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_GetPerUserFromPerAppAccountAsync(Windows::Security::Credentials::IWebAccount * perAppAccount, Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccount> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_ClearPerUserFromPerAppAccountAsync(Windows::Security::Credentials::IWebAccount * perAppAccount, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("73ebdccf-4378-4c79-9335-a5d7ab81594e")) __declspec(novtable) IWebAccountProviderAddAccountOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ReportCompleted() = 0;
};

struct __declspec(uuid("bba4acbb-993b-4d57-bbe4-1421e3668b4c")) __declspec(novtable) IWebAccountProviderBaseReportOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ReportCompleted() = 0;
    virtual HRESULT __stdcall abi_ReportError(Windows::Security::Authentication::Web::Core::IWebProviderError * value) = 0;
};

struct __declspec(uuid("0abb48b8-9e01-49c9-a355-7d48caf7d6ca")) __declspec(novtable) IWebAccountProviderDeleteAccountOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_WebAccount(Windows::Security::Credentials::IWebAccount ** value) = 0;
};

struct __declspec(uuid("ed20dc5c-d21b-463e-a9b7-c1fd0edae978")) __declspec(novtable) IWebAccountProviderManageAccountOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_WebAccount(Windows::Security::Credentials::IWebAccount ** value) = 0;
    virtual HRESULT __stdcall abi_ReportCompleted() = 0;
};

struct __declspec(uuid("6d5d2426-10b1-419a-a44e-f9c5161574e6")) __declspec(novtable) IWebAccountProviderOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Kind(winrt::Windows::Security::Authentication::Web::Provider::WebAccountProviderOperationKind * value) = 0;
};

struct __declspec(uuid("5a040441-0fa3-4ab1-a01c-20b110358594")) __declspec(novtable) IWebAccountProviderRetrieveCookiesOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Context(Windows::Foundation::IUriRuntimeClass ** webCookieRequestContext) = 0;
    virtual HRESULT __stdcall get_Cookies(Windows::Foundation::Collections::IVector<Windows::Web::Http::HttpCookie> ** cookies) = 0;
    virtual HRESULT __stdcall put_Uri(Windows::Foundation::IUriRuntimeClass * uri) = 0;
    virtual HRESULT __stdcall get_Uri(Windows::Foundation::IUriRuntimeClass ** uri) = 0;
    virtual HRESULT __stdcall get_ApplicationCallbackUri(Windows::Foundation::IUriRuntimeClass ** value) = 0;
};

struct __declspec(uuid("b890e21d-0c55-47bc-8c72-04a6fc7cac07")) __declspec(novtable) IWebAccountProviderSignOutAccountOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_WebAccount(Windows::Security::Credentials::IWebAccount ** value) = 0;
    virtual HRESULT __stdcall get_ApplicationCallbackUri(Windows::Foundation::IUriRuntimeClass ** value) = 0;
    virtual HRESULT __stdcall get_ClientId(hstring * value) = 0;
};

struct __declspec(uuid("e0b545f8-3b0f-44da-924c-7b18baaa62a9")) __declspec(novtable) IWebAccountProviderSilentReportOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ReportUserInteractionRequired() = 0;
    virtual HRESULT __stdcall abi_ReportUserInteractionRequiredWithError(Windows::Security::Authentication::Web::Core::IWebProviderError * value) = 0;
};

struct __declspec(uuid("408f284b-1328-42db-89a4-0bce7a717d8e")) __declspec(novtable) IWebAccountProviderTokenObjects : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Operation(Windows::Security::Authentication::Web::Provider::IWebAccountProviderOperation ** value) = 0;
};

struct __declspec(uuid("95c613be-2034-4c38-9434-d26c14b2b4b2")) __declspec(novtable) IWebAccountProviderTokenOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ProviderRequest(Windows::Security::Authentication::Web::Provider::IWebProviderTokenRequest ** webTokenRequest) = 0;
    virtual HRESULT __stdcall get_ProviderResponses(Windows::Foundation::Collections::IVector<Windows::Security::Authentication::Web::Provider::WebProviderTokenResponse> ** value) = 0;
    virtual HRESULT __stdcall put_CacheExpirationTime(Windows::Foundation::DateTime value) = 0;
    virtual HRESULT __stdcall get_CacheExpirationTime(Windows::Foundation::DateTime * value) = 0;
};

struct __declspec(uuid("28ff92d3-8f80-42fb-944f-b2107bbd42e6")) __declspec(novtable) IWebAccountProviderUIReportOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ReportUserCanceled() = 0;
};

struct __declspec(uuid("5c6ce37c-12b2-423a-bf3d-85b8d7e53656")) __declspec(novtable) IWebAccountScopeManagerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_AddWebAccountWithScopeAsync(hstring webAccountId, hstring webAccountUserName, Windows::Foundation::Collections::IMapView<hstring, hstring> * props, winrt::Windows::Security::Authentication::Web::Provider::WebAccountScope scope, Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccount> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_SetScopeAsync(Windows::Security::Credentials::IWebAccount * webAccount, winrt::Windows::Security::Authentication::Web::Provider::WebAccountScope scope, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_GetScope(Windows::Security::Credentials::IWebAccount * webAccount, winrt::Windows::Security::Authentication::Web::Provider::WebAccountScope * scope) = 0;
};

struct __declspec(uuid("1e18778b-8805-454b-9f11-468d2af1095a")) __declspec(novtable) IWebProviderTokenRequest : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ClientRequest(Windows::Security::Authentication::Web::Core::IWebTokenRequest ** value) = 0;
    virtual HRESULT __stdcall get_WebAccounts(Windows::Foundation::Collections::IVectorView<Windows::Security::Credentials::WebAccount> ** value) = 0;
    virtual HRESULT __stdcall get_WebAccountSelectionOptions(winrt::Windows::Security::Authentication::Web::Provider::WebAccountSelectionOptions * value) = 0;
    virtual HRESULT __stdcall get_ApplicationCallbackUri(Windows::Foundation::IUriRuntimeClass ** value) = 0;
    virtual HRESULT __stdcall abi_GetApplicationTokenBindingKeyAsync(winrt::Windows::Security::Authentication::Web::TokenBindingKeyType keyType, Windows::Foundation::IUriRuntimeClass * target, Windows::Foundation::IAsyncOperation<Windows::Security::Cryptography::Core::CryptographicKey> ** asyncInfo) = 0;
};

struct __declspec(uuid("b5d72e4c-10b1-4aa6-88b1-0b6c9e0c1e46")) __declspec(novtable) IWebProviderTokenRequest2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetApplicationTokenBindingKeyIdAsync(winrt::Windows::Security::Authentication::Web::TokenBindingKeyType keyType, Windows::Foundation::IUriRuntimeClass * target, Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> ** asyncInfo) = 0;
};

struct __declspec(uuid("ef213793-ef55-4186-b7ce-8cb2e7f9849e")) __declspec(novtable) IWebProviderTokenResponse : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ClientResponse(Windows::Security::Authentication::Web::Core::IWebTokenResponse ** value) = 0;
};

struct __declspec(uuid("fa49d99a-25ba-4077-9cfa-9db4dea7b71a")) __declspec(novtable) IWebProviderTokenResponseFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(Windows::Security::Authentication::Web::Core::IWebTokenResponse * webTokenResponse, Windows::Security::Authentication::Web::Provider::IWebProviderTokenResponse ** webProviderTokenResponse) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountClientView> { using default_interface = Windows::Security::Authentication::Web::Provider::IWebAccountClientView; };
template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderAddAccountOperation> { using default_interface = Windows::Security::Authentication::Web::Provider::IWebAccountProviderAddAccountOperation; };
template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderDeleteAccountOperation> { using default_interface = Windows::Security::Authentication::Web::Provider::IWebAccountProviderDeleteAccountOperation; };
template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderGetTokenSilentOperation> { using default_interface = Windows::Security::Authentication::Web::Provider::IWebAccountProviderTokenOperation; };
template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderManageAccountOperation> { using default_interface = Windows::Security::Authentication::Web::Provider::IWebAccountProviderManageAccountOperation; };
template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderRequestTokenOperation> { using default_interface = Windows::Security::Authentication::Web::Provider::IWebAccountProviderTokenOperation; };
template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderRetrieveCookiesOperation> { using default_interface = Windows::Security::Authentication::Web::Provider::IWebAccountProviderRetrieveCookiesOperation; };
template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderSignOutAccountOperation> { using default_interface = Windows::Security::Authentication::Web::Provider::IWebAccountProviderSignOutAccountOperation; };
template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderTriggerDetails> { using default_interface = Windows::Security::Authentication::Web::Provider::IWebAccountProviderTokenObjects; };
template <> struct traits<Windows::Security::Authentication::Web::Provider::WebProviderTokenRequest> { using default_interface = Windows::Security::Authentication::Web::Provider::IWebProviderTokenRequest; };
template <> struct traits<Windows::Security::Authentication::Web::Provider::WebProviderTokenResponse> { using default_interface = Windows::Security::Authentication::Web::Provider::IWebProviderTokenResponse; };

}

namespace Windows::Security::Authentication::Web::Provider {

template <typename T> struct impl_IWebAccountClientView;
template <typename T> struct impl_IWebAccountClientViewFactory;
template <typename T> struct impl_IWebAccountManagerStatics;
template <typename T> struct impl_IWebAccountManagerStatics2;
template <typename T> struct impl_IWebAccountMapManagerStatics;
template <typename T> struct impl_IWebAccountProviderAddAccountOperation;
template <typename T> struct impl_IWebAccountProviderBaseReportOperation;
template <typename T> struct impl_IWebAccountProviderDeleteAccountOperation;
template <typename T> struct impl_IWebAccountProviderManageAccountOperation;
template <typename T> struct impl_IWebAccountProviderOperation;
template <typename T> struct impl_IWebAccountProviderRetrieveCookiesOperation;
template <typename T> struct impl_IWebAccountProviderSignOutAccountOperation;
template <typename T> struct impl_IWebAccountProviderSilentReportOperation;
template <typename T> struct impl_IWebAccountProviderTokenObjects;
template <typename T> struct impl_IWebAccountProviderTokenOperation;
template <typename T> struct impl_IWebAccountProviderUIReportOperation;
template <typename T> struct impl_IWebAccountScopeManagerStatics;
template <typename T> struct impl_IWebProviderTokenRequest;
template <typename T> struct impl_IWebProviderTokenRequest2;
template <typename T> struct impl_IWebProviderTokenResponse;
template <typename T> struct impl_IWebProviderTokenResponseFactory;

}

namespace impl {

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountClientView>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountClientView;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountClientView<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountClientViewFactory>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountClientViewFactory;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountClientViewFactory<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountManagerStatics>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountManagerStatics;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountManagerStatics<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountManagerStatics2>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountManagerStatics2;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountManagerStatics2<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountMapManagerStatics>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountMapManagerStatics;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountMapManagerStatics<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountProviderAddAccountOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountProviderAddAccountOperation;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountProviderAddAccountOperation<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountProviderBaseReportOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountProviderBaseReportOperation;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountProviderBaseReportOperation<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountProviderDeleteAccountOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountProviderDeleteAccountOperation;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountProviderDeleteAccountOperation<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountProviderManageAccountOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountProviderManageAccountOperation;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountProviderManageAccountOperation<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountProviderOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountProviderOperation;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountProviderOperation<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountProviderRetrieveCookiesOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountProviderRetrieveCookiesOperation;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountProviderRetrieveCookiesOperation<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountProviderSignOutAccountOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountProviderSignOutAccountOperation;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountProviderSignOutAccountOperation<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountProviderSilentReportOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountProviderSilentReportOperation;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountProviderSilentReportOperation<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountProviderTokenObjects>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountProviderTokenObjects;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountProviderTokenObjects<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountProviderTokenOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountProviderTokenOperation;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountProviderTokenOperation<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountProviderUIReportOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountProviderUIReportOperation;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountProviderUIReportOperation<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebAccountScopeManagerStatics>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebAccountScopeManagerStatics;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebAccountScopeManagerStatics<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebProviderTokenRequest>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebProviderTokenRequest;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebProviderTokenRequest<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebProviderTokenRequest2>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebProviderTokenRequest2;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebProviderTokenRequest2<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebProviderTokenResponse>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebProviderTokenResponse;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebProviderTokenResponse<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::IWebProviderTokenResponseFactory>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::IWebProviderTokenResponseFactory;
    template <typename D> using consume = Windows::Security::Authentication::Web::Provider::impl_IWebProviderTokenResponseFactory<D>;
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountClientView>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::WebAccountClientView;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebAccountClientView"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountManager>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebAccountManager"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderAddAccountOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::WebAccountProviderAddAccountOperation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebAccountProviderAddAccountOperation"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderDeleteAccountOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::WebAccountProviderDeleteAccountOperation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebAccountProviderDeleteAccountOperation"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderGetTokenSilentOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::WebAccountProviderGetTokenSilentOperation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebAccountProviderGetTokenSilentOperation"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderManageAccountOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::WebAccountProviderManageAccountOperation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebAccountProviderManageAccountOperation"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderRequestTokenOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::WebAccountProviderRequestTokenOperation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebAccountProviderRequestTokenOperation"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderRetrieveCookiesOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::WebAccountProviderRetrieveCookiesOperation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebAccountProviderRetrieveCookiesOperation"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderSignOutAccountOperation>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::WebAccountProviderSignOutAccountOperation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebAccountProviderSignOutAccountOperation"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebAccountProviderTriggerDetails>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::WebAccountProviderTriggerDetails;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebAccountProviderTriggerDetails"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebProviderTokenRequest>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::WebProviderTokenRequest;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebProviderTokenRequest"; }
};

template <> struct traits<Windows::Security::Authentication::Web::Provider::WebProviderTokenResponse>
{
    using abi = ABI::Windows::Security::Authentication::Web::Provider::WebProviderTokenResponse;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Web.Provider.WebProviderTokenResponse"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Bluetooth.GenericAttributeProfile.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Devices.Bluetooth.GenericAttributeProfile.0.h"
#include "Windows.Devices.Bluetooth.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.Foundation.1.h"
#include "Windows.Foundation.Collections.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::Bluetooth::GenericAttributeProfile {

struct __declspec(uuid("59cb50c1-5934-4f68-a198-eb864fa44e6b")) __declspec(novtable) IGattCharacteristic : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDescriptors(GUID descriptorUuid, Windows::Foundation::Collections::IVectorView<Windows::Devices::Bluetooth::GenericAttributeProfile::GattDescriptor> ** value) = 0;
    virtual HRESULT __stdcall get_CharacteristicProperties(winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattCharacteristicProperties * value) = 0;
    virtual HRESULT __stdcall get_ProtectionLevel(winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattProtectionLevel * value) = 0;
    virtual HRESULT __stdcall put_ProtectionLevel(winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattProtectionLevel value) = 0;
    virtual HRESULT __stdcall get_UserDescription(hstring * value) = 0;
    virtual HRESULT __stdcall get_Uuid(GUID * value) = 0;
    virtual HRESULT __stdcall get_AttributeHandle(uint16_t * value) = 0;
    virtual HRESULT __stdcall get_PresentationFormats(Windows::Foundation::Collections::IVectorView<Windows::Devices::Bluetooth::GenericAttributeProfile::GattPresentationFormat> ** value) = 0;
    virtual HRESULT __stdcall abi_ReadValueAsync(Windows::Foundation::IAsyncOperation<Windows::Devices::Bluetooth::GenericAttributeProfile::GattReadResult> ** value) = 0;
    virtual HRESULT __stdcall abi_ReadValueWithCacheModeAsync(winrt::Windows::Devices::Bluetooth::BluetoothCacheMode cacheMode, Windows::Foundation::IAsyncOperation<Windows::Devices::Bluetooth::GenericAttributeProfile::GattReadResult> ** value) = 0;
    virtual HRESULT __stdcall abi_WriteValueAsync(Windows::Storage::Streams::IBuffer * value, Windows::Foundation::IAsyncOperation<winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattCommunicationStatus> ** asyncOp) = 0;
    virtual HRESULT __stdcall abi_WriteValueWithOptionAsync(Windows::Storage::Streams::IBuffer * value, winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattWriteOption writeOption, Windows::Foundation::IAsyncOperation<winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattCommunicationStatus> ** asyncOp) = 0;
    virtual HRESULT __stdcall abi_ReadClientCharacteristicConfigurationDescriptorAsync(Windows::Foundation::IAsyncOperation<Windows::Devices::Bluetooth::GenericAttributeProfile::GattReadClientCharacteristicConfigurationDescriptorResult> ** asyncOp) = 0;
    virtual HRESULT __stdcall abi_WriteClientCharacteristicConfigurationDescriptorAsync(winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattClientCharacteristicConfigurationDescriptorValue clientCharacteristicConfigurationDescriptorValue, Windows::Foundation::IAsyncOperation<winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattCommunicationStatus> ** asyncOp) = 0;
    virtual HRESULT __stdcall add_ValueChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Bluetooth::GenericAttributeProfile::GattCharacteristic, Windows::Devices::Bluetooth::GenericAttributeProfile::GattValueChangedEventArgs> * valueChangedHandler, event_token * valueChangedEventCookie) = 0;
    virtual HRESULT __stdcall remove_ValueChanged(event_token valueChangedEventCookie) = 0;
};

struct __declspec(uuid("ae1ab578-ec06-4764-b780-9835a1d35d6e")) __declspec(novtable) IGattCharacteristic2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Service(Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceService ** value) = 0;
    virtual HRESULT __stdcall abi_GetAllDescriptors(Windows::Foundation::Collections::IVectorView<Windows::Devices::Bluetooth::GenericAttributeProfile::GattDescriptor> ** descriptors) = 0;
};

struct __declspec(uuid("59cb50c3-5934-4f68-a198-eb864fa44e6b")) __declspec(novtable) IGattCharacteristicStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ConvertShortIdToUuid(uint16_t shortId, GUID * characteristicUuid) = 0;
};

struct __declspec(uuid("58fa4586-b1de-470c-b7de-0d11ff44f4b7")) __declspec(novtable) IGattCharacteristicUuidsStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_BatteryLevel(GUID * value) = 0;
    virtual HRESULT __stdcall get_BloodPressureFeature(GUID * value) = 0;
    virtual HRESULT __stdcall get_BloodPressureMeasurement(GUID * value) = 0;
    virtual HRESULT __stdcall get_BodySensorLocation(GUID * value) = 0;
    virtual HRESULT __stdcall get_CscFeature(GUID * value) = 0;
    virtual HRESULT __stdcall get_CscMeasurement(GUID * value) = 0;
    virtual HRESULT __stdcall get_GlucoseFeature(GUID * value) = 0;
    virtual HRESULT __stdcall get_GlucoseMeasurement(GUID * value) = 0;
    virtual HRESULT __stdcall get_GlucoseMeasurementContext(GUID * value) = 0;
    virtual HRESULT __stdcall get_HeartRateControlPoint(GUID * value) = 0;
    virtual HRESULT __stdcall get_HeartRateMeasurement(GUID * value) = 0;
    virtual HRESULT __stdcall get_IntermediateCuffPressure(GUID * value) = 0;
    virtual HRESULT __stdcall get_IntermediateTemperature(GUID * value) = 0;
    virtual HRESULT __stdcall get_MeasurementInterval(GUID * value) = 0;
    virtual HRESULT __stdcall get_RecordAccessControlPoint(GUID * value) = 0;
    virtual HRESULT __stdcall get_RscFeature(GUID * value) = 0;
    virtual HRESULT __stdcall get_RscMeasurement(GUID * value) = 0;
    virtual HRESULT __stdcall get_SCControlPoint(GUID * value) = 0;
    virtual HRESULT __stdcall get_SensorLocation(GUID * value) = 0;
    virtual HRESULT __stdcall get_TemperatureMeasurement(GUID * value) = 0;
    virtual HRESULT __stdcall get_TemperatureType(GUID * value) = 0;
};

struct __declspec(uuid("1855b425-d46e-4a2c-9c3f-ed6dea29e7be")) __declspec(novtable) IGattCharacteristicUuidsStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AlertCategoryId(GUID * value) = 0;
    virtual HRESULT __stdcall get_AlertCategoryIdBitMask(GUID * value) = 0;
    virtual HRESULT __stdcall get_AlertLevel(GUID * value) = 0;
    virtual HRESULT __stdcall get_AlertNotificationControlPoint(GUID * value) = 0;
    virtual HRESULT __stdcall get_AlertStatus(GUID * value) = 0;
    virtual HRESULT __stdcall get_GapAppearance(GUID * value) = 0;
    virtual HRESULT __stdcall get_BootKeyboardInputReport(GUID * value) = 0;
    virtual HRESULT __stdcall get_BootKeyboardOutputReport(GUID * value) = 0;
    virtual HRESULT __stdcall get_BootMouseInputReport(GUID * value) = 0;
    virtual HRESULT __stdcall get_CurrentTime(GUID * value) = 0;
    virtual HRESULT __stdcall get_CyclingPowerControlPoint(GUID * value) = 0;
    virtual HRESULT __stdcall get_CyclingPowerFeature(GUID * value) = 0;
    virtual HRESULT __stdcall get_CyclingPowerMeasurement(GUID * value) = 0;
    virtual HRESULT __stdcall get_CyclingPowerVector(GUID * value) = 0;
    virtual HRESULT __stdcall get_DateTime(GUID * value) = 0;
    virtual HRESULT __stdcall get_DayDateTime(GUID * value) = 0;
    virtual HRESULT __stdcall get_DayOfWeek(GUID * value) = 0;
    virtual HRESULT __stdcall get_GapDeviceName(GUID * value) = 0;
    virtual HRESULT __stdcall get_DstOffset(GUID * value) = 0;
    virtual HRESULT __stdcall get_ExactTime256(GUID * value) = 0;
    virtual HRESULT __stdcall get_FirmwareRevisionString(GUID * value) = 0;
    virtual HRESULT __stdcall get_HardwareRevisionString(GUID * value) = 0;
    virtual HRESULT __stdcall get_HidControlPoint(GUID * value) = 0;
    virtual HRESULT __stdcall get_HidInformation(GUID * value) = 0;
    virtual HRESULT __stdcall get_Ieee1107320601RegulatoryCertificationDataList(GUID * value) = 0;
    virtual HRESULT __stdcall get_LnControlPoint(GUID * value) = 0;
    virtual HRESULT __stdcall get_LnFeature(GUID * value) = 0;
    virtual HRESULT __stdcall get_LocalTimeInformation(GUID * value) = 0;
    virtual HRESULT __stdcall get_LocationAndSpeed(GUID * value) = 0;
    virtual HRESULT __stdcall get_ManufacturerNameString(GUID * value) = 0;
    virtual HRESULT __stdcall get_ModelNumberString(GUID * value) = 0;
    virtual HRESULT __stdcall get_Navigation(GUID * value) = 0;
    virtual HRESULT __stdcall get_NewAlert(GUID * value) = 0;
    virtual HRESULT __stdcall get_GapPeripheralPreferredConnectionParameters(GUID * value) = 0;
    virtual HRESULT __stdcall get_GapPeripheralPrivacyFlag(GUID * value) = 0;
    virtual HRESULT __stdcall get_PnpId(GUID * value) = 0;
    virtual HRESULT __stdcall get_PositionQuality(GUID * value) = 0;
    virtual HRESULT __stdcall get_ProtocolMode(GUID * value) = 0;
    virtual HRESULT __stdcall get_GapReconnectionAddress(GUID * value) = 0;
    virtual HRESULT __stdcall get_ReferenceTimeInformation(GUID * value) = 0;
    virtual HRESULT __stdcall get_Report(GUID * value) = 0;
    virtual HRESULT __stdcall get_ReportMap(GUID * value) = 0;
    virtual HRESULT __stdcall get_RingerControlPoint(GUID * value) = 0;
    virtual HRESULT __stdcall get_RingerSetting(GUID * value) = 0;
    virtual HRESULT __stdcall get_ScanIntervalWindow(GUID * value) = 0;
    virtual HRESULT __stdcall get_ScanRefresh(GUID * value) = 0;
    virtual HRESULT __stdcall get_SerialNumberString(GUID * value) = 0;
    virtual HRESULT __stdcall get_GattServiceChanged(GUID * value) = 0;
    virtual HRESULT __stdcall get_SoftwareRevisionString(GUID * value) = 0;
    virtual HRESULT __stdcall get_SupportedNewAlertCategory(GUID * value) = 0;
    virtual HRESULT __stdcall get_SupportUnreadAlertCategory(GUID * value) = 0;
    virtual HRESULT __stdcall get_SystemId(GUID * value) = 0;
    virtual HRESULT __stdcall get_TimeAccuracy(GUID * value) = 0;
    virtual HRESULT __stdcall get_TimeSource(GUID * value) = 0;
    virtual HRESULT __stdcall get_TimeUpdateControlPoint(GUID * value) = 0;
    virtual HRESULT __stdcall get_TimeUpdateState(GUID * value) = 0;
    virtual HRESULT __stdcall get_TimeWithDst(GUID * value) = 0;
    virtual HRESULT __stdcall get_TimeZone(GUID * value) = 0;
    virtual HRESULT __stdcall get_TxPowerLevel(GUID * value) = 0;
    virtual HRESULT __stdcall get_UnreadAlertStatus(GUID * value) = 0;
};

struct __declspec(uuid("92055f2b-8084-4344-b4c2-284de19a8506")) __declspec(novtable) IGattDescriptor : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ProtectionLevel(winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattProtectionLevel * value) = 0;
    virtual HRESULT __stdcall put_ProtectionLevel(winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattProtectionLevel value) = 0;
    virtual HRESULT __stdcall get_Uuid(GUID * value) = 0;
    virtual HRESULT __stdcall get_AttributeHandle(uint16_t * value) = 0;
    virtual HRESULT __stdcall abi_ReadValueAsync(Windows::Foundation::IAsyncOperation<Windows::Devices::Bluetooth::GenericAttributeProfile::GattReadResult> ** value) = 0;
    virtual HRESULT __stdcall abi_ReadValueWithCacheModeAsync(winrt::Windows::Devices::Bluetooth::BluetoothCacheMode cacheMode, Windows::Foundation::IAsyncOperation<Windows::Devices::Bluetooth::GenericAttributeProfile::GattReadResult> ** value) = 0;
    virtual HRESULT __stdcall abi_WriteValueAsync(Windows::Storage::Streams::IBuffer * value, Windows::Foundation::IAsyncOperation<winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattCommunicationStatus> ** action) = 0;
};

struct __declspec(uuid("92055f2d-8084-4344-b4c2-284de19a8506")) __declspec(novtable) IGattDescriptorStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ConvertShortIdToUuid(uint16_t shortId, GUID * descriptorUuid) = 0;
};

struct __declspec(uuid("a6f862ce-9cfc-42f1-9185-ff37b75181d3")) __declspec(novtable) IGattDescriptorUuidsStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CharacteristicAggregateFormat(GUID * value) = 0;
    virtual HRESULT __stdcall get_CharacteristicExtendedProperties(GUID * value) = 0;
    virtual HRESULT __stdcall get_CharacteristicPresentationFormat(GUID * value) = 0;
    virtual HRESULT __stdcall get_CharacteristicUserDescription(GUID * value) = 0;
    virtual HRESULT __stdcall get_ClientCharacteristicConfiguration(GUID * value) = 0;
    virtual HRESULT __stdcall get_ServerCharacteristicConfiguration(GUID * value) = 0;
};

struct __declspec(uuid("ac7b7c05-b33c-47cf-990f-6b8f5577df71")) __declspec(novtable) IGattDeviceService : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCharacteristics(GUID characteristicUuid, Windows::Foundation::Collections::IVectorView<Windows::Devices::Bluetooth::GenericAttributeProfile::GattCharacteristic> ** value) = 0;
    virtual HRESULT __stdcall abi_GetIncludedServices(GUID serviceUuid, Windows::Foundation::Collections::IVectorView<Windows::Devices::Bluetooth::GenericAttributeProfile::GattDeviceService> ** value) = 0;
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
    virtual HRESULT __stdcall get_Uuid(GUID * value) = 0;
    virtual HRESULT __stdcall get_AttributeHandle(uint16_t * value) = 0;
};

struct __declspec(uuid("fc54520b-0b0d-4708-bae0-9ffd9489bc59")) __declspec(novtable) IGattDeviceService2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Device(Windows::Devices::Bluetooth::IBluetoothLEDevice ** value) = 0;
    virtual HRESULT __stdcall get_ParentServices(Windows::Foundation::Collections::IVectorView<Windows::Devices::Bluetooth::GenericAttributeProfile::GattDeviceService> ** value) = 0;
    virtual HRESULT __stdcall abi_GetAllCharacteristics(Windows::Foundation::Collections::IVectorView<Windows::Devices::Bluetooth::GenericAttributeProfile::GattCharacteristic> ** characteristics) = 0;
    virtual HRESULT __stdcall abi_GetAllIncludedServices(Windows::Foundation::Collections::IVectorView<Windows::Devices::Bluetooth::GenericAttributeProfile::GattDeviceService> ** includedServices) = 0;
};

struct __declspec(uuid("196d0022-faad-45dc-ae5b-2ac3184e84db")) __declspec(novtable) IGattDeviceServiceStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_FromIdAsync(hstring deviceId, Windows::Foundation::IAsyncOperation<Windows::Devices::Bluetooth::GenericAttributeProfile::GattDeviceService> ** gattDeviceService) = 0;
    virtual HRESULT __stdcall abi_GetDeviceSelectorFromUuid(GUID serviceUuid, hstring * selector) = 0;
    virtual HRESULT __stdcall abi_GetDeviceSelectorFromShortId(uint16_t serviceShortId, hstring * selector) = 0;
    virtual HRESULT __stdcall abi_ConvertShortIdToUuid(uint16_t shortId, GUID * serviceUuid) = 0;
};

struct __declspec(uuid("196d0021-faad-45dc-ae5b-2ac3184e84db")) __declspec(novtable) IGattPresentationFormat : Windows::IInspectable
{
    virtual HRESULT __stdcall get_FormatType(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Exponent(int32_t * value) = 0;
    virtual HRESULT __stdcall get_Unit(uint16_t * value) = 0;
    virtual HRESULT __stdcall get_Namespace(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Description(uint16_t * value) = 0;
};

struct __declspec(uuid("196d0020-faad-45dc-ae5b-2ac3184e84db")) __declspec(novtable) IGattPresentationFormatStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_BluetoothSigAssignedNumbers(uint8_t * value) = 0;
};

struct __declspec(uuid("faf1ba0a-30ba-409c-bef7-cffb6d03b8fb")) __declspec(novtable) IGattPresentationFormatTypesStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Boolean(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Bit2(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Nibble(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_UInt8(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_UInt12(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_UInt16(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_UInt24(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_UInt32(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_UInt48(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_UInt64(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_UInt128(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_SInt8(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_SInt12(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_SInt16(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_SInt24(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_SInt32(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_SInt48(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_SInt64(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_SInt128(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Float32(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Float64(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_SFloat(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Float(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_DUInt16(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Utf8(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Utf16(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Struct(uint8_t * value) = 0;
};

struct __declspec(uuid("63a66f09-1aea-4c4c-a50f-97bae474b348")) __declspec(novtable) IGattReadClientCharacteristicConfigurationDescriptorResult : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Status(winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattCommunicationStatus * value) = 0;
    virtual HRESULT __stdcall get_ClientCharacteristicConfigurationDescriptor(winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattClientCharacteristicConfigurationDescriptorValue * value) = 0;
};

struct __declspec(uuid("63a66f08-1aea-4c4c-a50f-97bae474b348")) __declspec(novtable) IGattReadResult : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Status(winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattCommunicationStatus * value) = 0;
    virtual HRESULT __stdcall get_Value(Windows::Storage::Streams::IBuffer ** value) = 0;
};

struct __declspec(uuid("63a66f07-1aea-4c4c-a50f-97bae474b348")) __declspec(novtable) IGattReliableWriteTransaction : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_WriteValue(Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic * characteristic, Windows::Storage::Streams::IBuffer * value) = 0;
    virtual HRESULT __stdcall abi_CommitAsync(Windows::Foundation::IAsyncOperation<winrt::Windows::Devices::Bluetooth::GenericAttributeProfile::GattCommunicationStatus> ** asyncOp) = 0;
};

struct __declspec(uuid("6dc57058-9aba-4417-b8f2-dce016d34ee2")) __declspec(novtable) IGattServiceUuidsStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Battery(GUID * value) = 0;
    virtual HRESULT __stdcall get_BloodPressure(GUID * value) = 0;
    virtual HRESULT __stdcall get_CyclingSpeedAndCadence(GUID * value) = 0;
    virtual HRESULT __stdcall get_GenericAccess(GUID * value) = 0;
    virtual HRESULT __stdcall get_GenericAttribute(GUID * value) = 0;
    virtual HRESULT __stdcall get_Glucose(GUID * value) = 0;
    virtual HRESULT __stdcall get_HealthThermometer(GUID * value) = 0;
    virtual HRESULT __stdcall get_HeartRate(GUID * value) = 0;
    virtual HRESULT __stdcall get_RunningSpeedAndCadence(GUID * value) = 0;
};

struct __declspec(uuid("d2ae94f5-3d15-4f79-9c0c-eaafa675155c")) __declspec(novtable) IGattServiceUuidsStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AlertNotification(GUID * value) = 0;
    virtual HRESULT __stdcall get_CurrentTime(GUID * value) = 0;
    virtual HRESULT __stdcall get_CyclingPower(GUID * value) = 0;
    virtual HRESULT __stdcall get_DeviceInformation(GUID * value) = 0;
    virtual HRESULT __stdcall get_HumanInterfaceDevice(GUID * value) = 0;
    virtual HRESULT __stdcall get_ImmediateAlert(GUID * value) = 0;
    virtual HRESULT __stdcall get_LinkLoss(GUID * value) = 0;
    virtual HRESULT __stdcall get_LocationAndNavigation(GUID * value) = 0;
    virtual HRESULT __stdcall get_NextDstChange(GUID * value) = 0;
    virtual HRESULT __stdcall get_PhoneAlertStatus(GUID * value) = 0;
    virtual HRESULT __stdcall get_ReferenceTimeUpdate(GUID * value) = 0;
    virtual HRESULT __stdcall get_ScanParameters(GUID * value) = 0;
    virtual HRESULT __stdcall get_TxPower(GUID * value) = 0;
};

struct __declspec(uuid("d21bdb54-06e3-4ed8-a263-acfac8ba7313")) __declspec(novtable) IGattValueChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CharacteristicValue(Windows::Storage::Streams::IBuffer ** value) = 0;
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * timestamp) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattCharacteristic> { using default_interface = Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic; };
template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattDescriptor> { using default_interface = Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDescriptor; };
template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattDeviceService> { using default_interface = Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceService; };
template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattPresentationFormat> { using default_interface = Windows::Devices::Bluetooth::GenericAttributeProfile::IGattPresentationFormat; };
template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattReadClientCharacteristicConfigurationDescriptorResult> { using default_interface = Windows::Devices::Bluetooth::GenericAttributeProfile::IGattReadClientCharacteristicConfigurationDescriptorResult; };
template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattReadResult> { using default_interface = Windows::Devices::Bluetooth::GenericAttributeProfile::IGattReadResult; };
template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattReliableWriteTransaction> { using default_interface = Windows::Devices::Bluetooth::GenericAttributeProfile::IGattReliableWriteTransaction; };
template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattValueChangedEventArgs> { using default_interface = Windows::Devices::Bluetooth::GenericAttributeProfile::IGattValueChangedEventArgs; };

}

namespace Windows::Devices::Bluetooth::GenericAttributeProfile {

template <typename T> struct impl_IGattCharacteristic;
template <typename T> struct impl_IGattCharacteristic2;
template <typename T> struct impl_IGattCharacteristicStatics;
template <typename T> struct impl_IGattCharacteristicUuidsStatics;
template <typename T> struct impl_IGattCharacteristicUuidsStatics2;
template <typename T> struct impl_IGattDescriptor;
template <typename T> struct impl_IGattDescriptorStatics;
template <typename T> struct impl_IGattDescriptorUuidsStatics;
template <typename T> struct impl_IGattDeviceService;
template <typename T> struct impl_IGattDeviceService2;
template <typename T> struct impl_IGattDeviceServiceStatics;
template <typename T> struct impl_IGattPresentationFormat;
template <typename T> struct impl_IGattPresentationFormatStatics;
template <typename T> struct impl_IGattPresentationFormatTypesStatics;
template <typename T> struct impl_IGattReadClientCharacteristicConfigurationDescriptorResult;
template <typename T> struct impl_IGattReadResult;
template <typename T> struct impl_IGattReliableWriteTransaction;
template <typename T> struct impl_IGattServiceUuidsStatics;
template <typename T> struct impl_IGattServiceUuidsStatics2;
template <typename T> struct impl_IGattValueChangedEventArgs;

}

namespace impl {

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattCharacteristic<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic2>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic2;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattCharacteristic2<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristicStatics>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristicStatics;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattCharacteristicStatics<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristicUuidsStatics>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristicUuidsStatics;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattCharacteristicUuidsStatics<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristicUuidsStatics2>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristicUuidsStatics2;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattCharacteristicUuidsStatics2<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDescriptor>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDescriptor;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattDescriptor<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDescriptorStatics>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDescriptorStatics;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattDescriptorStatics<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDescriptorUuidsStatics>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDescriptorUuidsStatics;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattDescriptorUuidsStatics<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceService>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceService;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattDeviceService<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceService2>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceService2;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattDeviceService2<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceServiceStatics>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattDeviceServiceStatics;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattDeviceServiceStatics<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattPresentationFormat>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattPresentationFormat;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattPresentationFormat<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattPresentationFormatStatics>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattPresentationFormatStatics;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattPresentationFormatStatics<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattPresentationFormatTypesStatics>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattPresentationFormatTypesStatics;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattPresentationFormatTypesStatics<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattReadClientCharacteristicConfigurationDescriptorResult>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattReadClientCharacteristicConfigurationDescriptorResult;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattReadClientCharacteristicConfigurationDescriptorResult<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattReadResult>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattReadResult;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattReadResult<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattReliableWriteTransaction>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattReliableWriteTransaction;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattReliableWriteTransaction<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattServiceUuidsStatics>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattServiceUuidsStatics;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattServiceUuidsStatics<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattServiceUuidsStatics2>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattServiceUuidsStatics2;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattServiceUuidsStatics2<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::IGattValueChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::IGattValueChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Bluetooth::GenericAttributeProfile::impl_IGattValueChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattCharacteristic>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::GattCharacteristic;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattCharacteristic"; }
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattCharacteristicUuids>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattCharacteristicUuids"; }
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattDescriptor>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::GattDescriptor;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattDescriptor"; }
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattDescriptorUuids>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattDescriptorUuids"; }
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattDeviceService>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::GattDeviceService;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattDeviceService"; }
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattPresentationFormat>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::GattPresentationFormat;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattPresentationFormat"; }
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattPresentationFormatTypes>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattPresentationFormatTypes"; }
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattReadClientCharacteristicConfigurationDescriptorResult>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::GattReadClientCharacteristicConfigurationDescriptorResult;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattReadClientCharacteristicConfigurationDescriptorResult"; }
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattReadResult>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::GattReadResult;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattReadResult"; }
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattReliableWriteTransaction>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::GattReliableWriteTransaction;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattReliableWriteTransaction"; }
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattServiceUuids>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattServiceUuids"; }
};

template <> struct traits<Windows::Devices::Bluetooth::GenericAttributeProfile::GattValueChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Bluetooth::GenericAttributeProfile::GattValueChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.GenericAttributeProfile.GattValueChangedEventArgs"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.I2c.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::I2c {

struct I2cTransferResult;

}

namespace Windows::Devices::I2c {

using I2cTransferResult = ABI::Windows::Devices::I2c::I2cTransferResult;

}

namespace ABI::Windows::Devices::I2c {

struct II2cConnectionSettings;
struct II2cConnectionSettingsFactory;
struct II2cController;
struct II2cControllerStatics;
struct II2cDevice;
struct II2cDeviceStatics;
struct I2cConnectionSettings;
struct I2cController;
struct I2cDevice;

}

namespace Windows::Devices::I2c {

struct II2cConnectionSettings;
struct II2cConnectionSettingsFactory;
struct II2cController;
struct II2cControllerStatics;
struct II2cDevice;
struct II2cDeviceStatics;
struct I2cConnectionSettings;
struct I2cController;
struct I2cDevice;

}

namespace Windows::Devices::I2c {

enum class I2cBusSpeed
{
    StandardMode = 0,
    FastMode = 1,
};

enum class I2cSharingMode
{
    Exclusive = 0,
    Shared = 1,
};

enum class I2cTransferStatus
{
    FullTransfer = 0,
    PartialTransfer = 1,
    SlaveAddressNotAcknowledged = 2,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Web.Http.Filters.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Web.Http.Filters.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Web::Http::Filters {

struct WINRT_EBO HttpBaseProtocolFilter :
    Windows::Web::Http::Filters::IHttpBaseProtocolFilter,
    impl::require<HttpBaseProtocolFilter, Windows::Web::Http::Filters::IHttpBaseProtocolFilter2, Windows::Web::Http::Filters::IHttpBaseProtocolFilter3, Windows::Web::Http::Filters::IHttpBaseProtocolFilter4>
{
    HttpBaseProtocolFilter(std::nullptr_t) noexcept {}
    HttpBaseProtocolFilter();
};

struct WINRT_EBO HttpCacheControl :
    Windows::Web::Http::Filters::IHttpCacheControl
{
    HttpCacheControl(std::nullptr_t) noexcept {}
};

struct WINRT_EBO HttpServerCustomValidationRequestedEventArgs :
    Windows::Web::Http::Filters::IHttpServerCustomValidationRequestedEventArgs
{
    HttpServerCustomValidationRequestedEventArgs(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Popups.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.UI.Popups.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Popups {

struct __declspec(uuid("33f59b01-5325-43ab-9ab3-bdae440e4121")) __declspec(novtable) IMessageDialog : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Title(hstring * value) = 0;
    virtual HRESULT __stdcall put_Title(hstring value) = 0;
    virtual HRESULT __stdcall get_Commands(Windows::Foundation::Collections::IVector<Windows::UI::Popups::IUICommand> ** value) = 0;
    virtual HRESULT __stdcall get_DefaultCommandIndex(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_DefaultCommandIndex(uint32_t value) = 0;
    virtual HRESULT __stdcall get_CancelCommandIndex(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_CancelCommandIndex(uint32_t value) = 0;
    virtual HRESULT __stdcall get_Content(hstring * value) = 0;
    virtual HRESULT __stdcall put_Content(hstring value) = 0;
    virtual HRESULT __stdcall abi_ShowAsync(Windows::Foundation::IAsyncOperation<Windows::UI::Popups::IUICommand> ** messageDialogAsyncOperation) = 0;
    virtual HRESULT __stdcall get_Options(winrt::Windows::UI::Popups::MessageDialogOptions * value) = 0;
    virtual HRESULT __stdcall put_Options(winrt::Windows::UI::Popups::MessageDialogOptions value) = 0;
};

struct __declspec(uuid("2d161777-a66f-4ea5-bb87-793ffa4941f2")) __declspec(novtable) IMessageDialogFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(hstring content, Windows::UI::Popups::IMessageDialog ** messageDialog) = 0;
    virtual HRESULT __stdcall abi_CreateWithTitle(hstring content, hstring title, Windows::UI::Popups::IMessageDialog ** messageDialog) = 0;
};

struct __declspec(uuid("4e9bc6dc-880d-47fc-a0a1-72b639e62559")) __declspec(novtable) IPopupMenu : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Commands(Windows::Foundation::Collections::IVector<Windows::UI::Popups::IUICommand> ** value) = 0;
    virtual HRESULT __stdcall abi_ShowAsync(Windows::Foundation::Point invocationPoint, Windows::Foundation::IAsyncOperation<Windows::UI::Popups::IUICommand> ** asyncOperation) = 0;
    virtual HRESULT __stdcall abi_ShowAsyncWithRect(Windows::Foundation::Rect selection, Windows::Foundation::IAsyncOperation<Windows::UI::Popups::IUICommand> ** asyncOperation) = 0;
    virtual HRESULT __stdcall abi_ShowAsyncWithRectAndPlacement(Windows::Foundation::Rect selection, winrt::Windows::UI::Popups::Placement preferredPlacement, Windows::Foundation::IAsyncOperation<Windows::UI::Popups::IUICommand> ** asyncOperation) = 0;
};

struct __declspec(uuid("4ff93a75-4145-47ff-ac7f-dff1c1fa5b0f")) __declspec(novtable) IUICommand : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Label(hstring * value) = 0;
    virtual HRESULT __stdcall put_Label(hstring value) = 0;
    virtual HRESULT __stdcall get_Invoked(Windows::UI::Popups::UICommandInvokedHandler ** value) = 0;
    virtual HRESULT __stdcall put_Invoked(Windows::UI::Popups::UICommandInvokedHandler * value) = 0;
    virtual HRESULT __stdcall get_Id(Windows::IInspectable ** value) = 0;
    virtual HRESULT __stdcall put_Id(Windows::IInspectable * value) = 0;
};

struct __declspec(uuid("a21a8189-26b0-4676-ae94-54041bc125e8")) __declspec(novtable) IUICommandFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(hstring label, Windows::UI::Popups::IUICommand ** instance) = 0;
    virtual HRESULT __stdcall abi_CreateWithHandler(hstring label, Windows::UI::Popups::UICommandInvokedHandler * action, Windows::UI::Popups::IUICommand ** instance) = 0;
    virtual HRESULT __stdcall abi_CreateWithHandlerAndId(hstring label, Windows::UI::Popups::UICommandInvokedHandler * action, Windows::IInspectable * commandId, Windows::UI::Popups::IUICommand ** instance) = 0;
};

struct __declspec(uuid("daf77a4f-c27a-4298-9ac6-2922c45e7da6")) __declspec(novtable) UICommandInvokedHandler : IUnknown
{
    virtual HRESULT __stdcall abi_Invoke(Windows::UI::Popups::IUICommand * command) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::UI::Popups::MessageDialog> { using default_interface = Windows::UI::Popups::IMessageDialog; };
template <> struct traits<Windows::UI::Popups::PopupMenu> { using default_interface = Windows::UI::Popups::IPopupMenu; };
template <> struct traits<Windows::UI::Popups::UICommand> { using default_interface = Windows::UI::Popups::IUICommand; };
template <> struct traits<Windows::UI::Popups::UICommandSeparator> { using default_interface = Windows::UI::Popups::IUICommand; };

}

namespace Windows::UI::Popups {

template <typename T> struct impl_IMessageDialog;
template <typename T> struct impl_IMessageDialogFactory;
template <typename T> struct impl_IPopupMenu;
template <typename T> struct impl_IUICommand;
template <typename T> struct impl_IUICommandFactory;
template <typename T> struct impl_UICommandInvokedHandler;

}

namespace impl {

template <> struct traits<Windows::UI::Popups::IMessageDialog>
{
    using abi = ABI::Windows::UI::Popups::IMessageDialog;
    template <typename D> using consume = Windows::UI::Popups::impl_IMessageDialog<D>;
};

template <> struct traits<Windows::UI::Popups::IMessageDialogFactory>
{
    using abi = ABI::Windows::UI::Popups::IMessageDialogFactory;
    template <typename D> using consume = Windows::UI::Popups::impl_IMessageDialogFactory<D>;
};

template <> struct traits<Windows::UI::Popups::IPopupMenu>
{
    using abi = ABI::Windows::UI::Popups::IPopupMenu;
    template <typename D> using consume = Windows::UI::Popups::impl_IPopupMenu<D>;
};

template <> struct traits<Windows::UI::Popups::IUICommand>
{
    using abi = ABI::Windows::UI::Popups::IUICommand;
    template <typename D> using consume = Windows::UI::Popups::impl_IUICommand<D>;
};

template <> struct traits<Windows::UI::Popups::IUICommandFactory>
{
    using abi = ABI::Windows::UI::Popups::IUICommandFactory;
    template <typename D> using consume = Windows::UI::Popups::impl_IUICommandFactory<D>;
};

template <> struct traits<Windows::UI::Popups::UICommandInvokedHandler>
{
    using abi = ABI::Windows::UI::Popups::UICommandInvokedHandler;
};

template <> struct traits<Windows::UI::Popups::MessageDialog>
{
    using abi = ABI::Windows::UI::Popups::MessageDialog;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Popups.MessageDialog"; }
};

template <> struct traits<Windows::UI::Popups::PopupMenu>
{
    using abi = ABI::Windows::UI::Popups::PopupMenu;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Popups.PopupMenu"; }
};

template <> struct traits<Windows::UI::Popups::UICommand>
{
    using abi = ABI::Windows::UI::Popups::UICommand;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Popups.UICommand"; }
};

template <> struct traits<Windows::UI::Popups::UICommandSeparator>
{
    using abi = ABI::Windows::UI::Popups::UICommandSeparator;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Popups.UICommandSeparator"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Pwm.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::Pwm {

struct IPwmController;
struct IPwmControllerStatics;
struct IPwmControllerStatics2;
struct IPwmPin;
struct PwmController;
struct PwmPin;

}

namespace Windows::Devices::Pwm {

struct IPwmController;
struct IPwmControllerStatics;
struct IPwmControllerStatics2;
struct IPwmPin;
struct PwmController;
struct PwmPin;

}

namespace Windows::Devices::Pwm {

enum class PwmPulsePolarity
{
    ActiveHigh = 0,
    ActiveLow = 1,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.Capture.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Media.Capture.1.h"
#include "Windows.Foundation.2.h"
#include "Windows.Storage.Streams.2.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_513ef3af_e784_5325_a91e_97c2b8111cf3
#define WINRT_GENERIC_513ef3af_e784_5325_a91e_97c2b8111cf3
template <> struct __declspec(uuid("513ef3af-e784-5325-a91e-97c2b8111cf3")) __declspec(novtable) IReference<uint32_t> : impl_IReference<uint32_t> {};
#endif

#ifndef WINRT_GENERIC_604d0c4c_91de_5c2a_935f_362f13eaf800
#define WINRT_GENERIC_604d0c4c_91de_5c2a_935f_362f13eaf800
template <> struct __declspec(uuid("604d0c4c-91de-5c2a-935f-362f13eaf800")) __declspec(novtable) IReference<Windows::Foundation::TimeSpan> : impl_IReference<Windows::Foundation::TimeSpan> {};
#endif

#ifndef WINRT_GENERIC_548cefbd_bc8a_5fa0_8df2_957440fc8bf4
#define WINRT_GENERIC_548cefbd_bc8a_5fa0_8df2_957440fc8bf4
template <> struct __declspec(uuid("548cefbd-bc8a-5fa0-8df2-957440fc8bf4")) __declspec(novtable) IReference<int32_t> : impl_IReference<int32_t> {};
#endif

#ifndef WINRT_GENERIC_2f2d6c29_5473_5f3e_92e7_96572bb990e2
#define WINRT_GENERIC_2f2d6c29_5473_5f3e_92e7_96572bb990e2
template <> struct __declspec(uuid("2f2d6c29-5473-5f3e-92e7-96572bb990e2")) __declspec(novtable) IReference<double> : impl_IReference<double> {};
#endif

#ifndef WINRT_GENERIC_5e52f8ce_aced_5a42_95b4_f674dd84885e
#define WINRT_GENERIC_5e52f8ce_aced_5a42_95b4_f674dd84885e
template <> struct __declspec(uuid("5e52f8ce-aced-5a42-95b4-f674dd84885e")) __declspec(novtable) IAsyncOperation<Windows::Storage::StorageFile> : impl_IAsyncOperation<Windows::Storage::StorageFile> {};
#endif

#ifndef WINRT_GENERIC_f5cb24b5_ff00_58df_b460_17bbf2cd64d3
#define WINRT_GENERIC_f5cb24b5_ff00_58df_b460_17bbf2cd64d3
template <> struct __declspec(uuid("f5cb24b5-ff00-58df-b460-17bbf2cd64d3")) __declspec(novtable) TypedEventHandler<Windows::Media::Capture::AppCapture, Windows::IInspectable> : impl_TypedEventHandler<Windows::Media::Capture::AppCapture, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_3c00fd60_2950_5939_a21a_2d12c5a01b8a
#define WINRT_GENERIC_3c00fd60_2950_5939_a21a_2d12c5a01b8a
template <> struct __declspec(uuid("3c00fd60-2950-5939-a21a-2d12c5a01b8a")) __declspec(novtable) IReference<bool> : impl_IReference<bool> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_726c7c8c_789e_5fcb_b31f_f9d9d4a3ac42
#define WINRT_GENERIC_726c7c8c_789e_5fcb_b31f_f9d9d4a3ac42
template <> struct __declspec(uuid("726c7c8c-789e-5fcb-b31f-f9d9d4a3ac42")) __declspec(novtable) IVectorView<Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription> : impl_IVectorView<Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription> {};
#endif

#ifndef WINRT_GENERIC_75626cf9_1f99_5e10_bd03_f2961e85af1f
#define WINRT_GENERIC_75626cf9_1f99_5e10_bd03_f2961e85af1f
template <> struct __declspec(uuid("75626cf9-1f99-5e10-bd03-f2961e85af1f")) __declspec(novtable) IVectorView<Windows::Media::Capture::MediaCaptureVideoProfile> : impl_IVectorView<Windows::Media::Capture::MediaCaptureVideoProfile> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_4febefcc_bec0_5433_a7ba_7603d1edc7b9
#define WINRT_GENERIC_4febefcc_bec0_5433_a7ba_7603d1edc7b9
template <> struct __declspec(uuid("4febefcc-bec0-5433-a7ba-7603d1edc7b9")) __declspec(novtable) IAsyncOperation<Windows::Media::Capture::LowLagMediaRecording> : impl_IAsyncOperation<Windows::Media::Capture::LowLagMediaRecording> {};
#endif

#ifndef WINRT_GENERIC_af24404b_7e0d_5ffe_bbc8_aaf6ffe208fc
#define WINRT_GENERIC_af24404b_7e0d_5ffe_bbc8_aaf6ffe208fc
template <> struct __declspec(uuid("af24404b-7e0d-5ffe-bbc8-aaf6ffe208fc")) __declspec(novtable) IAsyncOperation<Windows::Media::Capture::LowLagPhotoCapture> : impl_IAsyncOperation<Windows::Media::Capture::LowLagPhotoCapture> {};
#endif

#ifndef WINRT_GENERIC_ac9f0460_9d14_5af0_b17b_37ea2d76a80d
#define WINRT_GENERIC_ac9f0460_9d14_5af0_b17b_37ea2d76a80d
template <> struct __declspec(uuid("ac9f0460-9d14-5af0-b17b-37ea2d76a80d")) __declspec(novtable) IAsyncOperation<Windows::Media::Capture::LowLagPhotoSequenceCapture> : impl_IAsyncOperation<Windows::Media::Capture::LowLagPhotoSequenceCapture> {};
#endif

#ifndef WINRT_GENERIC_0327c8bc_3148_53f3_8a3d_cdb12e49e132
#define WINRT_GENERIC_0327c8bc_3148_53f3_8a3d_cdb12e49e132
template <> struct __declspec(uuid("0327c8bc-3148-53f3-8a3d-cdb12e49e132")) __declspec(novtable) IAsyncOperation<Windows::Media::Capture::Core::VariablePhotoSequenceCapture> : impl_IAsyncOperation<Windows::Media::Capture::Core::VariablePhotoSequenceCapture> {};
#endif

#ifndef WINRT_GENERIC_0561d9e8_0290_5332_b15e_b0d51abe737c
#define WINRT_GENERIC_0561d9e8_0290_5332_b15e_b0d51abe737c
template <> struct __declspec(uuid("0561d9e8-0290-5332-b15e-b0d51abe737c")) __declspec(novtable) TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::Media::Capture::MediaCaptureFocusChangedEventArgs> : impl_TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::Media::Capture::MediaCaptureFocusChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_37dc3b13_b096_5f43_8104_f0dc4302e2b5
#define WINRT_GENERIC_37dc3b13_b096_5f43_8104_f0dc4302e2b5
template <> struct __declspec(uuid("37dc3b13-b096-5f43-8104-f0dc4302e2b5")) __declspec(novtable) TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::Media::Capture::PhotoConfirmationCapturedEventArgs> : impl_TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::Media::Capture::PhotoConfirmationCapturedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_f5cb3303_1c1f_5d30_b402_efa192e80c49
#define WINRT_GENERIC_f5cb3303_1c1f_5d30_b402_efa192e80c49
template <> struct __declspec(uuid("f5cb3303-1c1f-5d30-b402-efa192e80c49")) __declspec(novtable) IAsyncOperation<Windows::Media::IMediaExtension> : impl_IAsyncOperation<Windows::Media::IMediaExtension> {};
#endif

#ifndef WINRT_GENERIC_44c588f1_1bb7_5e12_8413_3cf0373c0bc8
#define WINRT_GENERIC_44c588f1_1bb7_5e12_8413_3cf0373c0bc8
template <> struct __declspec(uuid("44c588f1-1bb7-5e12-8413-3cf0373c0bc8")) __declspec(novtable) TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::IInspectable> : impl_TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_f12e515d_ac45_5153_96b2_ce53ab594a57
#define WINRT_GENERIC_f12e515d_ac45_5153_96b2_ce53ab594a57
template <> struct __declspec(uuid("f12e515d-ac45-5153-96b2-ce53ab594a57")) __declspec(novtable) IAsyncOperation<Windows::Media::VideoFrame> : impl_IAsyncOperation<Windows::Media::VideoFrame> {};
#endif

#ifndef WINRT_GENERIC_8eb156d9_2ce4_5ecd_81f4_a08731fb74cf
#define WINRT_GENERIC_8eb156d9_2ce4_5ecd_81f4_a08731fb74cf
template <> struct __declspec(uuid("8eb156d9-2ce4-5ecd-81f4-a08731fb74cf")) __declspec(novtable) IAsyncOperation<Windows::Media::Capture::AdvancedPhotoCapture> : impl_IAsyncOperation<Windows::Media::Capture::AdvancedPhotoCapture> {};
#endif

#ifndef WINRT_GENERIC_202a2618_5478_5eba_9bd3_9d83f462747e
#define WINRT_GENERIC_202a2618_5478_5eba_9bd3_9d83f462747e
template <> struct __declspec(uuid("202a2618-5478-5eba-9bd3-9d83f462747e")) __declspec(novtable) IAsyncOperation<Windows::Media::Capture::MediaCapturePauseResult> : impl_IAsyncOperation<Windows::Media::Capture::MediaCapturePauseResult> {};
#endif

#ifndef WINRT_GENERIC_eb798827_a4a9_533a_9e83_0fb085b2ad36
#define WINRT_GENERIC_eb798827_a4a9_533a_9e83_0fb085b2ad36
template <> struct __declspec(uuid("eb798827-a4a9-533a-9e83-0fb085b2ad36")) __declspec(novtable) IAsyncOperation<Windows::Media::Capture::MediaCaptureStopResult> : impl_IAsyncOperation<Windows::Media::Capture::MediaCaptureStopResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_534ea61f_8be7_5e93_b01b_ae1f9dd242a4
#define WINRT_GENERIC_534ea61f_8be7_5e93_b01b_ae1f9dd242a4
template <> struct __declspec(uuid("534ea61f-8be7-5e93-b01b-ae1f9dd242a4")) __declspec(novtable) IMapView<hstring, Windows::Media::Capture::Frames::MediaFrameSource> : impl_IMapView<hstring, Windows::Media::Capture::Frames::MediaFrameSource> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_a10cb14d_7935_5c87_9026_8abe792a3be5
#define WINRT_GENERIC_a10cb14d_7935_5c87_9026_8abe792a3be5
template <> struct __declspec(uuid("a10cb14d-7935-5c87-9026-8abe792a3be5")) __declspec(novtable) IAsyncOperation<Windows::Media::Capture::Frames::MediaFrameReader> : impl_IAsyncOperation<Windows::Media::Capture::Frames::MediaFrameReader> {};
#endif

#ifndef WINRT_GENERIC_af5235b1_4778_55e1_b49f_608048ea9bd9
#define WINRT_GENERIC_af5235b1_4778_55e1_b49f_608048ea9bd9
template <> struct __declspec(uuid("af5235b1-4778-55e1-b49f-608048ea9bd9")) __declspec(novtable) IAsyncOperation<Windows::Media::Capture::CapturedPhoto> : impl_IAsyncOperation<Windows::Media::Capture::CapturedPhoto> {};
#endif

#ifndef WINRT_GENERIC_8f71b217_61ec_58ab_a646_eede0142d568
#define WINRT_GENERIC_8f71b217_61ec_58ab_a646_eede0142d568
template <> struct __declspec(uuid("8f71b217-61ec-58ab-a646-eede0142d568")) __declspec(novtable) IAsyncOperation<Windows::Media::Capture::AdvancedCapturedPhoto> : impl_IAsyncOperation<Windows::Media::Capture::AdvancedCapturedPhoto> {};
#endif

#ifndef WINRT_GENERIC_843e69ba_5702_5d97_ab81_ef078de3f9b1
#define WINRT_GENERIC_843e69ba_5702_5d97_ab81_ef078de3f9b1
template <> struct __declspec(uuid("843e69ba-5702-5d97-ab81-ef078de3f9b1")) __declspec(novtable) TypedEventHandler<Windows::Media::Capture::AdvancedPhotoCapture, Windows::Media::Capture::OptionalReferencePhotoCapturedEventArgs> : impl_TypedEventHandler<Windows::Media::Capture::AdvancedPhotoCapture, Windows::Media::Capture::OptionalReferencePhotoCapturedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_5cb4a98f_abf1_5518_9094_26db326a5f4e
#define WINRT_GENERIC_5cb4a98f_abf1_5518_9094_26db326a5f4e
template <> struct __declspec(uuid("5cb4a98f-abf1-5518-9094-26db326a5f4e")) __declspec(novtable) TypedEventHandler<Windows::Media::Capture::AdvancedPhotoCapture, Windows::IInspectable> : impl_TypedEventHandler<Windows::Media::Capture::AdvancedPhotoCapture, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_80423f11_054f_5eac_afd3_63b6ce15e77b
#define WINRT_GENERIC_80423f11_054f_5eac_afd3_63b6ce15e77b
template <> struct __declspec(uuid("80423f11-054f-5eac-afd3-63b6ce15e77b")) __declspec(novtable) IReference<Windows::Foundation::Rect> : impl_IReference<Windows::Foundation::Rect> {};
#endif

#ifndef WINRT_GENERIC_b98aab3a_fe80_5b27_88c3_e77ff585a96b
#define WINRT_GENERIC_b98aab3a_fe80_5b27_88c3_e77ff585a96b
template <> struct __declspec(uuid("b98aab3a-fe80-5b27-88c3-e77ff585a96b")) __declspec(novtable) TypedEventHandler<Windows::Media::Capture::LowLagPhotoSequenceCapture, Windows::Media::Capture::PhotoCapturedEventArgs> : impl_TypedEventHandler<Windows::Media::Capture::LowLagPhotoSequenceCapture, Windows::Media::Capture::PhotoCapturedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_719cc2ba_3e76_5def_9f1a_38d85a145ea8
#define WINRT_GENERIC_719cc2ba_3e76_5def_9f1a_38d85a145ea8
template <> struct __declspec(uuid("719cc2ba-3e76-5def-9f1a-38d85a145ea8")) __declspec(novtable) IReference<float> : impl_IReference<float> {};
#endif

#ifndef WINRT_GENERIC_e20596aa_0bbe_5203_be6b_6b71ff5b0843
#define WINRT_GENERIC_e20596aa_0bbe_5203_be6b_6b71ff5b0843
template <> struct __declspec(uuid("e20596aa-0bbe-5203-be6b-6b71ff5b0843")) __declspec(novtable) IReference<winrt::Windows::Media::Devices::CaptureSceneMode> : impl_IReference<winrt::Windows::Media::Devices::CaptureSceneMode> {};
#endif

#ifndef WINRT_GENERIC_58820185_5da0_5faa_86da_9bd9f03974fa
#define WINRT_GENERIC_58820185_5da0_5faa_86da_9bd9f03974fa
template <> struct __declspec(uuid("58820185-5da0-5faa-86da-9bd9f03974fa")) __declspec(novtable) IReference<winrt::Windows::Media::Devices::MediaCaptureFocusState> : impl_IReference<winrt::Windows::Media::Devices::MediaCaptureFocusState> {};
#endif

#ifndef WINRT_GENERIC_79c7838a_39e2_5287_ac3b_b118db251002
#define WINRT_GENERIC_79c7838a_39e2_5287_ac3b_b118db251002
template <> struct __declspec(uuid("79c7838a-39e2-5287-ac3b-b118db251002")) __declspec(novtable) IReference<Windows::Media::Capture::WhiteBalanceGain> : impl_IReference<Windows::Media::Capture::WhiteBalanceGain> {};
#endif

#ifndef WINRT_GENERIC_83dc154d_bb6f_598e_a887_41ba1801f019
#define WINRT_GENERIC_83dc154d_bb6f_598e_a887_41ba1801f019
template <> struct __declspec(uuid("83dc154d-bb6f-598e-a887-41ba1801f019")) __declspec(novtable) TypedEventHandler<Windows::Media::Capture::ScreenCapture, Windows::Media::Capture::SourceSuspensionChangedEventArgs> : impl_TypedEventHandler<Windows::Media::Capture::ScreenCapture, Windows::Media::Capture::SourceSuspensionChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_e521c894_2c26_5946_9e61_2b5e188d01ed
#define WINRT_GENERIC_e521c894_2c26_5946_9e61_2b5e188d01ed
template <> struct __declspec(uuid("e521c894-2c26-5946-9e61-2b5e188d01ed")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Storage::StorageFile> : impl_AsyncOperationCompletedHandler<Windows::Storage::StorageFile> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_b3e8378f_710c_5126_a6c9_8f489f63e15e
#define WINRT_GENERIC_b3e8378f_710c_5126_a6c9_8f489f63e15e
template <> struct __declspec(uuid("b3e8378f-710c-5126-a6c9-8f489f63e15e")) __declspec(novtable) IIterator<Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription> : impl_IIterator<Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription> {};
#endif

#ifndef WINRT_GENERIC_0895e56d_fe1f_5364_ab67_c597d8970b89
#define WINRT_GENERIC_0895e56d_fe1f_5364_ab67_c597d8970b89
template <> struct __declspec(uuid("0895e56d-fe1f-5364-ab67-c597d8970b89")) __declspec(novtable) IIterable<Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription> : impl_IIterable<Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription> {};
#endif

#ifndef WINRT_GENERIC_a9bc95f8_b5c0_5108_b9ed_a902339366e9
#define WINRT_GENERIC_a9bc95f8_b5c0_5108_b9ed_a902339366e9
template <> struct __declspec(uuid("a9bc95f8-b5c0-5108-b9ed-a902339366e9")) __declspec(novtable) IIterator<Windows::Media::Capture::MediaCaptureVideoProfile> : impl_IIterator<Windows::Media::Capture::MediaCaptureVideoProfile> {};
#endif

#ifndef WINRT_GENERIC_dbd49d71_e07b_5e11_824a_62ace8bdfc3e
#define WINRT_GENERIC_dbd49d71_e07b_5e11_824a_62ace8bdfc3e
template <> struct __declspec(uuid("dbd49d71-e07b-5e11-824a-62ace8bdfc3e")) __declspec(novtable) IIterable<Windows::Media::Capture::MediaCaptureVideoProfile> : impl_IIterable<Windows::Media::Capture::MediaCaptureVideoProfile> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_64a8f80c_e646_52bb_8f4b_2a1d6b0b8219
#define WINRT_GENERIC_64a8f80c_e646_52bb_8f4b_2a1d6b0b8219
template <> struct __declspec(uuid("64a8f80c-e646-52bb-8f4b-2a1d6b0b8219")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::Capture::LowLagMediaRecording> : impl_AsyncOperationCompletedHandler<Windows::Media::Capture::LowLagMediaRecording> {};
#endif

#ifndef WINRT_GENERIC_6cebb368_4e84_500a_9a5f_7b9a1ade1f44
#define WINRT_GENERIC_6cebb368_4e84_500a_9a5f_7b9a1ade1f44
template <> struct __declspec(uuid("6cebb368-4e84-500a-9a5f-7b9a1ade1f44")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::Capture::LowLagPhotoCapture> : impl_AsyncOperationCompletedHandler<Windows::Media::Capture::LowLagPhotoCapture> {};
#endif

#ifndef WINRT_GENERIC_767e0fdc_9563_572d_84e1_9caab0deb63f
#define WINRT_GENERIC_767e0fdc_9563_572d_84e1_9caab0deb63f
template <> struct __declspec(uuid("767e0fdc-9563-572d-84e1-9caab0deb63f")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::Capture::LowLagPhotoSequenceCapture> : impl_AsyncOperationCompletedHandler<Windows::Media::Capture::LowLagPhotoSequenceCapture> {};
#endif

#ifndef WINRT_GENERIC_18a55dd3_01e3_5ae5_9b5e_c84ad40cf6b7
#define WINRT_GENERIC_18a55dd3_01e3_5ae5_9b5e_c84ad40cf6b7
template <> struct __declspec(uuid("18a55dd3-01e3-5ae5-9b5e-c84ad40cf6b7")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::Capture::Core::VariablePhotoSequenceCapture> : impl_AsyncOperationCompletedHandler<Windows::Media::Capture::Core::VariablePhotoSequenceCapture> {};
#endif

#ifndef WINRT_GENERIC_9c1b578e_fb7d_5bab_ba39_86387fe533b6
#define WINRT_GENERIC_9c1b578e_fb7d_5bab_ba39_86387fe533b6
template <> struct __declspec(uuid("9c1b578e-fb7d-5bab-ba39-86387fe533b6")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::IMediaExtension> : impl_AsyncOperationCompletedHandler<Windows::Media::IMediaExtension> {};
#endif

#ifndef WINRT_GENERIC_6086f2fb_4a29_54ca_b6a3_f2391a03bc3b
#define WINRT_GENERIC_6086f2fb_4a29_54ca_b6a3_f2391a03bc3b
template <> struct __declspec(uuid("6086f2fb-4a29-54ca-b6a3-f2391a03bc3b")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::VideoFrame> : impl_AsyncOperationCompletedHandler<Windows::Media::VideoFrame> {};
#endif

#ifndef WINRT_GENERIC_d1dfaec8_eed3_5ce3_9832_18344c98fa71
#define WINRT_GENERIC_d1dfaec8_eed3_5ce3_9832_18344c98fa71
template <> struct __declspec(uuid("d1dfaec8-eed3-5ce3-9832-18344c98fa71")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::Capture::AdvancedPhotoCapture> : impl_AsyncOperationCompletedHandler<Windows::Media::Capture::AdvancedPhotoCapture> {};
#endif

#ifndef WINRT_GENERIC_fe726311_26bf_51cd_bdeb_f40f8f469d0a
#define WINRT_GENERIC_fe726311_26bf_51cd_bdeb_f40f8f469d0a
template <> struct __declspec(uuid("fe726311-26bf-51cd-bdeb-f40f8f469d0a")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::Capture::MediaCapturePauseResult> : impl_AsyncOperationCompletedHandler<Windows::Media::Capture::MediaCapturePauseResult> {};
#endif

#ifndef WINRT_GENERIC_5d4e0674_1df4_5326_ba78_72f6655d2a76
#define WINRT_GENERIC_5d4e0674_1df4_5326_ba78_72f6655d2a76
template <> struct __declspec(uuid("5d4e0674-1df4-5326-ba78-72f6655d2a76")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::Capture::MediaCaptureStopResult> : impl_AsyncOperationCompletedHandler<Windows::Media::Capture::MediaCaptureStopResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_29f35a95_7eae_55a7_bc19_ed87baed4869
#define WINRT_GENERIC_29f35a95_7eae_55a7_bc19_ed87baed4869
template <> struct __declspec(uuid("29f35a95-7eae-55a7-bc19-ed87baed4869")) __declspec(novtable) IKeyValuePair<hstring, Windows::Media::Capture::Frames::MediaFrameSource> : impl_IKeyValuePair<hstring, Windows::Media::Capture::Frames::MediaFrameSource> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_a6214dad_b917_5c89_a068_e32c9a7037d3
#define WINRT_GENERIC_a6214dad_b917_5c89_a068_e32c9a7037d3
template <> struct __declspec(uuid("a6214dad-b917-5c89-a068-e32c9a7037d3")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::Capture::Frames::MediaFrameReader> : impl_AsyncOperationCompletedHandler<Windows::Media::Capture::Frames::MediaFrameReader> {};
#endif

#ifndef WINRT_GENERIC_fdb0aa78_04e1_56b3_b6fc_f4de79cd41a0
#define WINRT_GENERIC_fdb0aa78_04e1_56b3_b6fc_f4de79cd41a0
template <> struct __declspec(uuid("fdb0aa78-04e1-56b3-b6fc-f4de79cd41a0")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::Capture::CapturedPhoto> : impl_AsyncOperationCompletedHandler<Windows::Media::Capture::CapturedPhoto> {};
#endif

#ifndef WINRT_GENERIC_edf3452c_d918_5c95_8e3a_245044dd70df
#define WINRT_GENERIC_edf3452c_d918_5c95_8e3a_245044dd70df
template <> struct __declspec(uuid("edf3452c-d918-5c95-8e3a-245044dd70df")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::Capture::AdvancedCapturedPhoto> : impl_AsyncOperationCompletedHandler<Windows::Media::Capture::AdvancedCapturedPhoto> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_d8ec36b7_64eb_5675_ad81_62233e483e17
#define WINRT_GENERIC_d8ec36b7_64eb_5675_ad81_62233e483e17
template <> struct __declspec(uuid("d8ec36b7-64eb-5675-ad81-62233e483e17")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Media::Capture::Frames::MediaFrameSource>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Media::Capture::Frames::MediaFrameSource>> {};
#endif

#ifndef WINRT_GENERIC_a038e80f_0b3d_5cd4_849d_13036e1f506e
#define WINRT_GENERIC_a038e80f_0b3d_5cd4_849d_13036e1f506e
template <> struct __declspec(uuid("a038e80f-0b3d-5cd4-849d-13036e1f506e")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Media::Capture::Frames::MediaFrameSource>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Media::Capture::Frames::MediaFrameSource>> {};
#endif


}

namespace Windows::Media::Capture {

template <typename D>
struct WINRT_EBO impl_IAdvancedCapturedPhoto
{
    Windows::Media::Capture::CapturedFrame Frame() const;
    Windows::Media::Devices::AdvancedPhotoMode Mode() const;
    Windows::IInspectable Context() const;
};

template <typename D>
struct WINRT_EBO impl_IAdvancedCapturedPhoto2
{
    Windows::Foundation::IReference<Windows::Foundation::Rect> FrameBoundsRelativeToReferencePhoto() const;
};

template <typename D>
struct WINRT_EBO impl_IAdvancedPhotoCapture
{
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::AdvancedCapturedPhoto> CaptureAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::AdvancedCapturedPhoto> CaptureAsync(const Windows::IInspectable & context) const;
    event_token OptionalReferencePhotoCaptured(const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::AdvancedPhotoCapture, Windows::Media::Capture::OptionalReferencePhotoCapturedEventArgs> & handler) const;
    using OptionalReferencePhotoCaptured_revoker = event_revoker<IAdvancedPhotoCapture>;
    OptionalReferencePhotoCaptured_revoker OptionalReferencePhotoCaptured(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::AdvancedPhotoCapture, Windows::Media::Capture::OptionalReferencePhotoCapturedEventArgs> & handler) const;
    void OptionalReferencePhotoCaptured(event_token token) const;
    event_token AllPhotosCaptured(const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::AdvancedPhotoCapture, Windows::IInspectable> & handler) const;
    using AllPhotosCaptured_revoker = event_revoker<IAdvancedPhotoCapture>;
    AllPhotosCaptured_revoker AllPhotosCaptured(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::AdvancedPhotoCapture, Windows::IInspectable> & handler) const;
    void AllPhotosCaptured(event_token token) const;
    Windows::Foundation::IAsyncAction FinishAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IAppCapture
{
    bool IsCapturingAudio() const;
    bool IsCapturingVideo() const;
    event_token CapturingChanged(const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::AppCapture, Windows::IInspectable> & handler) const;
    using CapturingChanged_revoker = event_revoker<IAppCapture>;
    CapturingChanged_revoker CapturingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::AppCapture, Windows::IInspectable> & handler) const;
    void CapturingChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IAppCaptureAlternateShortcutKeys
{
    void ToggleGameBarKey(Windows::System::VirtualKey value) const;
    Windows::System::VirtualKey ToggleGameBarKey() const;
    void ToggleGameBarKeyModifiers(Windows::System::VirtualKeyModifiers value) const;
    Windows::System::VirtualKeyModifiers ToggleGameBarKeyModifiers() const;
    void SaveHistoricalVideoKey(Windows::System::VirtualKey value) const;
    Windows::System::VirtualKey SaveHistoricalVideoKey() const;
    void SaveHistoricalVideoKeyModifiers(Windows::System::VirtualKeyModifiers value) const;
    Windows::System::VirtualKeyModifiers SaveHistoricalVideoKeyModifiers() const;
    void ToggleRecordingKey(Windows::System::VirtualKey value) const;
    Windows::System::VirtualKey ToggleRecordingKey() const;
    void ToggleRecordingKeyModifiers(Windows::System::VirtualKeyModifiers value) const;
    Windows::System::VirtualKeyModifiers ToggleRecordingKeyModifiers() const;
    void TakeScreenshotKey(Windows::System::VirtualKey value) const;
    Windows::System::VirtualKey TakeScreenshotKey() const;
    void TakeScreenshotKeyModifiers(Windows::System::VirtualKeyModifiers value) const;
    Windows::System::VirtualKeyModifiers TakeScreenshotKeyModifiers() const;
    void ToggleRecordingIndicatorKey(Windows::System::VirtualKey value) const;
    Windows::System::VirtualKey ToggleRecordingIndicatorKey() const;
    void ToggleRecordingIndicatorKeyModifiers(Windows::System::VirtualKeyModifiers value) const;
    Windows::System::VirtualKeyModifiers ToggleRecordingIndicatorKeyModifiers() const;
};

template <typename D>
struct WINRT_EBO impl_IAppCaptureAlternateShortcutKeys2
{
    void ToggleMicrophoneCaptureKey(Windows::System::VirtualKey value) const;
    Windows::System::VirtualKey ToggleMicrophoneCaptureKey() const;
    void ToggleMicrophoneCaptureKeyModifiers(Windows::System::VirtualKeyModifiers value) const;
    Windows::System::VirtualKeyModifiers ToggleMicrophoneCaptureKeyModifiers() const;
};

template <typename D>
struct WINRT_EBO impl_IAppCaptureAlternateShortcutKeys3
{
    void ToggleCameraCaptureKey(Windows::System::VirtualKey value) const;
    Windows::System::VirtualKey ToggleCameraCaptureKey() const;
    void ToggleCameraCaptureKeyModifiers(Windows::System::VirtualKeyModifiers value) const;
    Windows::System::VirtualKeyModifiers ToggleCameraCaptureKeyModifiers() const;
    void ToggleBroadcastKey(Windows::System::VirtualKey value) const;
    Windows::System::VirtualKey ToggleBroadcastKey() const;
    void ToggleBroadcastKeyModifiers(Windows::System::VirtualKeyModifiers value) const;
    Windows::System::VirtualKeyModifiers ToggleBroadcastKeyModifiers() const;
};

template <typename D>
struct WINRT_EBO impl_IAppCaptureManagerStatics
{
    Windows::Media::Capture::AppCaptureSettings GetCurrentSettings() const;
    void ApplySettings(const Windows::Media::Capture::AppCaptureSettings & appCaptureSettings) const;
};

template <typename D>
struct WINRT_EBO impl_IAppCaptureSettings
{
    void AppCaptureDestinationFolder(const Windows::Storage::StorageFolder & value) const;
    Windows::Storage::StorageFolder AppCaptureDestinationFolder() const;
    void AudioEncodingBitrate(uint32_t value) const;
    uint32_t AudioEncodingBitrate() const;
    void IsAudioCaptureEnabled(bool value) const;
    bool IsAudioCaptureEnabled() const;
    void CustomVideoEncodingBitrate(uint32_t value) const;
    uint32_t CustomVideoEncodingBitrate() const;
    void CustomVideoEncodingHeight(uint32_t value) const;
    uint32_t CustomVideoEncodingHeight() const;
    void CustomVideoEncodingWidth(uint32_t value) const;
    uint32_t CustomVideoEncodingWidth() const;
    void HistoricalBufferLength(uint32_t value) const;
    uint32_t HistoricalBufferLength() const;
    void HistoricalBufferLengthUnit(Windows::Media::Capture::AppCaptureHistoricalBufferLengthUnit value) const;
    Windows::Media::Capture::AppCaptureHistoricalBufferLengthUnit HistoricalBufferLengthUnit() const;
    void IsHistoricalCaptureEnabled(bool value) const;
    bool IsHistoricalCaptureEnabled() const;
    void IsHistoricalCaptureOnBatteryAllowed(bool value) const;
    bool IsHistoricalCaptureOnBatteryAllowed() const;
    void IsHistoricalCaptureOnWirelessDisplayAllowed(bool value) const;
    bool IsHistoricalCaptureOnWirelessDisplayAllowed() const;
    void MaximumRecordLength(const Windows::Foundation::TimeSpan & value) const;
    Windows::Foundation::TimeSpan MaximumRecordLength() const;
    void ScreenshotDestinationFolder(const Windows::Storage::StorageFolder & value) const;
    Windows::Storage::StorageFolder ScreenshotDestinationFolder() const;
    void VideoEncodingBitrateMode(Windows::Media::Capture::AppCaptureVideoEncodingBitrateMode value) const;
    Windows::Media::Capture::AppCaptureVideoEncodingBitrateMode VideoEncodingBitrateMode() const;
    void VideoEncodingResolutionMode(Windows::Media::Capture::AppCaptureVideoEncodingResolutionMode value) const;
    Windows::Media::Capture::AppCaptureVideoEncodingResolutionMode VideoEncodingResolutionMode() const;
    void IsAppCaptureEnabled(bool value) const;
    bool IsAppCaptureEnabled() const;
    bool IsCpuConstrained() const;
    bool IsDisabledByPolicy() const;
    bool IsMemoryConstrained() const;
    bool HasHardwareEncoder() const;
};

template <typename D>
struct WINRT_EBO impl_IAppCaptureSettings2
{
    bool IsGpuConstrained() const;
    Windows::Media::Capture::AppCaptureAlternateShortcutKeys AlternateShortcutKeys() const;
};

template <typename D>
struct WINRT_EBO impl_IAppCaptureSettings3
{
    void IsMicrophoneCaptureEnabled(bool value) const;
    bool IsMicrophoneCaptureEnabled() const;
};

template <typename D>
struct WINRT_EBO impl_IAppCaptureSettings4
{
    void IsMicrophoneCaptureEnabledByDefault(bool value) const;
    bool IsMicrophoneCaptureEnabledByDefault() const;
    void SystemAudioGain(double value) const;
    double SystemAudioGain() const;
    void MicrophoneGain(double value) const;
    double MicrophoneGain() const;
    void VideoEncodingFrameRateMode(Windows::Media::Capture::AppCaptureVideoEncodingFrameRateMode value) const;
    Windows::Media::Capture::AppCaptureVideoEncodingFrameRateMode VideoEncodingFrameRateMode() const;
};

template <typename D>
struct WINRT_EBO impl_IAppCaptureStatics
{
    Windows::Media::Capture::AppCapture GetForCurrentView() const;
};

template <typename D>
struct WINRT_EBO impl_ICameraCaptureUI
{
    Windows::Media::Capture::CameraCaptureUIPhotoCaptureSettings PhotoSettings() const;
    Windows::Media::Capture::CameraCaptureUIVideoCaptureSettings VideoSettings() const;
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> CaptureFileAsync(Windows::Media::Capture::CameraCaptureUIMode mode) const;
};

template <typename D>
struct WINRT_EBO impl_ICameraCaptureUIPhotoCaptureSettings
{
    Windows::Media::Capture::CameraCaptureUIPhotoFormat Format() const;
    void Format(Windows::Media::Capture::CameraCaptureUIPhotoFormat value) const;
    Windows::Media::Capture::CameraCaptureUIMaxPhotoResolution MaxResolution() const;
    void MaxResolution(Windows::Media::Capture::CameraCaptureUIMaxPhotoResolution value) const;
    Windows::Foundation::Size CroppedSizeInPixels() const;
    void CroppedSizeInPixels(const Windows::Foundation::Size & value) const;
    Windows::Foundation::Size CroppedAspectRatio() const;
    void CroppedAspectRatio(const Windows::Foundation::Size & value) const;
    bool AllowCropping() const;
    void AllowCropping(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ICameraCaptureUIVideoCaptureSettings
{
    Windows::Media::Capture::CameraCaptureUIVideoFormat Format() const;
    void Format(Windows::Media::Capture::CameraCaptureUIVideoFormat value) const;
    Windows::Media::Capture::CameraCaptureUIMaxVideoResolution MaxResolution() const;
    void MaxResolution(Windows::Media::Capture::CameraCaptureUIMaxVideoResolution value) const;
    float MaxDurationInSeconds() const;
    void MaxDurationInSeconds(float value) const;
    bool AllowTrimming() const;
    void AllowTrimming(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ICameraOptionsUIStatics
{
    void Show(const Windows::Media::Capture::MediaCapture & mediaCapture) const;
};

template <typename D>
struct WINRT_EBO impl_ICapturedFrame
{
    uint32_t Width() const;
    uint32_t Height() const;
};

template <typename D>
struct WINRT_EBO impl_ICapturedFrameControlValues
{
    Windows::Foundation::IReference<Windows::Foundation::TimeSpan> Exposure() const;
    Windows::Foundation::IReference<float> ExposureCompensation() const;
    Windows::Foundation::IReference<uint32_t> IsoSpeed() const;
    Windows::Foundation::IReference<uint32_t> Focus() const;
    Windows::Foundation::IReference<winrt::Windows::Media::Devices::CaptureSceneMode> SceneMode() const;
    Windows::Foundation::IReference<bool> Flashed() const;
    Windows::Foundation::IReference<float> FlashPowerPercent() const;
    Windows::Foundation::IReference<uint32_t> WhiteBalance() const;
    Windows::Foundation::IReference<float> ZoomFactor() const;
};

template <typename D>
struct WINRT_EBO impl_ICapturedFrameControlValues2
{
    Windows::Foundation::IReference<winrt::Windows::Media::Devices::MediaCaptureFocusState> FocusState() const;
    Windows::Foundation::IReference<double> IsoDigitalGain() const;
    Windows::Foundation::IReference<double> IsoAnalogGain() const;
    Windows::Media::MediaProperties::MediaRatio SensorFrameRate() const;
    Windows::Foundation::IReference<Windows::Media::Capture::WhiteBalanceGain> WhiteBalanceGain() const;
};

template <typename D>
struct WINRT_EBO impl_ICapturedFrameWithSoftwareBitmap
{
    Windows::Graphics::Imaging::SoftwareBitmap SoftwareBitmap() const;
};

template <typename D>
struct WINRT_EBO impl_ICapturedPhoto
{
    Windows::Media::Capture::CapturedFrame Frame() const;
    Windows::Media::Capture::CapturedFrame Thumbnail() const;
};

template <typename D>
struct WINRT_EBO impl_ILowLagMediaRecording
{
    Windows::Foundation::IAsyncAction StartAsync() const;
    Windows::Foundation::IAsyncAction StopAsync() const;
    Windows::Foundation::IAsyncAction FinishAsync() const;
};

template <typename D>
struct WINRT_EBO impl_ILowLagMediaRecording2
{
    Windows::Foundation::IAsyncAction PauseAsync(Windows::Media::Devices::MediaCapturePauseBehavior behavior) const;
    Windows::Foundation::IAsyncAction ResumeAsync() const;
};

template <typename D>
struct WINRT_EBO impl_ILowLagMediaRecording3
{
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::MediaCapturePauseResult> PauseWithResultAsync(Windows::Media::Devices::MediaCapturePauseBehavior behavior) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::MediaCaptureStopResult> StopWithResultAsync() const;
};

template <typename D>
struct WINRT_EBO impl_ILowLagPhotoCapture
{
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::CapturedPhoto> CaptureAsync() const;
    Windows::Foundation::IAsyncAction FinishAsync() const;
};

template <typename D>
struct WINRT_EBO impl_ILowLagPhotoSequenceCapture
{
    Windows::Foundation::IAsyncAction StartAsync() const;
    Windows::Foundation::IAsyncAction StopAsync() const;
    Windows::Foundation::IAsyncAction FinishAsync() const;
    event_token PhotoCaptured(const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::LowLagPhotoSequenceCapture, Windows::Media::Capture::PhotoCapturedEventArgs> & handler) const;
    using PhotoCaptured_revoker = event_revoker<ILowLagPhotoSequenceCapture>;
    PhotoCaptured_revoker PhotoCaptured(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::LowLagPhotoSequenceCapture, Windows::Media::Capture::PhotoCapturedEventArgs> & handler) const;
    void PhotoCaptured(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCapture
{
    Windows::Foundation::IAsyncAction InitializeAsync() const;
    Windows::Foundation::IAsyncAction InitializeAsync(const Windows::Media::Capture::MediaCaptureInitializationSettings & mediaCaptureInitializationSettings) const;
    Windows::Foundation::IAsyncAction StartRecordToStorageFileAsync(const Windows::Media::MediaProperties::MediaEncodingProfile & encodingProfile, const Windows::Storage::IStorageFile & file) const;
    Windows::Foundation::IAsyncAction StartRecordToStreamAsync(const Windows::Media::MediaProperties::MediaEncodingProfile & encodingProfile, const Windows::Storage::Streams::IRandomAccessStream & stream) const;
    Windows::Foundation::IAsyncAction StartRecordToCustomSinkAsync(const Windows::Media::MediaProperties::MediaEncodingProfile & encodingProfile, const Windows::Media::IMediaExtension & customMediaSink) const;
    Windows::Foundation::IAsyncAction StartRecordToCustomSinkAsync(const Windows::Media::MediaProperties::MediaEncodingProfile & encodingProfile, hstring_ref customSinkActivationId, const Windows::Foundation::Collections::IPropertySet & customSinkSettings) const;
    Windows::Foundation::IAsyncAction StopRecordAsync() const;
    Windows::Foundation::IAsyncAction CapturePhotoToStorageFileAsync(const Windows::Media::MediaProperties::ImageEncodingProperties & type, const Windows::Storage::IStorageFile & file) const;
    Windows::Foundation::IAsyncAction CapturePhotoToStreamAsync(const Windows::Media::MediaProperties::ImageEncodingProperties & type, const Windows::Storage::Streams::IRandomAccessStream & stream) const;
    Windows::Foundation::IAsyncAction AddEffectAsync(Windows::Media::Capture::MediaStreamType mediaStreamType, hstring_ref effectActivationID, const Windows::Foundation::Collections::IPropertySet & effectSettings) const;
    Windows::Foundation::IAsyncAction ClearEffectsAsync(Windows::Media::Capture::MediaStreamType mediaStreamType) const;
    void SetEncoderProperty(Windows::Media::Capture::MediaStreamType mediaStreamType, GUID propertyId, const Windows::IInspectable & propertyValue) const;
    Windows::IInspectable GetEncoderProperty(Windows::Media::Capture::MediaStreamType mediaStreamType, GUID propertyId) const;
    event_token Failed(const Windows::Media::Capture::MediaCaptureFailedEventHandler & errorEventHandler) const;
    using Failed_revoker = event_revoker<IMediaCapture>;
    Failed_revoker Failed(auto_revoke_t, const Windows::Media::Capture::MediaCaptureFailedEventHandler & errorEventHandler) const;
    void Failed(event_token eventCookie) const;
    event_token RecordLimitationExceeded(const Windows::Media::Capture::RecordLimitationExceededEventHandler & recordLimitationExceededEventHandler) const;
    using RecordLimitationExceeded_revoker = event_revoker<IMediaCapture>;
    RecordLimitationExceeded_revoker RecordLimitationExceeded(auto_revoke_t, const Windows::Media::Capture::RecordLimitationExceededEventHandler & recordLimitationExceededEventHandler) const;
    void RecordLimitationExceeded(event_token eventCookie) const;
    Windows::Media::Capture::MediaCaptureSettings MediaCaptureSettings() const;
    Windows::Media::Devices::AudioDeviceController AudioDeviceController() const;
    Windows::Media::Devices::VideoDeviceController VideoDeviceController() const;
    void SetPreviewMirroring(bool value) const;
    bool GetPreviewMirroring() const;
    void SetPreviewRotation(Windows::Media::Capture::VideoRotation value) const;
    Windows::Media::Capture::VideoRotation GetPreviewRotation() const;
    void SetRecordRotation(Windows::Media::Capture::VideoRotation value) const;
    Windows::Media::Capture::VideoRotation GetRecordRotation() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCapture2
{
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::LowLagMediaRecording> PrepareLowLagRecordToStorageFileAsync(const Windows::Media::MediaProperties::MediaEncodingProfile & encodingProfile, const Windows::Storage::IStorageFile & file) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::LowLagMediaRecording> PrepareLowLagRecordToStreamAsync(const Windows::Media::MediaProperties::MediaEncodingProfile & encodingProfile, const Windows::Storage::Streams::IRandomAccessStream & stream) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::LowLagMediaRecording> PrepareLowLagRecordToCustomSinkAsync(const Windows::Media::MediaProperties::MediaEncodingProfile & encodingProfile, const Windows::Media::IMediaExtension & customMediaSink) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::LowLagMediaRecording> PrepareLowLagRecordToCustomSinkAsync(const Windows::Media::MediaProperties::MediaEncodingProfile & encodingProfile, hstring_ref customSinkActivationId, const Windows::Foundation::Collections::IPropertySet & customSinkSettings) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::LowLagPhotoCapture> PrepareLowLagPhotoCaptureAsync(const Windows::Media::MediaProperties::ImageEncodingProperties & type) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::LowLagPhotoSequenceCapture> PrepareLowLagPhotoSequenceCaptureAsync(const Windows::Media::MediaProperties::ImageEncodingProperties & type) const;
    Windows::Foundation::IAsyncAction SetEncodingPropertiesAsync(Windows::Media::Capture::MediaStreamType mediaStreamType, const Windows::Media::MediaProperties::IMediaEncodingProperties & mediaEncodingProperties, const Windows::Media::MediaProperties::MediaPropertySet & encoderProperties) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCapture3
{
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::Core::VariablePhotoSequenceCapture> PrepareVariablePhotoSequenceCaptureAsync(const Windows::Media::MediaProperties::ImageEncodingProperties & type) const;
    event_token FocusChanged(const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::Media::Capture::MediaCaptureFocusChangedEventArgs> & handler) const;
    using FocusChanged_revoker = event_revoker<IMediaCapture3>;
    FocusChanged_revoker FocusChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::Media::Capture::MediaCaptureFocusChangedEventArgs> & handler) const;
    void FocusChanged(event_token token) const;
    event_token PhotoConfirmationCaptured(const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::Media::Capture::PhotoConfirmationCapturedEventArgs> & handler) const;
    using PhotoConfirmationCaptured_revoker = event_revoker<IMediaCapture3>;
    PhotoConfirmationCaptured_revoker PhotoConfirmationCaptured(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::Media::Capture::PhotoConfirmationCapturedEventArgs> & handler) const;
    void PhotoConfirmationCaptured(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCapture4
{
    Windows::Foundation::IAsyncOperation<Windows::Media::IMediaExtension> AddAudioEffectAsync(const Windows::Media::Effects::IAudioEffectDefinition & definition) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::IMediaExtension> AddVideoEffectAsync(const Windows::Media::Effects::IVideoEffectDefinition & definition, Windows::Media::Capture::MediaStreamType mediaStreamType) const;
    Windows::Foundation::IAsyncAction PauseRecordAsync(Windows::Media::Devices::MediaCapturePauseBehavior behavior) const;
    Windows::Foundation::IAsyncAction ResumeRecordAsync() const;
    event_token CameraStreamStateChanged(const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::IInspectable> & handler) const;
    using CameraStreamStateChanged_revoker = event_revoker<IMediaCapture4>;
    CameraStreamStateChanged_revoker CameraStreamStateChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::IInspectable> & handler) const;
    void CameraStreamStateChanged(event_token token) const;
    Windows::Media::Devices::CameraStreamState CameraStreamState() const;
    Windows::Foundation::IAsyncOperation<Windows::Media::VideoFrame> GetPreviewFrameAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Media::VideoFrame> GetPreviewFrameAsync(const Windows::Media::VideoFrame & destination) const;
    event_token ThermalStatusChanged(const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::IInspectable> & handler) const;
    using ThermalStatusChanged_revoker = event_revoker<IMediaCapture4>;
    ThermalStatusChanged_revoker ThermalStatusChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::MediaCapture, Windows::IInspectable> & handler) const;
    void ThermalStatusChanged(event_token token) const;
    Windows::Media::Capture::MediaCaptureThermalStatus ThermalStatus() const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::AdvancedPhotoCapture> PrepareAdvancedPhotoCaptureAsync(const Windows::Media::MediaProperties::ImageEncodingProperties & encodingProperties) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCapture5
{
    Windows::Foundation::IAsyncAction RemoveEffectAsync(const Windows::Media::IMediaExtension & effect) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::MediaCapturePauseResult> PauseRecordWithResultAsync(Windows::Media::Devices::MediaCapturePauseBehavior behavior) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::MediaCaptureStopResult> StopRecordWithResultAsync() const;
    Windows::Foundation::Collections::IMapView<hstring, Windows::Media::Capture::Frames::MediaFrameSource> FrameSources() const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::Frames::MediaFrameReader> CreateFrameReaderAsync(const Windows::Media::Capture::Frames::MediaFrameSource & inputSource) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::Frames::MediaFrameReader> CreateFrameReaderAsync(const Windows::Media::Capture::Frames::MediaFrameSource & inputSource, hstring_ref outputSubtype) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Capture::Frames::MediaFrameReader> CreateFrameReaderAsync(const Windows::Media::Capture::Frames::MediaFrameSource & inputSource, hstring_ref outputSubtype, const Windows::Graphics::Imaging::BitmapSize & outputSize) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureFailedEventArgs
{
    hstring Message() const;
    uint32_t Code() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureFocusChangedEventArgs
{
    Windows::Media::Devices::MediaCaptureFocusState FocusState() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureInitializationSettings
{
    void AudioDeviceId(hstring_ref value) const;
    hstring AudioDeviceId() const;
    void VideoDeviceId(hstring_ref value) const;
    hstring VideoDeviceId() const;
    void StreamingCaptureMode(Windows::Media::Capture::StreamingCaptureMode value) const;
    Windows::Media::Capture::StreamingCaptureMode StreamingCaptureMode() const;
    void PhotoCaptureSource(Windows::Media::Capture::PhotoCaptureSource value) const;
    Windows::Media::Capture::PhotoCaptureSource PhotoCaptureSource() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureInitializationSettings2
{
    void MediaCategory(Windows::Media::Capture::MediaCategory value) const;
    Windows::Media::Capture::MediaCategory MediaCategory() const;
    void AudioProcessing(Windows::Media::AudioProcessing value) const;
    Windows::Media::AudioProcessing AudioProcessing() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureInitializationSettings3
{
    void AudioSource(const Windows::Media::Core::IMediaSource & value) const;
    Windows::Media::Core::IMediaSource AudioSource() const;
    void VideoSource(const Windows::Media::Core::IMediaSource & value) const;
    Windows::Media::Core::IMediaSource VideoSource() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureInitializationSettings4
{
    Windows::Media::Capture::MediaCaptureVideoProfile VideoProfile() const;
    void VideoProfile(const Windows::Media::Capture::MediaCaptureVideoProfile & value) const;
    Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription PreviewMediaDescription() const;
    void PreviewMediaDescription(const Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription & value) const;
    Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription RecordMediaDescription() const;
    void RecordMediaDescription(const Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription & value) const;
    Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription PhotoMediaDescription() const;
    void PhotoMediaDescription(const Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription & value) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureInitializationSettings5
{
    Windows::Media::Capture::Frames::MediaFrameSourceGroup SourceGroup() const;
    void SourceGroup(const Windows::Media::Capture::Frames::MediaFrameSourceGroup & value) const;
    Windows::Media::Capture::MediaCaptureSharingMode SharingMode() const;
    void SharingMode(Windows::Media::Capture::MediaCaptureSharingMode value) const;
    Windows::Media::Capture::MediaCaptureMemoryPreference MemoryPreference() const;
    void MemoryPreference(Windows::Media::Capture::MediaCaptureMemoryPreference value) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCapturePauseResult
{
    Windows::Media::VideoFrame LastFrame() const;
    Windows::Foundation::TimeSpan RecordDuration() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureSettings
{
    hstring AudioDeviceId() const;
    hstring VideoDeviceId() const;
    Windows::Media::Capture::StreamingCaptureMode StreamingCaptureMode() const;
    Windows::Media::Capture::PhotoCaptureSource PhotoCaptureSource() const;
    Windows::Media::Capture::VideoDeviceCharacteristic VideoDeviceCharacteristic() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureSettings2
{
    bool ConcurrentRecordAndPhotoSupported() const;
    bool ConcurrentRecordAndPhotoSequenceSupported() const;
    bool CameraSoundRequiredForRegion() const;
    Windows::Foundation::IReference<uint32_t> Horizontal35mmEquivalentFocalLength() const;
    Windows::Foundation::IReference<int32_t> PitchOffsetDegrees() const;
    Windows::Foundation::IReference<uint32_t> Vertical35mmEquivalentFocalLength() const;
    Windows::Media::Capture::MediaCategory MediaCategory() const;
    Windows::Media::AudioProcessing AudioProcessing() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureStatics
{
    bool IsVideoProfileSupported(hstring_ref videoDeviceId) const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Capture::MediaCaptureVideoProfile> FindAllVideoProfiles(hstring_ref videoDeviceId) const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Capture::MediaCaptureVideoProfile> FindConcurrentProfiles(hstring_ref videoDeviceId) const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Capture::MediaCaptureVideoProfile> FindKnownVideoProfiles(hstring_ref videoDeviceId, Windows::Media::Capture::KnownVideoProfile name) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureStopResult
{
    Windows::Media::VideoFrame LastFrame() const;
    Windows::Foundation::TimeSpan RecordDuration() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureVideoPreview
{
    Windows::Foundation::IAsyncAction StartPreviewAsync() const;
    Windows::Foundation::IAsyncAction StartPreviewToCustomSinkAsync(const Windows::Media::MediaProperties::MediaEncodingProfile & encodingProfile, const Windows::Media::IMediaExtension & customMediaSink) const;
    Windows::Foundation::IAsyncAction StartPreviewToCustomSinkAsync(const Windows::Media::MediaProperties::MediaEncodingProfile & encodingProfile, hstring_ref customSinkActivationId, const Windows::Foundation::Collections::IPropertySet & customSinkSettings) const;
    Windows::Foundation::IAsyncAction StopPreviewAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureVideoProfile
{
    hstring Id() const;
    hstring VideoDeviceId() const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription> SupportedPreviewMediaDescription() const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription> SupportedRecordMediaDescription() const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Capture::MediaCaptureVideoProfileMediaDescription> SupportedPhotoMediaDescription() const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Capture::MediaCaptureVideoProfile> GetConcurrency() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCaptureVideoProfileMediaDescription
{
    uint32_t Width() const;
    uint32_t Height() const;
    double FrameRate() const;
    bool IsVariablePhotoSequenceSupported() const;
    bool IsHdrVideoSupported() const;
};

template <typename D>
struct WINRT_EBO impl_IOptionalReferencePhotoCapturedEventArgs
{
    Windows::Media::Capture::CapturedFrame Frame() const;
    Windows::IInspectable Context() const;
};

template <typename D>
struct WINRT_EBO impl_IPhotoCapturedEventArgs
{
    Windows::Media::Capture::CapturedFrame Frame() const;
    Windows::Media::Capture::CapturedFrame Thumbnail() const;
    Windows::Foundation::TimeSpan CaptureTimeOffset() const;
};

template <typename D>
struct WINRT_EBO impl_IPhotoConfirmationCapturedEventArgs
{
    Windows::Media::Capture::CapturedFrame Frame() const;
    Windows::Foundation::TimeSpan CaptureTimeOffset() const;
};

template <typename D>
struct WINRT_EBO impl_IScreenCapture
{
    Windows::Media::Core::IMediaSource AudioSource() const;
    Windows::Media::Core::IMediaSource VideoSource() const;
    bool IsAudioSuspended() const;
    bool IsVideoSuspended() const;
    event_token SourceSuspensionChanged(const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::ScreenCapture, Windows::Media::Capture::SourceSuspensionChangedEventArgs> & handler) const;
    using SourceSuspensionChanged_revoker = event_revoker<IScreenCapture>;
    SourceSuspensionChanged_revoker SourceSuspensionChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Capture::ScreenCapture, Windows::Media::Capture::SourceSuspensionChangedEventArgs> & handler) const;
    void SourceSuspensionChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IScreenCaptureStatics
{
    Windows::Media::Capture::ScreenCapture GetForCurrentView() const;
};

template <typename D>
struct WINRT_EBO impl_ISourceSuspensionChangedEventArgs
{
    bool IsAudioSuspended() const;
    bool IsVideoSuspended() const;
};

template <typename D>
struct WINRT_EBO impl_IVideoStreamConfiguration
{
    Windows::Media::MediaProperties::VideoEncodingProperties InputProperties() const;
    Windows::Media::MediaProperties::VideoEncodingProperties OutputProperties() const;
};

struct MediaCaptureFailedEventHandler : Windows::IUnknown
{
    MediaCaptureFailedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<MediaCaptureFailedEventHandler>(m_ptr); }
    template <typename L> MediaCaptureFailedEventHandler(L lambda);
    template <typename F> MediaCaptureFailedEventHandler (F * function);
    template <typename O, typename M> MediaCaptureFailedEventHandler(O * object, M method);
    void operator()(const Windows::Media::Capture::MediaCapture & sender, const Windows::Media::Capture::MediaCaptureFailedEventArgs & errorEventArgs) const;
};

struct RecordLimitationExceededEventHandler : Windows::IUnknown
{
    RecordLimitationExceededEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<RecordLimitationExceededEventHandler>(m_ptr); }
    template <typename L> RecordLimitationExceededEventHandler(L lambda);
    template <typename F> RecordLimitationExceededEventHandler (F * function);
    template <typename O, typename M> RecordLimitationExceededEventHandler(O * object, M method);
    void operator()(const Windows::Media::Capture::MediaCapture & sender) const;
};

struct IAdvancedCapturedPhoto :
    Windows::IInspectable,
    impl::consume<IAdvancedCapturedPhoto>
{
    IAdvancedCapturedPhoto(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAdvancedCapturedPhoto>(m_ptr); }
};

struct IAdvancedCapturedPhoto2 :
    Windows::IInspectable,
    impl::consume<IAdvancedCapturedPhoto2>
{
    IAdvancedCapturedPhoto2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAdvancedCapturedPhoto2>(m_ptr); }
};

struct IAdvancedPhotoCapture :
    Windows::IInspectable,
    impl::consume<IAdvancedPhotoCapture>
{
    IAdvancedPhotoCapture(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAdvancedPhotoCapture>(m_ptr); }
};

struct IAppCapture :
    Windows::IInspectable,
    impl::consume<IAppCapture>
{
    IAppCapture(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppCapture>(m_ptr); }
};

struct IAppCaptureAlternateShortcutKeys :
    Windows::IInspectable,
    impl::consume<IAppCaptureAlternateShortcutKeys>
{
    IAppCaptureAlternateShortcutKeys(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppCaptureAlternateShortcutKeys>(m_ptr); }
};

struct IAppCaptureAlternateShortcutKeys2 :
    Windows::IInspectable,
    impl::consume<IAppCaptureAlternateShortcutKeys2>
{
    IAppCaptureAlternateShortcutKeys2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppCaptureAlternateShortcutKeys2>(m_ptr); }
};

struct IAppCaptureAlternateShortcutKeys3 :
    Windows::IInspectable,
    impl::consume<IAppCaptureAlternateShortcutKeys3>
{
    IAppCaptureAlternateShortcutKeys3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppCaptureAlternateShortcutKeys3>(m_ptr); }
};

struct IAppCaptureManagerStatics :
    Windows::IInspectable,
    impl::consume<IAppCaptureManagerStatics>
{
    IAppCaptureManagerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppCaptureManagerStatics>(m_ptr); }
};

struct IAppCaptureSettings :
    Windows::IInspectable,
    impl::consume<IAppCaptureSettings>
{
    IAppCaptureSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppCaptureSettings>(m_ptr); }
};

struct IAppCaptureSettings2 :
    Windows::IInspectable,
    impl::consume<IAppCaptureSettings2>
{
    IAppCaptureSettings2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppCaptureSettings2>(m_ptr); }
};

struct IAppCaptureSettings3 :
    Windows::IInspectable,
    impl::consume<IAppCaptureSettings3>
{
    IAppCaptureSettings3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppCaptureSettings3>(m_ptr); }
};

struct IAppCaptureSettings4 :
    Windows::IInspectable,
    impl::consume<IAppCaptureSettings4>
{
    IAppCaptureSettings4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppCaptureSettings4>(m_ptr); }
};

struct IAppCaptureStatics :
    Windows::IInspectable,
    impl::consume<IAppCaptureStatics>
{
    IAppCaptureStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppCaptureStatics>(m_ptr); }
};

struct ICameraCaptureUI :
    Windows::IInspectable,
    impl::consume<ICameraCaptureUI>
{
    ICameraCaptureUI(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICameraCaptureUI>(m_ptr); }
};

struct ICameraCaptureUIPhotoCaptureSettings :
    Windows::IInspectable,
    impl::consume<ICameraCaptureUIPhotoCaptureSettings>
{
    ICameraCaptureUIPhotoCaptureSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICameraCaptureUIPhotoCaptureSettings>(m_ptr); }
};

struct ICameraCaptureUIVideoCaptureSettings :
    Windows::IInspectable,
    impl::consume<ICameraCaptureUIVideoCaptureSettings>
{
    ICameraCaptureUIVideoCaptureSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICameraCaptureUIVideoCaptureSettings>(m_ptr); }
};

struct ICameraOptionsUIStatics :
    Windows::IInspectable,
    impl::consume<ICameraOptionsUIStatics>
{
    ICameraOptionsUIStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICameraOptionsUIStatics>(m_ptr); }
};

struct ICapturedFrame :
    Windows::IInspectable,
    impl::consume<ICapturedFrame>,
    impl::require<ICapturedFrame, Windows::Foundation::IClosable, Windows::Storage::Streams::IContentTypeProvider, Windows::Storage::Streams::IInputStream, Windows::Storage::Streams::IOutputStream, Windows::Storage::Streams::IRandomAccessStream, Windows::Storage::Streams::IRandomAccessStreamWithContentType>
{
    ICapturedFrame(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICapturedFrame>(m_ptr); }
};

struct ICapturedFrameControlValues :
    Windows::IInspectable,
    impl::consume<ICapturedFrameControlValues>
{
    ICapturedFrameControlValues(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICapturedFrameControlValues>(m_ptr); }
};

struct ICapturedFrameControlValues2 :
    Windows::IInspectable,
    impl::consume<ICapturedFrameControlValues2>
{
    ICapturedFrameControlValues2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICapturedFrameControlValues2>(m_ptr); }
};

struct ICapturedFrameWithSoftwareBitmap :
    Windows::IInspectable,
    impl::consume<ICapturedFrameWithSoftwareBitmap>
{
    ICapturedFrameWithSoftwareBitmap(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICapturedFrameWithSoftwareBitmap>(m_ptr); }
};

struct ICapturedPhoto :
    Windows::IInspectable,
    impl::consume<ICapturedPhoto>
{
    ICapturedPhoto(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICapturedPhoto>(m_ptr); }
};

struct ILowLagMediaRecording :
    Windows::IInspectable,
    impl::consume<ILowLagMediaRecording>
{
    ILowLagMediaRecording(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILowLagMediaRecording>(m_ptr); }
};

struct ILowLagMediaRecording2 :
    Windows::IInspectable,
    impl::consume<ILowLagMediaRecording2>
{
    ILowLagMediaRecording2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILowLagMediaRecording2>(m_ptr); }
};

struct ILowLagMediaRecording3 :
    Windows::IInspectable,
    impl::consume<ILowLagMediaRecording3>
{
    ILowLagMediaRecording3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILowLagMediaRecording3>(m_ptr); }
};

struct ILowLagPhotoCapture :
    Windows::IInspectable,
    impl::consume<ILowLagPhotoCapture>
{
    ILowLagPhotoCapture(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILowLagPhotoCapture>(m_ptr); }
};

struct ILowLagPhotoSequenceCapture :
    Windows::IInspectable,
    impl::consume<ILowLagPhotoSequenceCapture>
{
    ILowLagPhotoSequenceCapture(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILowLagPhotoSequenceCapture>(m_ptr); }
};

struct IMediaCapture :
    Windows::IInspectable,
    impl::consume<IMediaCapture>
{
    IMediaCapture(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCapture>(m_ptr); }
};

struct IMediaCapture2 :
    Windows::IInspectable,
    impl::consume<IMediaCapture2>
{
    IMediaCapture2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCapture2>(m_ptr); }
};

struct IMediaCapture3 :
    Windows::IInspectable,
    impl::consume<IMediaCapture3>
{
    IMediaCapture3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCapture3>(m_ptr); }
};

struct IMediaCapture4 :
    Windows::IInspectable,
    impl::consume<IMediaCapture4>
{
    IMediaCapture4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCapture4>(m_ptr); }
};

struct IMediaCapture5 :
    Windows::IInspectable,
    impl::consume<IMediaCapture5>
{
    IMediaCapture5(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCapture5>(m_ptr); }
};

struct IMediaCaptureFailedEventArgs :
    Windows::IInspectable,
    impl::consume<IMediaCaptureFailedEventArgs>
{
    IMediaCaptureFailedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureFailedEventArgs>(m_ptr); }
};

struct IMediaCaptureFocusChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IMediaCaptureFocusChangedEventArgs>
{
    IMediaCaptureFocusChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureFocusChangedEventArgs>(m_ptr); }
};

struct IMediaCaptureInitializationSettings :
    Windows::IInspectable,
    impl::consume<IMediaCaptureInitializationSettings>
{
    IMediaCaptureInitializationSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureInitializationSettings>(m_ptr); }
};

struct IMediaCaptureInitializationSettings2 :
    Windows::IInspectable,
    impl::consume<IMediaCaptureInitializationSettings2>
{
    IMediaCaptureInitializationSettings2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureInitializationSettings2>(m_ptr); }
};

struct IMediaCaptureInitializationSettings3 :
    Windows::IInspectable,
    impl::consume<IMediaCaptureInitializationSettings3>
{
    IMediaCaptureInitializationSettings3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureInitializationSettings3>(m_ptr); }
};

struct IMediaCaptureInitializationSettings4 :
    Windows::IInspectable,
    impl::consume<IMediaCaptureInitializationSettings4>
{
    IMediaCaptureInitializationSettings4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureInitializationSettings4>(m_ptr); }
};

struct IMediaCaptureInitializationSettings5 :
    Windows::IInspectable,
    impl::consume<IMediaCaptureInitializationSettings5>
{
    IMediaCaptureInitializationSettings5(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureInitializationSettings5>(m_ptr); }
};

struct IMediaCapturePauseResult :
    Windows::IInspectable,
    impl::consume<IMediaCapturePauseResult>
{
    IMediaCapturePauseResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCapturePauseResult>(m_ptr); }
};

struct IMediaCaptureSettings :
    Windows::IInspectable,
    impl::consume<IMediaCaptureSettings>
{
    IMediaCaptureSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureSettings>(m_ptr); }
};

struct IMediaCaptureSettings2 :
    Windows::IInspectable,
    impl::consume<IMediaCaptureSettings2>
{
    IMediaCaptureSettings2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureSettings2>(m_ptr); }
};

struct IMediaCaptureStatics :
    Windows::IInspectable,
    impl::consume<IMediaCaptureStatics>
{
    IMediaCaptureStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureStatics>(m_ptr); }
};

struct IMediaCaptureStopResult :
    Windows::IInspectable,
    impl::consume<IMediaCaptureStopResult>
{
    IMediaCaptureStopResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureStopResult>(m_ptr); }
};

struct IMediaCaptureVideoPreview :
    Windows::IInspectable,
    impl::consume<IMediaCaptureVideoPreview>
{
    IMediaCaptureVideoPreview(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureVideoPreview>(m_ptr); }
};

struct IMediaCaptureVideoProfile :
    Windows::IInspectable,
    impl::consume<IMediaCaptureVideoProfile>
{
    IMediaCaptureVideoProfile(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureVideoProfile>(m_ptr); }
};

struct IMediaCaptureVideoProfileMediaDescription :
    Windows::IInspectable,
    impl::consume<IMediaCaptureVideoProfileMediaDescription>
{
    IMediaCaptureVideoProfileMediaDescription(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCaptureVideoProfileMediaDescription>(m_ptr); }
};

struct IOptionalReferencePhotoCapturedEventArgs :
    Windows::IInspectable,
    impl::consume<IOptionalReferencePhotoCapturedEventArgs>
{
    IOptionalReferencePhotoCapturedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOptionalReferencePhotoCapturedEventArgs>(m_ptr); }
};

struct IPhotoCapturedEventArgs :
    Windows::IInspectable,
    impl::consume<IPhotoCapturedEventArgs>
{
    IPhotoCapturedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPhotoCapturedEventArgs>(m_ptr); }
};

struct IPhotoConfirmationCapturedEventArgs :
    Windows::IInspectable,
    impl::consume<IPhotoConfirmationCapturedEventArgs>
{
    IPhotoConfirmationCapturedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPhotoConfirmationCapturedEventArgs>(m_ptr); }
};

struct IScreenCapture :
    Windows::IInspectable,
    impl::consume<IScreenCapture>
{
    IScreenCapture(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScreenCapture>(m_ptr); }
};

struct IScreenCaptureStatics :
    Windows::IInspectable,
    impl::consume<IScreenCaptureStatics>
{
    IScreenCaptureStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScreenCaptureStatics>(m_ptr); }
};

struct ISourceSuspensionChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ISourceSuspensionChangedEventArgs>
{
    ISourceSuspensionChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISourceSuspensionChangedEventArgs>(m_ptr); }
};

struct IVideoStreamConfiguration :
    Windows::IInspectable,
    impl::consume<IVideoStreamConfiguration>
{
    IVideoStreamConfiguration(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoStreamConfiguration>(m_ptr); }
};

}

}


<|start_filename|>Desktop/RadialDevice/RadialDevice.cpp<|end_filename|>
// RadialDevice.cpp : Defines the exported functions for the DLL application.
//

#include "stdafx.h"
#include "RadialDevice.h"
#include "DeviceListener.h"
#include "../Megayuchi_UTIL/RefCheck.h"
#include "../Megayuchi_UTIL/debug_new.h"



CRadialDevice::CRadialDevice()
{
#ifdef _DEBUG
	int	flag = _CRTDBG_ALLOC_MEM_DF |_CRTDBG_LEAK_CHECK_DF;
	_CrtSetDbgFlag(flag);	
#endif
}


STDMETHODIMP CRadialDevice::QueryInterface(REFIID refiid, void** ppv)
{
	return E_NOINTERFACE;
}
STDMETHODIMP_(ULONG) CRadialDevice::AddRef(void)
{
	m_ulRefCount++;
	return m_ulRefCount;
}
STDMETHODIMP_(ULONG) CRadialDevice::Release(void)
{
	DWORD	ref_count = --m_ulRefCount;
	if (!m_ulRefCount)
		delete this;

	return ref_count;
}

BOOL __stdcall CRadialDevice::Initialize(HWND hWnd,
	RADIAL_DEVICE_CALLBACK_FOCUS pCallbackFocus, 
		RADIAL_DEVICE_CALLBACK_LOST_FOCUS pCallbackLostFocus, 
		RADIAL_DEVICE_CALLBACK_ROT pCallbackRot, 
		RADIAL_DEVICE_CALLBACK_BUTTON_CLICKED pCallbackButtonClicked)
{
	m_pDeviceListener = new DeviceListener();
	m_pDeviceListener->Init(this,hWnd);

	m_pCallbackFoucus = pCallbackFocus;
	m_pCallbackLostFocus = pCallbackLostFocus;
	m_pCallbackRot = pCallbackRot;
	m_pCallbackButtonClicked = pCallbackButtonClicked;

	m_pMenuCallbackTable = new MENU_CALLBACK_ITEM[MAX_MENU_COUNT];

	return TRUE;
}
BOOL __stdcall CRadialDevice::AddMenuItem(const WCHAR* wchIconFileName, const WCHAR* wchMenuName,int MenuItemID)
{
	BOOL	bResult = FALSE;
	
	if (m_dwCurMenuCount >= MAX_MENU_COUNT)
		return FALSE;

	ComPtr<IRadialControllerMenuItem>	menuItem;

	MENU_CALLBACK_ITEM*	pCurItem = m_pMenuCallbackTable + m_dwCurMenuCount;
	if (S_OK == m_pDeviceListener->AddMenuItem(&menuItem, wchIconFileName, wchMenuName,&pCurItem->token))
	{
		pCurItem->menuItem = menuItem;
		pCurItem->ID = MenuItemID;
		m_dwCurMenuCount++;
		bResult = TRUE;
	}
	
	return bResult;
}
MENU_CALLBACK_ITEM* CRadialDevice::FindCallbackItem(ComPtr<IRadialControllerMenuItem> menuItem) const
{
	MENU_CALLBACK_ITEM*	pSelectedItem = nullptr;
	for (DWORD i = 0; i < m_dwCurMenuCount; i++)
	{
		if (m_pMenuCallbackTable[i].menuItem.Get() == menuItem.Get())
		{
			pSelectedItem = m_pMenuCallbackTable + i;
			break;
		}
	}
	return pSelectedItem;
}

void CRadialDevice::OnItemInvoked(ComPtr<IRadialControllerMenuItem> menuItem)
{
	MENU_CALLBACK_ITEM*	pSelectedItem = FindCallbackItem(menuItem);

#ifdef _DEBUG
	if (!pSelectedItem)
		__debugbreak();
#endif

	if (m_pCurSelectedItem)
	{
		if (m_pCurSelectedItem != pSelectedItem)
		{
			m_pCallbackLostFocus(this, m_pCurSelectedItem->ID);
		}
	}
	m_pCallbackFoucus(this, pSelectedItem->ID);
	m_pCurSelectedItem = pSelectedItem;
}
void CRadialDevice::OnRotationChanged(ComPtr<IRadialControllerMenuItem> menuItem, double delta)
{
	if (!m_pCurSelectedItem)
		return;

#ifdef _DEBUG
	MENU_CALLBACK_ITEM*	pSelectedItem = FindCallbackItem(menuItem);
	if (m_pCurSelectedItem != pSelectedItem)
		__debugbreak();
#endif

	m_pCallbackRot(this,m_pCurSelectedItem->ID,delta);
}
void CRadialDevice::OnButtonClicked(ComPtr<IRadialControllerMenuItem> menuItem)
{
	if (!m_pCurSelectedItem)
		return;

#ifdef _DEBUG
	MENU_CALLBACK_ITEM*	pSelectedItem = FindCallbackItem(menuItem);
	if (m_pCurSelectedItem != pSelectedItem)
		__debugbreak();
#endif

	m_pCallbackButtonClicked(this,m_pCurSelectedItem->ID);

}
CRadialDevice::~CRadialDevice()
{
	if (m_pMenuCallbackTable)
	{
		delete[] m_pMenuCallbackTable;
		m_pMenuCallbackTable = nullptr;
	}
	if (m_pDeviceListener)
	{
		delete m_pDeviceListener;
		m_pDeviceListener = nullptr;
	}
#ifdef _DEBUG
	_ASSERT(_CrtCheckMemory());
#endif
}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Web.Syndication.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Web.Syndication.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Web::Syndication {

struct WINRT_EBO SyndicationAttribute :
    Windows::Web::Syndication::ISyndicationAttribute
{
    SyndicationAttribute(std::nullptr_t) noexcept {}
    SyndicationAttribute();
    SyndicationAttribute(hstring_ref attributeName, hstring_ref attributeNamespace, hstring_ref attributeValue);
};

struct WINRT_EBO SyndicationCategory :
    Windows::Web::Syndication::ISyndicationCategory
{
    SyndicationCategory(std::nullptr_t) noexcept {}
    SyndicationCategory();
    SyndicationCategory(hstring_ref term);
    SyndicationCategory(hstring_ref term, hstring_ref scheme, hstring_ref label);
};

struct WINRT_EBO SyndicationClient :
    Windows::Web::Syndication::ISyndicationClient
{
    SyndicationClient(std::nullptr_t) noexcept {}
    SyndicationClient();
    SyndicationClient(const Windows::Security::Credentials::PasswordCredential & serverCredential);
};

struct WINRT_EBO SyndicationContent :
    Windows::Web::Syndication::ISyndicationContent
{
    SyndicationContent(std::nullptr_t) noexcept {}
    SyndicationContent();
    SyndicationContent(hstring_ref text, Windows::Web::Syndication::SyndicationTextType type);
    SyndicationContent(const Windows::Foundation::Uri & sourceUri);
};

struct SyndicationError
{
    SyndicationError() = delete;
    static Windows::Web::Syndication::SyndicationErrorStatus GetStatus(int32_t hresult);
};

struct WINRT_EBO SyndicationFeed :
    Windows::Web::Syndication::ISyndicationFeed
{
    SyndicationFeed(std::nullptr_t) noexcept {}
    SyndicationFeed();
    SyndicationFeed(hstring_ref title, hstring_ref subtitle, const Windows::Foundation::Uri & uri);
};

struct WINRT_EBO SyndicationGenerator :
    Windows::Web::Syndication::ISyndicationGenerator,
    impl::require<SyndicationGenerator, Windows::Web::Syndication::ISyndicationNode>
{
    SyndicationGenerator(std::nullptr_t) noexcept {}
    SyndicationGenerator();
    SyndicationGenerator(hstring_ref text);
};

struct WINRT_EBO SyndicationItem :
    Windows::Web::Syndication::ISyndicationItem
{
    SyndicationItem(std::nullptr_t) noexcept {}
    SyndicationItem();
    SyndicationItem(hstring_ref title, const Windows::Web::Syndication::SyndicationContent & content, const Windows::Foundation::Uri & uri);
};

struct WINRT_EBO SyndicationLink :
    Windows::Web::Syndication::ISyndicationLink
{
    SyndicationLink(std::nullptr_t) noexcept {}
    SyndicationLink();
    SyndicationLink(const Windows::Foundation::Uri & uri);
    SyndicationLink(const Windows::Foundation::Uri & uri, hstring_ref relationship, hstring_ref title, hstring_ref mediaType, uint32_t length);
};

struct WINRT_EBO SyndicationNode :
    Windows::Web::Syndication::ISyndicationNode
{
    SyndicationNode(std::nullptr_t) noexcept {}
    SyndicationNode();
    SyndicationNode(hstring_ref nodeName, hstring_ref nodeNamespace, hstring_ref nodeValue);
};

struct WINRT_EBO SyndicationPerson :
    Windows::Web::Syndication::ISyndicationPerson
{
    SyndicationPerson(std::nullptr_t) noexcept {}
    SyndicationPerson();
    SyndicationPerson(hstring_ref name);
    SyndicationPerson(hstring_ref name, hstring_ref email, const Windows::Foundation::Uri & uri);
};

struct WINRT_EBO SyndicationText :
    Windows::Web::Syndication::ISyndicationText
{
    SyndicationText(std::nullptr_t) noexcept {}
    SyndicationText();
    SyndicationText(hstring_ref text);
    SyndicationText(hstring_ref text, Windows::Web::Syndication::SyndicationTextType type);
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Security.Credentials.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Security::Credentials {

struct ICredentialFactory;
struct IKeyCredential;
struct IKeyCredentialAttestationResult;
struct IKeyCredentialManagerStatics;
struct IKeyCredentialOperationResult;
struct IKeyCredentialRetrievalResult;
struct IPasswordCredential;
struct IPasswordVault;
struct IWebAccount;
struct IWebAccount2;
struct IWebAccountFactory;
struct IWebAccountProvider;
struct IWebAccountProvider2;
struct IWebAccountProvider3;
struct IWebAccountProviderFactory;
struct KeyCredential;
struct KeyCredentialAttestationResult;
struct KeyCredentialOperationResult;
struct KeyCredentialRetrievalResult;
struct PasswordCredential;
struct PasswordCredentialPropertyStore;
struct PasswordVault;
struct WebAccount;
struct WebAccountProvider;

}

namespace Windows::Security::Credentials {

struct ICredentialFactory;
struct IKeyCredential;
struct IKeyCredentialAttestationResult;
struct IKeyCredentialManagerStatics;
struct IKeyCredentialOperationResult;
struct IKeyCredentialRetrievalResult;
struct IPasswordCredential;
struct IPasswordVault;
struct IWebAccount;
struct IWebAccount2;
struct IWebAccountFactory;
struct IWebAccountProvider;
struct IWebAccountProvider2;
struct IWebAccountProvider3;
struct IWebAccountProviderFactory;
struct KeyCredential;
struct KeyCredentialAttestationResult;
struct KeyCredentialManager;
struct KeyCredentialOperationResult;
struct KeyCredentialRetrievalResult;
struct PasswordCredential;
struct PasswordCredentialPropertyStore;
struct PasswordVault;
struct WebAccount;
struct WebAccountProvider;

}

namespace Windows::Security::Credentials {

enum class KeyCredentialAttestationStatus
{
    Success = 0,
    UnknownError = 1,
    NotSupported = 2,
    TemporaryFailure = 3,
};

enum class KeyCredentialCreationOption
{
    ReplaceExisting = 0,
    FailIfExists = 1,
};

enum class KeyCredentialStatus
{
    Success = 0,
    UnknownError = 1,
    NotFound = 2,
    UserCanceled = 3,
    UserPrefersPassword = 4,
    CredentialAlreadyExists = 5,
    SecurityDeviceLocked = 6,
};

enum class WebAccountPictureSize
{
    Size64x64 = 64,
    Size208x208 = 208,
    Size424x424 = 424,
    Size1080x1080 = 1080,
};

enum class WebAccountState
{
    None = 0,
    Connected = 1,
    Error = 2,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Midi.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Devices.Midi.0.h"
#include "Windows.Devices.Enumeration.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::Midi {

struct __declspec(uuid("be1fa860-62b4-4d52-a37e-92e54d35b909")) __declspec(novtable) IMidiChannelPressureMessage : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Channel(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Pressure(uint8_t * value) = 0;
};

struct __declspec(uuid("6218ed2f-2284-412a-94cf-10fb04842c6c")) __declspec(novtable) IMidiChannelPressureMessageFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateMidiChannelPressureMessage(uint8_t channel, uint8_t pressure, Windows::Devices::Midi::IMidiChannelPressureMessage ** value) = 0;
};

struct __declspec(uuid("b7e15f83-780d-405f-b781-3e1598c97f40")) __declspec(novtable) IMidiControlChangeMessage : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Channel(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Controller(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_ControlValue(uint8_t * value) = 0;
};

struct __declspec(uuid("2ab14321-956c-46ad-9752-f87f55052fe3")) __declspec(novtable) IMidiControlChangeMessageFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateMidiControlChangeMessage(uint8_t channel, uint8_t controller, uint8_t controlValue, Windows::Devices::Midi::IMidiControlChangeMessage ** value) = 0;
};

struct __declspec(uuid("d5c1d9db-971a-4eaf-a23d-ea19fe607ff9")) __declspec(novtable) IMidiInPort : Windows::IInspectable
{
    virtual HRESULT __stdcall add_MessageReceived(Windows::Foundation::TypedEventHandler<Windows::Devices::Midi::MidiInPort, Windows::Devices::Midi::MidiMessageReceivedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_MessageReceived(event_token token) = 0;
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
};

struct __declspec(uuid("44c439dc-67ff-4a6e-8bac-fdb6610cf296")) __declspec(novtable) IMidiInPortStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_FromIdAsync(hstring deviceId, Windows::Foundation::IAsyncOperation<Windows::Devices::Midi::MidiInPort> ** value) = 0;
    virtual HRESULT __stdcall abi_GetDeviceSelector(hstring * value) = 0;
};

struct __declspec(uuid("79767945-1094-4283-9be0-289fc0ee8334")) __declspec(novtable) IMidiMessage : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::TimeSpan * value) = 0;
    virtual HRESULT __stdcall get_RawData(Windows::Storage::Streams::IBuffer ** value) = 0;
    virtual HRESULT __stdcall get_Type(winrt::Windows::Devices::Midi::MidiMessageType * value) = 0;
};

struct __declspec(uuid("76566e56-f328-4b51-907d-b3a8ce96bf80")) __declspec(novtable) IMidiMessageReceivedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Message(Windows::Devices::Midi::IMidiMessage ** value) = 0;
};

struct __declspec(uuid("16fd8af4-198e-4d8f-a654-d305a293548f")) __declspec(novtable) IMidiNoteOffMessage : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Channel(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Note(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Velocity(uint8_t * value) = 0;
};

struct __declspec(uuid("a6b240e0-a749-425f-8af4-a4d979cc15b5")) __declspec(novtable) IMidiNoteOffMessageFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateMidiNoteOffMessage(uint8_t channel, uint8_t note, uint8_t velocity, Windows::Devices::Midi::IMidiNoteOffMessage ** value) = 0;
};

struct __declspec(uuid("e0224af5-6181-46dd-afa2-410004c057aa")) __declspec(novtable) IMidiNoteOnMessage : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Channel(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Note(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Velocity(uint8_t * value) = 0;
};

struct __declspec(uuid("9b4280a0-59c1-420e-b517-15a10aa9606b")) __declspec(novtable) IMidiNoteOnMessageFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateMidiNoteOnMessage(uint8_t channel, uint8_t note, uint8_t velocity, Windows::Devices::Midi::IMidiNoteOnMessage ** value) = 0;
};

struct __declspec(uuid("931d6d9f-57a2-4a3a-adb8-4640886f6693")) __declspec(novtable) IMidiOutPort : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_SendMessage(Windows::Devices::Midi::IMidiMessage * midiMessage) = 0;
    virtual HRESULT __stdcall abi_SendBuffer(Windows::Storage::Streams::IBuffer * midiData) = 0;
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
};

struct __declspec(uuid("065cc3e9-0f88-448b-9b64-a95826c65b8f")) __declspec(novtable) IMidiOutPortStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_FromIdAsync(hstring deviceId, Windows::Foundation::IAsyncOperation<Windows::Devices::Midi::IMidiOutPort> ** value) = 0;
    virtual HRESULT __stdcall abi_GetDeviceSelector(hstring * value) = 0;
};

struct __declspec(uuid("29df4cb1-2e9f-4faf-8c2b-9cb82a9079ca")) __declspec(novtable) IMidiPitchBendChangeMessage : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Channel(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Bend(uint16_t * value) = 0;
};

struct __declspec(uuid("f5eedf55-cfc8-4926-b30e-a3622393306c")) __declspec(novtable) IMidiPitchBendChangeMessageFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateMidiPitchBendChangeMessage(uint8_t channel, uint16_t bend, Windows::Devices::Midi::IMidiPitchBendChangeMessage ** value) = 0;
};

struct __declspec(uuid("1f7337fe-ace8-48a0-868e-7cdbf20f04d6")) __declspec(novtable) IMidiPolyphonicKeyPressureMessage : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Channel(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Note(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Pressure(uint8_t * value) = 0;
};

struct __declspec(uuid("e98f483e-c4b3-4dd2-917c-e349815a1b3b")) __declspec(novtable) IMidiPolyphonicKeyPressureMessageFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateMidiPolyphonicKeyPressureMessage(uint8_t channel, uint8_t note, uint8_t pressure, Windows::Devices::Midi::IMidiPolyphonicKeyPressureMessage ** value) = 0;
};

struct __declspec(uuid("9cbb3c78-7a3e-4327-aa98-20b8e4485af8")) __declspec(novtable) IMidiProgramChangeMessage : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Channel(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Program(uint8_t * value) = 0;
};

struct __declspec(uuid("d6b04387-524b-4104-9c99-6572bfd2e261")) __declspec(novtable) IMidiProgramChangeMessageFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateMidiProgramChangeMessage(uint8_t channel, uint8_t program, Windows::Devices::Midi::IMidiProgramChangeMessage ** value) = 0;
};

struct __declspec(uuid("4ca50c56-ec5e-4ae4-a115-88dc57cc2b79")) __declspec(novtable) IMidiSongPositionPointerMessage : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Beats(uint16_t * value) = 0;
};

struct __declspec(uuid("9c00e996-f10b-4fea-b395-f5d6cf80f64e")) __declspec(novtable) IMidiSongPositionPointerMessageFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateMidiSongPositionPointerMessage(uint16_t beats, Windows::Devices::Midi::IMidiSongPositionPointerMessage ** value) = 0;
};

struct __declspec(uuid("49f0f27f-6d83-4741-a5bf-4629f6be974f")) __declspec(novtable) IMidiSongSelectMessage : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Song(uint8_t * value) = 0;
};

struct __declspec(uuid("848878e4-8748-4129-a66c-a05493f75daa")) __declspec(novtable) IMidiSongSelectMessageFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateMidiSongSelectMessage(uint8_t song, Windows::Devices::Midi::IMidiSongSelectMessage ** value) = 0;
};

struct __declspec(uuid("f0da155e-db90-405f-b8ae-21d2e17f2e45")) __declspec(novtable) IMidiSynthesizer : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AudioDevice(Windows::Devices::Enumeration::IDeviceInformation ** value) = 0;
    virtual HRESULT __stdcall get_Volume(double * value) = 0;
    virtual HRESULT __stdcall put_Volume(double value) = 0;
};

struct __declspec(uuid("4224eaa8-6629-4d6b-aa8f-d4521a5a31ce")) __declspec(novtable) IMidiSynthesizerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateAsync(Windows::Foundation::IAsyncOperation<Windows::Devices::Midi::MidiSynthesizer> ** value) = 0;
    virtual HRESULT __stdcall abi_CreateFromAudioDeviceAsync(Windows::Devices::Enumeration::IDeviceInformation * audioDevice, Windows::Foundation::IAsyncOperation<Windows::Devices::Midi::MidiSynthesizer> ** value) = 0;
    virtual HRESULT __stdcall abi_IsSynthesizer(Windows::Devices::Enumeration::IDeviceInformation * midiDevice, bool * value) = 0;
};

struct __declspec(uuid("083de222-3b74-4320-9b42-0ca8545f8a24")) __declspec(novtable) IMidiSystemExclusiveMessageFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateMidiSystemExclusiveMessage(Windows::Storage::Streams::IBuffer * rawData, Windows::Devices::Midi::IMidiMessage ** value) = 0;
};

struct __declspec(uuid("0bf7087d-fa63-4a1c-8deb-c0e87796a6d7")) __declspec(novtable) IMidiTimeCodeMessage : Windows::IInspectable
{
    virtual HRESULT __stdcall get_FrameType(uint8_t * value) = 0;
    virtual HRESULT __stdcall get_Values(uint8_t * value) = 0;
};

struct __declspec(uuid("eb3099c5-771c-40de-b961-175a7489a85e")) __declspec(novtable) IMidiTimeCodeMessageFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateMidiTimeCodeMessage(uint8_t frameType, uint8_t values, Windows::Devices::Midi::IMidiTimeCodeMessage ** value) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Devices::Midi::MidiActiveSensingMessage> { using default_interface = Windows::Devices::Midi::IMidiMessage; };
template <> struct traits<Windows::Devices::Midi::MidiChannelPressureMessage> { using default_interface = Windows::Devices::Midi::IMidiChannelPressureMessage; };
template <> struct traits<Windows::Devices::Midi::MidiContinueMessage> { using default_interface = Windows::Devices::Midi::IMidiMessage; };
template <> struct traits<Windows::Devices::Midi::MidiControlChangeMessage> { using default_interface = Windows::Devices::Midi::IMidiControlChangeMessage; };
template <> struct traits<Windows::Devices::Midi::MidiInPort> { using default_interface = Windows::Devices::Midi::IMidiInPort; };
template <> struct traits<Windows::Devices::Midi::MidiMessageReceivedEventArgs> { using default_interface = Windows::Devices::Midi::IMidiMessageReceivedEventArgs; };
template <> struct traits<Windows::Devices::Midi::MidiNoteOffMessage> { using default_interface = Windows::Devices::Midi::IMidiNoteOffMessage; };
template <> struct traits<Windows::Devices::Midi::MidiNoteOnMessage> { using default_interface = Windows::Devices::Midi::IMidiNoteOnMessage; };
template <> struct traits<Windows::Devices::Midi::MidiOutPort> { using default_interface = Windows::Devices::Midi::IMidiOutPort; };
template <> struct traits<Windows::Devices::Midi::MidiPitchBendChangeMessage> { using default_interface = Windows::Devices::Midi::IMidiPitchBendChangeMessage; };
template <> struct traits<Windows::Devices::Midi::MidiPolyphonicKeyPressureMessage> { using default_interface = Windows::Devices::Midi::IMidiPolyphonicKeyPressureMessage; };
template <> struct traits<Windows::Devices::Midi::MidiProgramChangeMessage> { using default_interface = Windows::Devices::Midi::IMidiProgramChangeMessage; };
template <> struct traits<Windows::Devices::Midi::MidiSongPositionPointerMessage> { using default_interface = Windows::Devices::Midi::IMidiSongPositionPointerMessage; };
template <> struct traits<Windows::Devices::Midi::MidiSongSelectMessage> { using default_interface = Windows::Devices::Midi::IMidiSongSelectMessage; };
template <> struct traits<Windows::Devices::Midi::MidiStartMessage> { using default_interface = Windows::Devices::Midi::IMidiMessage; };
template <> struct traits<Windows::Devices::Midi::MidiStopMessage> { using default_interface = Windows::Devices::Midi::IMidiMessage; };
template <> struct traits<Windows::Devices::Midi::MidiSynthesizer> { using default_interface = Windows::Devices::Midi::IMidiSynthesizer; };
template <> struct traits<Windows::Devices::Midi::MidiSystemExclusiveMessage> { using default_interface = Windows::Devices::Midi::IMidiMessage; };
template <> struct traits<Windows::Devices::Midi::MidiSystemResetMessage> { using default_interface = Windows::Devices::Midi::IMidiMessage; };
template <> struct traits<Windows::Devices::Midi::MidiTimeCodeMessage> { using default_interface = Windows::Devices::Midi::IMidiTimeCodeMessage; };
template <> struct traits<Windows::Devices::Midi::MidiTimingClockMessage> { using default_interface = Windows::Devices::Midi::IMidiMessage; };
template <> struct traits<Windows::Devices::Midi::MidiTuneRequestMessage> { using default_interface = Windows::Devices::Midi::IMidiMessage; };

}

namespace Windows::Devices::Midi {

template <typename T> struct impl_IMidiChannelPressureMessage;
template <typename T> struct impl_IMidiChannelPressureMessageFactory;
template <typename T> struct impl_IMidiControlChangeMessage;
template <typename T> struct impl_IMidiControlChangeMessageFactory;
template <typename T> struct impl_IMidiInPort;
template <typename T> struct impl_IMidiInPortStatics;
template <typename T> struct impl_IMidiMessage;
template <typename T> struct impl_IMidiMessageReceivedEventArgs;
template <typename T> struct impl_IMidiNoteOffMessage;
template <typename T> struct impl_IMidiNoteOffMessageFactory;
template <typename T> struct impl_IMidiNoteOnMessage;
template <typename T> struct impl_IMidiNoteOnMessageFactory;
template <typename T> struct impl_IMidiOutPort;
template <typename T> struct impl_IMidiOutPortStatics;
template <typename T> struct impl_IMidiPitchBendChangeMessage;
template <typename T> struct impl_IMidiPitchBendChangeMessageFactory;
template <typename T> struct impl_IMidiPolyphonicKeyPressureMessage;
template <typename T> struct impl_IMidiPolyphonicKeyPressureMessageFactory;
template <typename T> struct impl_IMidiProgramChangeMessage;
template <typename T> struct impl_IMidiProgramChangeMessageFactory;
template <typename T> struct impl_IMidiSongPositionPointerMessage;
template <typename T> struct impl_IMidiSongPositionPointerMessageFactory;
template <typename T> struct impl_IMidiSongSelectMessage;
template <typename T> struct impl_IMidiSongSelectMessageFactory;
template <typename T> struct impl_IMidiSynthesizer;
template <typename T> struct impl_IMidiSynthesizerStatics;
template <typename T> struct impl_IMidiSystemExclusiveMessageFactory;
template <typename T> struct impl_IMidiTimeCodeMessage;
template <typename T> struct impl_IMidiTimeCodeMessageFactory;

}

namespace impl {

template <> struct traits<Windows::Devices::Midi::IMidiChannelPressureMessage>
{
    using abi = ABI::Windows::Devices::Midi::IMidiChannelPressureMessage;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiChannelPressureMessage<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiChannelPressureMessageFactory>
{
    using abi = ABI::Windows::Devices::Midi::IMidiChannelPressureMessageFactory;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiChannelPressureMessageFactory<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiControlChangeMessage>
{
    using abi = ABI::Windows::Devices::Midi::IMidiControlChangeMessage;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiControlChangeMessage<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiControlChangeMessageFactory>
{
    using abi = ABI::Windows::Devices::Midi::IMidiControlChangeMessageFactory;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiControlChangeMessageFactory<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiInPort>
{
    using abi = ABI::Windows::Devices::Midi::IMidiInPort;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiInPort<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiInPortStatics>
{
    using abi = ABI::Windows::Devices::Midi::IMidiInPortStatics;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiInPortStatics<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiMessage>
{
    using abi = ABI::Windows::Devices::Midi::IMidiMessage;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiMessage<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiMessageReceivedEventArgs>
{
    using abi = ABI::Windows::Devices::Midi::IMidiMessageReceivedEventArgs;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiMessageReceivedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiNoteOffMessage>
{
    using abi = ABI::Windows::Devices::Midi::IMidiNoteOffMessage;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiNoteOffMessage<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiNoteOffMessageFactory>
{
    using abi = ABI::Windows::Devices::Midi::IMidiNoteOffMessageFactory;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiNoteOffMessageFactory<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiNoteOnMessage>
{
    using abi = ABI::Windows::Devices::Midi::IMidiNoteOnMessage;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiNoteOnMessage<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiNoteOnMessageFactory>
{
    using abi = ABI::Windows::Devices::Midi::IMidiNoteOnMessageFactory;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiNoteOnMessageFactory<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiOutPort>
{
    using abi = ABI::Windows::Devices::Midi::IMidiOutPort;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiOutPort<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiOutPortStatics>
{
    using abi = ABI::Windows::Devices::Midi::IMidiOutPortStatics;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiOutPortStatics<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiPitchBendChangeMessage>
{
    using abi = ABI::Windows::Devices::Midi::IMidiPitchBendChangeMessage;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiPitchBendChangeMessage<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiPitchBendChangeMessageFactory>
{
    using abi = ABI::Windows::Devices::Midi::IMidiPitchBendChangeMessageFactory;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiPitchBendChangeMessageFactory<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiPolyphonicKeyPressureMessage>
{
    using abi = ABI::Windows::Devices::Midi::IMidiPolyphonicKeyPressureMessage;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiPolyphonicKeyPressureMessage<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiPolyphonicKeyPressureMessageFactory>
{
    using abi = ABI::Windows::Devices::Midi::IMidiPolyphonicKeyPressureMessageFactory;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiPolyphonicKeyPressureMessageFactory<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiProgramChangeMessage>
{
    using abi = ABI::Windows::Devices::Midi::IMidiProgramChangeMessage;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiProgramChangeMessage<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiProgramChangeMessageFactory>
{
    using abi = ABI::Windows::Devices::Midi::IMidiProgramChangeMessageFactory;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiProgramChangeMessageFactory<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiSongPositionPointerMessage>
{
    using abi = ABI::Windows::Devices::Midi::IMidiSongPositionPointerMessage;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiSongPositionPointerMessage<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiSongPositionPointerMessageFactory>
{
    using abi = ABI::Windows::Devices::Midi::IMidiSongPositionPointerMessageFactory;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiSongPositionPointerMessageFactory<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiSongSelectMessage>
{
    using abi = ABI::Windows::Devices::Midi::IMidiSongSelectMessage;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiSongSelectMessage<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiSongSelectMessageFactory>
{
    using abi = ABI::Windows::Devices::Midi::IMidiSongSelectMessageFactory;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiSongSelectMessageFactory<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiSynthesizer>
{
    using abi = ABI::Windows::Devices::Midi::IMidiSynthesizer;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiSynthesizer<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiSynthesizerStatics>
{
    using abi = ABI::Windows::Devices::Midi::IMidiSynthesizerStatics;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiSynthesizerStatics<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiSystemExclusiveMessageFactory>
{
    using abi = ABI::Windows::Devices::Midi::IMidiSystemExclusiveMessageFactory;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiSystemExclusiveMessageFactory<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiTimeCodeMessage>
{
    using abi = ABI::Windows::Devices::Midi::IMidiTimeCodeMessage;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiTimeCodeMessage<D>;
};

template <> struct traits<Windows::Devices::Midi::IMidiTimeCodeMessageFactory>
{
    using abi = ABI::Windows::Devices::Midi::IMidiTimeCodeMessageFactory;
    template <typename D> using consume = Windows::Devices::Midi::impl_IMidiTimeCodeMessageFactory<D>;
};

template <> struct traits<Windows::Devices::Midi::MidiActiveSensingMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiActiveSensingMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiActiveSensingMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiChannelPressureMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiChannelPressureMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiChannelPressureMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiContinueMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiContinueMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiContinueMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiControlChangeMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiControlChangeMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiControlChangeMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiInPort>
{
    using abi = ABI::Windows::Devices::Midi::MidiInPort;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiInPort"; }
};

template <> struct traits<Windows::Devices::Midi::MidiMessageReceivedEventArgs>
{
    using abi = ABI::Windows::Devices::Midi::MidiMessageReceivedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiMessageReceivedEventArgs"; }
};

template <> struct traits<Windows::Devices::Midi::MidiNoteOffMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiNoteOffMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiNoteOffMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiNoteOnMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiNoteOnMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiNoteOnMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiOutPort>
{
    using abi = ABI::Windows::Devices::Midi::MidiOutPort;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiOutPort"; }
};

template <> struct traits<Windows::Devices::Midi::MidiPitchBendChangeMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiPitchBendChangeMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiPitchBendChangeMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiPolyphonicKeyPressureMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiPolyphonicKeyPressureMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiPolyphonicKeyPressureMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiProgramChangeMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiProgramChangeMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiProgramChangeMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiSongPositionPointerMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiSongPositionPointerMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiSongPositionPointerMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiSongSelectMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiSongSelectMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiSongSelectMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiStartMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiStartMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiStartMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiStopMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiStopMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiStopMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiSynthesizer>
{
    using abi = ABI::Windows::Devices::Midi::MidiSynthesizer;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiSynthesizer"; }
};

template <> struct traits<Windows::Devices::Midi::MidiSystemExclusiveMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiSystemExclusiveMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiSystemExclusiveMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiSystemResetMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiSystemResetMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiSystemResetMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiTimeCodeMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiTimeCodeMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiTimeCodeMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiTimingClockMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiTimingClockMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiTimingClockMessage"; }
};

template <> struct traits<Windows::Devices::Midi::MidiTuneRequestMessage>
{
    using abi = ABI::Windows::Devices::Midi::MidiTuneRequestMessage;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Midi.MidiTuneRequestMessage"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Devices.Spi.Provider.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Devices.Spi.Provider.3.h"
#include "Windows.Devices.Spi.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Devices::Spi::Provider::IProviderSpiConnectionSettings> : produce_base<D, Windows::Devices::Spi::Provider::IProviderSpiConnectionSettings>
{
    HRESULT __stdcall get_ChipSelectLine(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ChipSelectLine());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ChipSelectLine(int32_t value) noexcept override
    {
        try
        {
            this->shim().ChipSelectLine(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Mode(Windows::Devices::Spi::Provider::ProviderSpiMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Mode(Windows::Devices::Spi::Provider::ProviderSpiMode value) noexcept override
    {
        try
        {
            this->shim().Mode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DataBitLength(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DataBitLength());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DataBitLength(int32_t value) noexcept override
    {
        try
        {
            this->shim().DataBitLength(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ClockFrequency(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ClockFrequency());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ClockFrequency(int32_t value) noexcept override
    {
        try
        {
            this->shim().ClockFrequency(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SharingMode(Windows::Devices::Spi::Provider::ProviderSpiSharingMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SharingMode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SharingMode(Windows::Devices::Spi::Provider::ProviderSpiSharingMode value) noexcept override
    {
        try
        {
            this->shim().SharingMode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Spi::Provider::IProviderSpiConnectionSettingsFactory> : produce_base<D, Windows::Devices::Spi::Provider::IProviderSpiConnectionSettingsFactory>
{
    HRESULT __stdcall abi_Create(int32_t chipSelectLine, abi_arg_out<Windows::Devices::Spi::Provider::IProviderSpiConnectionSettings> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Create(chipSelectLine));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Spi::Provider::ISpiControllerProvider> : produce_base<D, Windows::Devices::Spi::Provider::ISpiControllerProvider>
{
    HRESULT __stdcall abi_GetDeviceProvider(abi_arg_in<Windows::Devices::Spi::Provider::IProviderSpiConnectionSettings> settings, abi_arg_out<Windows::Devices::Spi::Provider::ISpiDeviceProvider> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetDeviceProvider(*reinterpret_cast<const Windows::Devices::Spi::Provider::ProviderSpiConnectionSettings *>(&settings)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Spi::Provider::ISpiDeviceProvider> : produce_base<D, Windows::Devices::Spi::Provider::ISpiDeviceProvider>
{
    HRESULT __stdcall get_DeviceId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DeviceId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ConnectionSettings(abi_arg_out<Windows::Devices::Spi::Provider::IProviderSpiConnectionSettings> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ConnectionSettings());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Write(uint32_t __bufferSize, abi_arg_in<uint8_t> * buffer) noexcept override
    {
        try
        {
            this->shim().Write(array_ref<const uint8_t>(buffer, buffer + __bufferSize));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Read(uint32_t __bufferSize, abi_arg_out<uint8_t> buffer) noexcept override
    {
        try
        {
            this->shim().Read(*buffer);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TransferSequential(uint32_t __writeBufferSize, abi_arg_in<uint8_t> * writeBuffer, uint32_t __readBufferSize, abi_arg_out<uint8_t> readBuffer) noexcept override
    {
        try
        {
            this->shim().TransferSequential(array_ref<const uint8_t>(writeBuffer, writeBuffer + __writeBufferSize), *readBuffer);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TransferFullDuplex(uint32_t __writeBufferSize, abi_arg_in<uint8_t> * writeBuffer, uint32_t __readBufferSize, abi_arg_out<uint8_t> readBuffer) noexcept override
    {
        try
        {
            this->shim().TransferFullDuplex(array_ref<const uint8_t>(writeBuffer, writeBuffer + __writeBufferSize), *readBuffer);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Spi::Provider::ISpiProvider> : produce_base<D, Windows::Devices::Spi::Provider::ISpiProvider>
{
    HRESULT __stdcall abi_GetControllersAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Spi::Provider::ISpiControllerProvider>>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetControllersAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Devices::Spi::Provider {

template <typename D> Windows::Devices::Spi::Provider::ProviderSpiConnectionSettings impl_IProviderSpiConnectionSettingsFactory<D>::Create(int32_t chipSelectLine) const
{
    Windows::Devices::Spi::Provider::ProviderSpiConnectionSettings value { nullptr };
    check_hresult(static_cast<const IProviderSpiConnectionSettingsFactory &>(static_cast<const D &>(*this))->abi_Create(chipSelectLine, put(value)));
    return value;
}

template <typename D> int32_t impl_IProviderSpiConnectionSettings<D>::ChipSelectLine() const
{
    int32_t value {};
    check_hresult(static_cast<const IProviderSpiConnectionSettings &>(static_cast<const D &>(*this))->get_ChipSelectLine(&value));
    return value;
}

template <typename D> void impl_IProviderSpiConnectionSettings<D>::ChipSelectLine(int32_t value) const
{
    check_hresult(static_cast<const IProviderSpiConnectionSettings &>(static_cast<const D &>(*this))->put_ChipSelectLine(value));
}

template <typename D> Windows::Devices::Spi::Provider::ProviderSpiMode impl_IProviderSpiConnectionSettings<D>::Mode() const
{
    Windows::Devices::Spi::Provider::ProviderSpiMode value {};
    check_hresult(static_cast<const IProviderSpiConnectionSettings &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> void impl_IProviderSpiConnectionSettings<D>::Mode(Windows::Devices::Spi::Provider::ProviderSpiMode value) const
{
    check_hresult(static_cast<const IProviderSpiConnectionSettings &>(static_cast<const D &>(*this))->put_Mode(value));
}

template <typename D> int32_t impl_IProviderSpiConnectionSettings<D>::DataBitLength() const
{
    int32_t value {};
    check_hresult(static_cast<const IProviderSpiConnectionSettings &>(static_cast<const D &>(*this))->get_DataBitLength(&value));
    return value;
}

template <typename D> void impl_IProviderSpiConnectionSettings<D>::DataBitLength(int32_t value) const
{
    check_hresult(static_cast<const IProviderSpiConnectionSettings &>(static_cast<const D &>(*this))->put_DataBitLength(value));
}

template <typename D> int32_t impl_IProviderSpiConnectionSettings<D>::ClockFrequency() const
{
    int32_t value {};
    check_hresult(static_cast<const IProviderSpiConnectionSettings &>(static_cast<const D &>(*this))->get_ClockFrequency(&value));
    return value;
}

template <typename D> void impl_IProviderSpiConnectionSettings<D>::ClockFrequency(int32_t value) const
{
    check_hresult(static_cast<const IProviderSpiConnectionSettings &>(static_cast<const D &>(*this))->put_ClockFrequency(value));
}

template <typename D> Windows::Devices::Spi::Provider::ProviderSpiSharingMode impl_IProviderSpiConnectionSettings<D>::SharingMode() const
{
    Windows::Devices::Spi::Provider::ProviderSpiSharingMode value {};
    check_hresult(static_cast<const IProviderSpiConnectionSettings &>(static_cast<const D &>(*this))->get_SharingMode(&value));
    return value;
}

template <typename D> void impl_IProviderSpiConnectionSettings<D>::SharingMode(Windows::Devices::Spi::Provider::ProviderSpiSharingMode value) const
{
    check_hresult(static_cast<const IProviderSpiConnectionSettings &>(static_cast<const D &>(*this))->put_SharingMode(value));
}

template <typename D> Windows::Devices::Spi::Provider::ISpiDeviceProvider impl_ISpiControllerProvider<D>::GetDeviceProvider(const Windows::Devices::Spi::Provider::ProviderSpiConnectionSettings & settings) const
{
    Windows::Devices::Spi::Provider::ISpiDeviceProvider result;
    check_hresult(static_cast<const ISpiControllerProvider &>(static_cast<const D &>(*this))->abi_GetDeviceProvider(get(settings), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Spi::Provider::ISpiControllerProvider>> impl_ISpiProvider<D>::GetControllersAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Spi::Provider::ISpiControllerProvider>> result;
    check_hresult(static_cast<const ISpiProvider &>(static_cast<const D &>(*this))->abi_GetControllersAsync(put(result)));
    return result;
}

template <typename D> hstring impl_ISpiDeviceProvider<D>::DeviceId() const
{
    hstring value;
    check_hresult(static_cast<const ISpiDeviceProvider &>(static_cast<const D &>(*this))->get_DeviceId(put(value)));
    return value;
}

template <typename D> Windows::Devices::Spi::Provider::ProviderSpiConnectionSettings impl_ISpiDeviceProvider<D>::ConnectionSettings() const
{
    Windows::Devices::Spi::Provider::ProviderSpiConnectionSettings value { nullptr };
    check_hresult(static_cast<const ISpiDeviceProvider &>(static_cast<const D &>(*this))->get_ConnectionSettings(put(value)));
    return value;
}

template <typename D> void impl_ISpiDeviceProvider<D>::Write(array_ref<const uint8_t> buffer) const
{
    check_hresult(static_cast<const ISpiDeviceProvider &>(static_cast<const D &>(*this))->abi_Write(buffer.size(), get(buffer)));
}

template <typename D> void impl_ISpiDeviceProvider<D>::Read(array_ref<uint8_t> buffer) const
{
    check_hresult(static_cast<const ISpiDeviceProvider &>(static_cast<const D &>(*this))->abi_Read(buffer.size(), get(buffer)));
}

template <typename D> void impl_ISpiDeviceProvider<D>::TransferSequential(array_ref<const uint8_t> writeBuffer, array_ref<uint8_t> readBuffer) const
{
    check_hresult(static_cast<const ISpiDeviceProvider &>(static_cast<const D &>(*this))->abi_TransferSequential(writeBuffer.size(), get(writeBuffer), readBuffer.size(), get(readBuffer)));
}

template <typename D> void impl_ISpiDeviceProvider<D>::TransferFullDuplex(array_ref<const uint8_t> writeBuffer, array_ref<uint8_t> readBuffer) const
{
    check_hresult(static_cast<const ISpiDeviceProvider &>(static_cast<const D &>(*this))->abi_TransferFullDuplex(writeBuffer.size(), get(writeBuffer), readBuffer.size(), get(readBuffer)));
}

inline ProviderSpiConnectionSettings::ProviderSpiConnectionSettings(int32_t chipSelectLine) :
    ProviderSpiConnectionSettings(get_activation_factory<ProviderSpiConnectionSettings, IProviderSpiConnectionSettingsFactory>().Create(chipSelectLine))
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Security.Credentials.UI.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Storage.Streams.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Security.Credentials.UI.3.h"
#include "Windows.Security.Credentials.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Security::Credentials::UI::ICredentialPickerOptions> : produce_base<D, Windows::Security::Credentials::UI::ICredentialPickerOptions>
{
    HRESULT __stdcall put_Caption(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Caption(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Caption(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Caption());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Message(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Message(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Message(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Message());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ErrorCode(uint32_t value) noexcept override
    {
        try
        {
            this->shim().ErrorCode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ErrorCode(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ErrorCode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_TargetName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().TargetName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TargetName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TargetName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AuthenticationProtocol(Windows::Security::Credentials::UI::AuthenticationProtocol value) noexcept override
    {
        try
        {
            this->shim().AuthenticationProtocol(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AuthenticationProtocol(Windows::Security::Credentials::UI::AuthenticationProtocol * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AuthenticationProtocol());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CustomAuthenticationProtocol(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().CustomAuthenticationProtocol(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CustomAuthenticationProtocol(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CustomAuthenticationProtocol());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PreviousCredential(abi_arg_in<Windows::Storage::Streams::IBuffer> value) noexcept override
    {
        try
        {
            this->shim().PreviousCredential(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PreviousCredential(abi_arg_out<Windows::Storage::Streams::IBuffer> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PreviousCredential());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AlwaysDisplayDialog(bool value) noexcept override
    {
        try
        {
            this->shim().AlwaysDisplayDialog(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AlwaysDisplayDialog(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AlwaysDisplayDialog());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CallerSavesCredential(bool value) noexcept override
    {
        try
        {
            this->shim().CallerSavesCredential(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CallerSavesCredential(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CallerSavesCredential());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CredentialSaveOption(Windows::Security::Credentials::UI::CredentialSaveOption value) noexcept override
    {
        try
        {
            this->shim().CredentialSaveOption(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CredentialSaveOption(Windows::Security::Credentials::UI::CredentialSaveOption * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CredentialSaveOption());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Credentials::UI::ICredentialPickerResults> : produce_base<D, Windows::Security::Credentials::UI::ICredentialPickerResults>
{
    HRESULT __stdcall get_ErrorCode(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ErrorCode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CredentialSaveOption(Windows::Security::Credentials::UI::CredentialSaveOption * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CredentialSaveOption());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CredentialSaved(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CredentialSaved());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Credential(abi_arg_out<Windows::Storage::Streams::IBuffer> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Credential());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CredentialDomainName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CredentialDomainName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CredentialUserName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CredentialUserName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CredentialPassword(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CredentialPassword());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Credentials::UI::ICredentialPickerStatics> : produce_base<D, Windows::Security::Credentials::UI::ICredentialPickerStatics>
{
    HRESULT __stdcall abi_PickWithOptionsAsync(abi_arg_in<Windows::Security::Credentials::UI::ICredentialPickerOptions> options, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().PickAsync(*reinterpret_cast<const Windows::Security::Credentials::UI::CredentialPickerOptions *>(&options)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_PickWithMessageAsync(abi_arg_in<hstring> targetName, abi_arg_in<hstring> message, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().PickAsync(*reinterpret_cast<const hstring *>(&targetName), *reinterpret_cast<const hstring *>(&message)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_PickWithCaptionAsync(abi_arg_in<hstring> targetName, abi_arg_in<hstring> message, abi_arg_in<hstring> caption, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().PickAsync(*reinterpret_cast<const hstring *>(&targetName), *reinterpret_cast<const hstring *>(&message), *reinterpret_cast<const hstring *>(&caption)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Credentials::UI::IUserConsentVerifierStatics> : produce_base<D, Windows::Security::Credentials::UI::IUserConsentVerifierStatics>
{
    HRESULT __stdcall abi_CheckAvailabilityAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::UI::UserConsentVerifierAvailability>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CheckAvailabilityAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RequestVerificationAsync(abi_arg_in<hstring> message, abi_arg_out<Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().RequestVerificationAsync(*reinterpret_cast<const hstring *>(&message)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Security::Credentials::UI {

template <typename D> void impl_ICredentialPickerOptions<D>::Caption(hstring_ref value) const
{
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->put_Caption(get(value)));
}

template <typename D> hstring impl_ICredentialPickerOptions<D>::Caption() const
{
    hstring value;
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->get_Caption(put(value)));
    return value;
}

template <typename D> void impl_ICredentialPickerOptions<D>::Message(hstring_ref value) const
{
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->put_Message(get(value)));
}

template <typename D> hstring impl_ICredentialPickerOptions<D>::Message() const
{
    hstring value;
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->get_Message(put(value)));
    return value;
}

template <typename D> void impl_ICredentialPickerOptions<D>::ErrorCode(uint32_t value) const
{
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->put_ErrorCode(value));
}

template <typename D> uint32_t impl_ICredentialPickerOptions<D>::ErrorCode() const
{
    uint32_t value {};
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->get_ErrorCode(&value));
    return value;
}

template <typename D> void impl_ICredentialPickerOptions<D>::TargetName(hstring_ref value) const
{
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->put_TargetName(get(value)));
}

template <typename D> hstring impl_ICredentialPickerOptions<D>::TargetName() const
{
    hstring value;
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->get_TargetName(put(value)));
    return value;
}

template <typename D> void impl_ICredentialPickerOptions<D>::AuthenticationProtocol(Windows::Security::Credentials::UI::AuthenticationProtocol value) const
{
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->put_AuthenticationProtocol(value));
}

template <typename D> Windows::Security::Credentials::UI::AuthenticationProtocol impl_ICredentialPickerOptions<D>::AuthenticationProtocol() const
{
    Windows::Security::Credentials::UI::AuthenticationProtocol value {};
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->get_AuthenticationProtocol(&value));
    return value;
}

template <typename D> void impl_ICredentialPickerOptions<D>::CustomAuthenticationProtocol(hstring_ref value) const
{
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->put_CustomAuthenticationProtocol(get(value)));
}

template <typename D> hstring impl_ICredentialPickerOptions<D>::CustomAuthenticationProtocol() const
{
    hstring value;
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->get_CustomAuthenticationProtocol(put(value)));
    return value;
}

template <typename D> void impl_ICredentialPickerOptions<D>::PreviousCredential(const Windows::Storage::Streams::IBuffer & value) const
{
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->put_PreviousCredential(get(value)));
}

template <typename D> Windows::Storage::Streams::IBuffer impl_ICredentialPickerOptions<D>::PreviousCredential() const
{
    Windows::Storage::Streams::IBuffer value;
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->get_PreviousCredential(put(value)));
    return value;
}

template <typename D> void impl_ICredentialPickerOptions<D>::AlwaysDisplayDialog(bool value) const
{
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->put_AlwaysDisplayDialog(value));
}

template <typename D> bool impl_ICredentialPickerOptions<D>::AlwaysDisplayDialog() const
{
    bool value {};
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->get_AlwaysDisplayDialog(&value));
    return value;
}

template <typename D> void impl_ICredentialPickerOptions<D>::CallerSavesCredential(bool value) const
{
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->put_CallerSavesCredential(value));
}

template <typename D> bool impl_ICredentialPickerOptions<D>::CallerSavesCredential() const
{
    bool value {};
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->get_CallerSavesCredential(&value));
    return value;
}

template <typename D> void impl_ICredentialPickerOptions<D>::CredentialSaveOption(Windows::Security::Credentials::UI::CredentialSaveOption value) const
{
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->put_CredentialSaveOption(value));
}

template <typename D> Windows::Security::Credentials::UI::CredentialSaveOption impl_ICredentialPickerOptions<D>::CredentialSaveOption() const
{
    Windows::Security::Credentials::UI::CredentialSaveOption value {};
    check_hresult(static_cast<const ICredentialPickerOptions &>(static_cast<const D &>(*this))->get_CredentialSaveOption(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults> impl_ICredentialPickerStatics<D>::PickAsync(const Windows::Security::Credentials::UI::CredentialPickerOptions & options) const
{
    Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults> operation;
    check_hresult(static_cast<const ICredentialPickerStatics &>(static_cast<const D &>(*this))->abi_PickWithOptionsAsync(get(options), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults> impl_ICredentialPickerStatics<D>::PickAsync(hstring_ref targetName, hstring_ref message) const
{
    Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults> operation;
    check_hresult(static_cast<const ICredentialPickerStatics &>(static_cast<const D &>(*this))->abi_PickWithMessageAsync(get(targetName), get(message), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults> impl_ICredentialPickerStatics<D>::PickAsync(hstring_ref targetName, hstring_ref message, hstring_ref caption) const
{
    Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults> operation;
    check_hresult(static_cast<const ICredentialPickerStatics &>(static_cast<const D &>(*this))->abi_PickWithCaptionAsync(get(targetName), get(message), get(caption), put(operation)));
    return operation;
}

template <typename D> uint32_t impl_ICredentialPickerResults<D>::ErrorCode() const
{
    uint32_t value {};
    check_hresult(static_cast<const ICredentialPickerResults &>(static_cast<const D &>(*this))->get_ErrorCode(&value));
    return value;
}

template <typename D> Windows::Security::Credentials::UI::CredentialSaveOption impl_ICredentialPickerResults<D>::CredentialSaveOption() const
{
    Windows::Security::Credentials::UI::CredentialSaveOption value {};
    check_hresult(static_cast<const ICredentialPickerResults &>(static_cast<const D &>(*this))->get_CredentialSaveOption(&value));
    return value;
}

template <typename D> bool impl_ICredentialPickerResults<D>::CredentialSaved() const
{
    bool value {};
    check_hresult(static_cast<const ICredentialPickerResults &>(static_cast<const D &>(*this))->get_CredentialSaved(&value));
    return value;
}

template <typename D> Windows::Storage::Streams::IBuffer impl_ICredentialPickerResults<D>::Credential() const
{
    Windows::Storage::Streams::IBuffer value;
    check_hresult(static_cast<const ICredentialPickerResults &>(static_cast<const D &>(*this))->get_Credential(put(value)));
    return value;
}

template <typename D> hstring impl_ICredentialPickerResults<D>::CredentialDomainName() const
{
    hstring value;
    check_hresult(static_cast<const ICredentialPickerResults &>(static_cast<const D &>(*this))->get_CredentialDomainName(put(value)));
    return value;
}

template <typename D> hstring impl_ICredentialPickerResults<D>::CredentialUserName() const
{
    hstring value;
    check_hresult(static_cast<const ICredentialPickerResults &>(static_cast<const D &>(*this))->get_CredentialUserName(put(value)));
    return value;
}

template <typename D> hstring impl_ICredentialPickerResults<D>::CredentialPassword() const
{
    hstring value;
    check_hresult(static_cast<const ICredentialPickerResults &>(static_cast<const D &>(*this))->get_CredentialPassword(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::UI::UserConsentVerifierAvailability> impl_IUserConsentVerifierStatics<D>::CheckAvailabilityAsync() const
{
    Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::UI::UserConsentVerifierAvailability> result;
    check_hresult(static_cast<const IUserConsentVerifierStatics &>(static_cast<const D &>(*this))->abi_CheckAvailabilityAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult> impl_IUserConsentVerifierStatics<D>::RequestVerificationAsync(hstring_ref message) const
{
    Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult> result;
    check_hresult(static_cast<const IUserConsentVerifierStatics &>(static_cast<const D &>(*this))->abi_RequestVerificationAsync(get(message), put(result)));
    return result;
}

inline Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults> CredentialPicker::PickAsync(const Windows::Security::Credentials::UI::CredentialPickerOptions & options)
{
    return get_activation_factory<CredentialPicker, ICredentialPickerStatics>().PickAsync(options);
}

inline Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults> CredentialPicker::PickAsync(hstring_ref targetName, hstring_ref message)
{
    return get_activation_factory<CredentialPicker, ICredentialPickerStatics>().PickAsync(targetName, message);
}

inline Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::UI::CredentialPickerResults> CredentialPicker::PickAsync(hstring_ref targetName, hstring_ref message, hstring_ref caption)
{
    return get_activation_factory<CredentialPicker, ICredentialPickerStatics>().PickAsync(targetName, message, caption);
}

inline CredentialPickerOptions::CredentialPickerOptions() :
    CredentialPickerOptions(activate_instance<CredentialPickerOptions>())
{}

inline Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::UI::UserConsentVerifierAvailability> UserConsentVerifier::CheckAvailabilityAsync()
{
    return get_activation_factory<UserConsentVerifier, IUserConsentVerifierStatics>().CheckAvailabilityAsync();
}

inline Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::UI::UserConsentVerificationResult> UserConsentVerifier::RequestVerificationAsync(hstring_ref message)
{
    return get_activation_factory<UserConsentVerifier, IUserConsentVerifierStatics>().RequestVerificationAsync(message);
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Services.Maps.LocalSearch.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Services.Maps.3.h"
#include "internal/Windows.Devices.Geolocation.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Globalization.3.h"
#include "internal/Windows.Services.Maps.LocalSearch.3.h"
#include "Windows.Services.Maps.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Services::Maps::LocalSearch::ILocalCategoriesStatics> : produce_base<D, Windows::Services::Maps::LocalSearch::ILocalCategoriesStatics>
{
    HRESULT __stdcall get_BankAndCreditUnions(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BankAndCreditUnions());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EatDrink(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EatDrink());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Hospitals(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Hospitals());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HotelsAndMotels(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HotelsAndMotels());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_All(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().All());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Parking(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Parking());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SeeDo(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SeeDo());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Shop(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Shop());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Services::Maps::LocalSearch::ILocalLocation> : produce_base<D, Windows::Services::Maps::LocalSearch::ILocalLocation>
{
    HRESULT __stdcall get_Address(abi_arg_out<Windows::Services::Maps::IMapAddress> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Address());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Identifier(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Identifier());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Description(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Description());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DisplayName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DisplayName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Point(abi_arg_out<Windows::Devices::Geolocation::IGeopoint> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Point());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PhoneNumber(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PhoneNumber());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DataAttribution(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DataAttribution());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Services::Maps::LocalSearch::ILocalLocation2> : produce_base<D, Windows::Services::Maps::LocalSearch::ILocalLocation2>
{
    HRESULT __stdcall get_Category(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Category());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RatingInfo(abi_arg_out<Windows::Services::Maps::LocalSearch::ILocalLocationRatingInfo> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RatingInfo());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HoursOfOperation(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Services::Maps::LocalSearch::LocalLocationHoursOfOperationItem>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HoursOfOperation());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Services::Maps::LocalSearch::ILocalLocationFinderResult> : produce_base<D, Windows::Services::Maps::LocalSearch::ILocalLocationFinderResult>
{
    HRESULT __stdcall get_LocalLocations(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Services::Maps::LocalSearch::LocalLocation>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LocalLocations());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Status(Windows::Services::Maps::LocalSearch::LocalLocationFinderStatus * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Status());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Services::Maps::LocalSearch::ILocalLocationFinderStatics> : produce_base<D, Windows::Services::Maps::LocalSearch::ILocalLocationFinderStatics>
{
    HRESULT __stdcall abi_FindLocalLocationsAsync(abi_arg_in<hstring> searchTerm, abi_arg_in<Windows::Devices::Geolocation::IGeocircle> searchArea, abi_arg_in<hstring> localCategory, uint32_t maxResults, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Services::Maps::LocalSearch::LocalLocationFinderResult>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().FindLocalLocationsAsync(*reinterpret_cast<const hstring *>(&searchTerm), *reinterpret_cast<const Windows::Devices::Geolocation::Geocircle *>(&searchArea), *reinterpret_cast<const hstring *>(&localCategory), maxResults));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Services::Maps::LocalSearch::ILocalLocationHoursOfOperationItem> : produce_base<D, Windows::Services::Maps::LocalSearch::ILocalLocationHoursOfOperationItem>
{
    HRESULT __stdcall get_Day(Windows::Globalization::DayOfWeek * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Day());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Start(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Start());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Span(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Span());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Services::Maps::LocalSearch::ILocalLocationRatingInfo> : produce_base<D, Windows::Services::Maps::LocalSearch::ILocalLocationRatingInfo>
{
    HRESULT __stdcall get_AggregateRating(abi_arg_out<Windows::Foundation::IReference<double>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AggregateRating());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RatingCount(abi_arg_out<Windows::Foundation::IReference<int32_t>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RatingCount());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ProviderIdentifier(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ProviderIdentifier());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Services::Maps::LocalSearch {

template <typename D> Windows::Services::Maps::MapAddress impl_ILocalLocation<D>::Address() const
{
    Windows::Services::Maps::MapAddress value { nullptr };
    check_hresult(static_cast<const ILocalLocation &>(static_cast<const D &>(*this))->get_Address(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalLocation<D>::Identifier() const
{
    hstring value;
    check_hresult(static_cast<const ILocalLocation &>(static_cast<const D &>(*this))->get_Identifier(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalLocation<D>::Description() const
{
    hstring value;
    check_hresult(static_cast<const ILocalLocation &>(static_cast<const D &>(*this))->get_Description(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalLocation<D>::DisplayName() const
{
    hstring value;
    check_hresult(static_cast<const ILocalLocation &>(static_cast<const D &>(*this))->get_DisplayName(put(value)));
    return value;
}

template <typename D> Windows::Devices::Geolocation::Geopoint impl_ILocalLocation<D>::Point() const
{
    Windows::Devices::Geolocation::Geopoint value { nullptr };
    check_hresult(static_cast<const ILocalLocation &>(static_cast<const D &>(*this))->get_Point(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalLocation<D>::PhoneNumber() const
{
    hstring value;
    check_hresult(static_cast<const ILocalLocation &>(static_cast<const D &>(*this))->get_PhoneNumber(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalLocation<D>::DataAttribution() const
{
    hstring value;
    check_hresult(static_cast<const ILocalLocation &>(static_cast<const D &>(*this))->get_DataAttribution(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Services::Maps::LocalSearch::LocalLocation> impl_ILocalLocationFinderResult<D>::LocalLocations() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Services::Maps::LocalSearch::LocalLocation> value;
    check_hresult(static_cast<const ILocalLocationFinderResult &>(static_cast<const D &>(*this))->get_LocalLocations(put(value)));
    return value;
}

template <typename D> Windows::Services::Maps::LocalSearch::LocalLocationFinderStatus impl_ILocalLocationFinderResult<D>::Status() const
{
    Windows::Services::Maps::LocalSearch::LocalLocationFinderStatus value {};
    check_hresult(static_cast<const ILocalLocationFinderResult &>(static_cast<const D &>(*this))->get_Status(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Services::Maps::LocalSearch::LocalLocationFinderResult> impl_ILocalLocationFinderStatics<D>::FindLocalLocationsAsync(hstring_ref searchTerm, const Windows::Devices::Geolocation::Geocircle & searchArea, hstring_ref localCategory, uint32_t maxResults) const
{
    Windows::Foundation::IAsyncOperation<Windows::Services::Maps::LocalSearch::LocalLocationFinderResult> result;
    check_hresult(static_cast<const ILocalLocationFinderStatics &>(static_cast<const D &>(*this))->abi_FindLocalLocationsAsync(get(searchTerm), get(searchArea), get(localCategory), maxResults, put(result)));
    return result;
}

template <typename D> hstring impl_ILocalCategoriesStatics<D>::BankAndCreditUnions() const
{
    hstring value;
    check_hresult(static_cast<const ILocalCategoriesStatics &>(static_cast<const D &>(*this))->get_BankAndCreditUnions(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalCategoriesStatics<D>::EatDrink() const
{
    hstring value;
    check_hresult(static_cast<const ILocalCategoriesStatics &>(static_cast<const D &>(*this))->get_EatDrink(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalCategoriesStatics<D>::Hospitals() const
{
    hstring value;
    check_hresult(static_cast<const ILocalCategoriesStatics &>(static_cast<const D &>(*this))->get_Hospitals(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalCategoriesStatics<D>::HotelsAndMotels() const
{
    hstring value;
    check_hresult(static_cast<const ILocalCategoriesStatics &>(static_cast<const D &>(*this))->get_HotelsAndMotels(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalCategoriesStatics<D>::All() const
{
    hstring value;
    check_hresult(static_cast<const ILocalCategoriesStatics &>(static_cast<const D &>(*this))->get_All(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalCategoriesStatics<D>::Parking() const
{
    hstring value;
    check_hresult(static_cast<const ILocalCategoriesStatics &>(static_cast<const D &>(*this))->get_Parking(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalCategoriesStatics<D>::SeeDo() const
{
    hstring value;
    check_hresult(static_cast<const ILocalCategoriesStatics &>(static_cast<const D &>(*this))->get_SeeDo(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalCategoriesStatics<D>::Shop() const
{
    hstring value;
    check_hresult(static_cast<const ILocalCategoriesStatics &>(static_cast<const D &>(*this))->get_Shop(put(value)));
    return value;
}

template <typename D> Windows::Globalization::DayOfWeek impl_ILocalLocationHoursOfOperationItem<D>::Day() const
{
    Windows::Globalization::DayOfWeek value {};
    check_hresult(static_cast<const ILocalLocationHoursOfOperationItem &>(static_cast<const D &>(*this))->get_Day(&value));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_ILocalLocationHoursOfOperationItem<D>::Start() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const ILocalLocationHoursOfOperationItem &>(static_cast<const D &>(*this))->get_Start(put(value)));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_ILocalLocationHoursOfOperationItem<D>::Span() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const ILocalLocationHoursOfOperationItem &>(static_cast<const D &>(*this))->get_Span(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IReference<double> impl_ILocalLocationRatingInfo<D>::AggregateRating() const
{
    Windows::Foundation::IReference<double> value;
    check_hresult(static_cast<const ILocalLocationRatingInfo &>(static_cast<const D &>(*this))->get_AggregateRating(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IReference<int32_t> impl_ILocalLocationRatingInfo<D>::RatingCount() const
{
    Windows::Foundation::IReference<int32_t> value;
    check_hresult(static_cast<const ILocalLocationRatingInfo &>(static_cast<const D &>(*this))->get_RatingCount(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalLocationRatingInfo<D>::ProviderIdentifier() const
{
    hstring value;
    check_hresult(static_cast<const ILocalLocationRatingInfo &>(static_cast<const D &>(*this))->get_ProviderIdentifier(put(value)));
    return value;
}

template <typename D> hstring impl_ILocalLocation2<D>::Category() const
{
    hstring value;
    check_hresult(static_cast<const ILocalLocation2 &>(static_cast<const D &>(*this))->get_Category(put(value)));
    return value;
}

template <typename D> Windows::Services::Maps::LocalSearch::LocalLocationRatingInfo impl_ILocalLocation2<D>::RatingInfo() const
{
    Windows::Services::Maps::LocalSearch::LocalLocationRatingInfo value { nullptr };
    check_hresult(static_cast<const ILocalLocation2 &>(static_cast<const D &>(*this))->get_RatingInfo(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Services::Maps::LocalSearch::LocalLocationHoursOfOperationItem> impl_ILocalLocation2<D>::HoursOfOperation() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Services::Maps::LocalSearch::LocalLocationHoursOfOperationItem> value;
    check_hresult(static_cast<const ILocalLocation2 &>(static_cast<const D &>(*this))->get_HoursOfOperation(put(value)));
    return value;
}

inline hstring LocalCategories::BankAndCreditUnions()
{
    return get_activation_factory<LocalCategories, ILocalCategoriesStatics>().BankAndCreditUnions();
}

inline hstring LocalCategories::EatDrink()
{
    return get_activation_factory<LocalCategories, ILocalCategoriesStatics>().EatDrink();
}

inline hstring LocalCategories::Hospitals()
{
    return get_activation_factory<LocalCategories, ILocalCategoriesStatics>().Hospitals();
}

inline hstring LocalCategories::HotelsAndMotels()
{
    return get_activation_factory<LocalCategories, ILocalCategoriesStatics>().HotelsAndMotels();
}

inline hstring LocalCategories::All()
{
    return get_activation_factory<LocalCategories, ILocalCategoriesStatics>().All();
}

inline hstring LocalCategories::Parking()
{
    return get_activation_factory<LocalCategories, ILocalCategoriesStatics>().Parking();
}

inline hstring LocalCategories::SeeDo()
{
    return get_activation_factory<LocalCategories, ILocalCategoriesStatics>().SeeDo();
}

inline hstring LocalCategories::Shop()
{
    return get_activation_factory<LocalCategories, ILocalCategoriesStatics>().Shop();
}

inline Windows::Foundation::IAsyncOperation<Windows::Services::Maps::LocalSearch::LocalLocationFinderResult> LocalLocationFinder::FindLocalLocationsAsync(hstring_ref searchTerm, const Windows::Devices::Geolocation::Geocircle & searchArea, hstring_ref localCategory, uint32_t maxResults)
{
    return get_activation_factory<LocalLocationFinder, ILocalLocationFinderStatics>().FindLocalLocationsAsync(searchTerm, searchArea, localCategory, maxResults);
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Data.Xml.Dom.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Data.Xml.Dom.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Storage.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Data::Xml::Dom {

struct __declspec(uuid("6a0b5ffc-63b4-480f-9e6a-8a92816aade4")) __declspec(novtable) IDtdEntity : Windows::IInspectable
{
    virtual HRESULT __stdcall get_PublicId(Windows::IInspectable ** value) = 0;
    virtual HRESULT __stdcall get_SystemId(Windows::IInspectable ** value) = 0;
    virtual HRESULT __stdcall get_NotationName(Windows::IInspectable ** value) = 0;
};

struct __declspec(uuid("8cb4e04d-6d46-4edb-ab73-df83c51ad397")) __declspec(novtable) IDtdNotation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_PublicId(Windows::IInspectable ** value) = 0;
    virtual HRESULT __stdcall get_SystemId(Windows::IInspectable ** value) = 0;
};

struct __declspec(uuid("ac144aa4-b4f1-4db6-b206-8a22c308db0a")) __declspec(novtable) IXmlAttribute : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Name(hstring * value) = 0;
    virtual HRESULT __stdcall get_Specified(bool * value) = 0;
    virtual HRESULT __stdcall get_Value(hstring * value) = 0;
    virtual HRESULT __stdcall put_Value(hstring value) = 0;
};

struct __declspec(uuid("4d04b46f-c8bd-45b4-8899-0400d7c2c60f")) __declspec(novtable) IXmlCDataSection : Windows::IInspectable
{
};

struct __declspec(uuid("132e42ab-4e36-4df6-b1c8-0ce62fd88b26")) __declspec(novtable) IXmlCharacterData : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Data(hstring * value) = 0;
    virtual HRESULT __stdcall put_Data(hstring value) = 0;
    virtual HRESULT __stdcall get_Length(uint32_t * value) = 0;
    virtual HRESULT __stdcall abi_SubstringData(uint32_t offset, uint32_t count, hstring * data) = 0;
    virtual HRESULT __stdcall abi_AppendData(hstring data) = 0;
    virtual HRESULT __stdcall abi_InsertData(uint32_t offset, hstring data) = 0;
    virtual HRESULT __stdcall abi_DeleteData(uint32_t offset, uint32_t count) = 0;
    virtual HRESULT __stdcall abi_ReplaceData(uint32_t offset, uint32_t count, hstring data) = 0;
};

struct __declspec(uuid("bca474d5-b61f-4611-9cac-2e92e3476d47")) __declspec(novtable) IXmlComment : Windows::IInspectable
{
};

struct __declspec(uuid("f7f3a506-1e87-42d6-bcfb-b8c809fa5494")) __declspec(novtable) IXmlDocument : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Doctype(Windows::Data::Xml::Dom::IXmlDocumentType ** value) = 0;
    virtual HRESULT __stdcall get_Implementation(Windows::Data::Xml::Dom::IXmlDomImplementation ** value) = 0;
    virtual HRESULT __stdcall get_DocumentElement(Windows::Data::Xml::Dom::IXmlElement ** value) = 0;
    virtual HRESULT __stdcall abi_CreateElement(hstring tagName, Windows::Data::Xml::Dom::IXmlElement ** newElement) = 0;
    virtual HRESULT __stdcall abi_CreateDocumentFragment(Windows::Data::Xml::Dom::IXmlDocumentFragment ** newDocumentFragment) = 0;
    virtual HRESULT __stdcall abi_CreateTextNode(hstring data, Windows::Data::Xml::Dom::IXmlText ** newTextNode) = 0;
    virtual HRESULT __stdcall abi_CreateComment(hstring data, Windows::Data::Xml::Dom::IXmlComment ** newComment) = 0;
    virtual HRESULT __stdcall abi_CreateProcessingInstruction(hstring target, hstring data, Windows::Data::Xml::Dom::IXmlProcessingInstruction ** newProcessingInstruction) = 0;
    virtual HRESULT __stdcall abi_CreateAttribute(hstring name, Windows::Data::Xml::Dom::IXmlAttribute ** newAttribute) = 0;
    virtual HRESULT __stdcall abi_CreateEntityReference(hstring name, Windows::Data::Xml::Dom::IXmlEntityReference ** newEntityReference) = 0;
    virtual HRESULT __stdcall abi_GetElementsByTagName(hstring tagName, Windows::Data::Xml::Dom::IXmlNodeList ** elements) = 0;
    virtual HRESULT __stdcall abi_CreateCDataSection(hstring data, Windows::Data::Xml::Dom::IXmlCDataSection ** newCDataSection) = 0;
    virtual HRESULT __stdcall get_DocumentUri(hstring * value) = 0;
    virtual HRESULT __stdcall abi_CreateAttributeNS(Windows::IInspectable * namespaceUri, hstring qualifiedName, Windows::Data::Xml::Dom::IXmlAttribute ** newAttribute) = 0;
    virtual HRESULT __stdcall abi_CreateElementNS(Windows::IInspectable * namespaceUri, hstring qualifiedName, Windows::Data::Xml::Dom::IXmlElement ** newElement) = 0;
    virtual HRESULT __stdcall abi_GetElementById(hstring elementId, Windows::Data::Xml::Dom::IXmlElement ** element) = 0;
    virtual HRESULT __stdcall abi_ImportNode(Windows::Data::Xml::Dom::IXmlNode * node, bool deep, Windows::Data::Xml::Dom::IXmlNode ** newNode) = 0;
};

struct __declspec(uuid("e2ea6a96-0c21-44a5-8bc9-9e4a262708ec")) __declspec(novtable) IXmlDocumentFragment : Windows::IInspectable
{
};

struct __declspec(uuid("6cd0e74e-ee65-4489-9ebf-ca43e87ba637")) __declspec(novtable) IXmlDocumentIO : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_LoadXml(hstring xml) = 0;
    virtual HRESULT __stdcall abi_LoadXmlWithSettings(hstring xml, Windows::Data::Xml::Dom::IXmlLoadSettings * loadSettings) = 0;
    virtual HRESULT __stdcall abi_SaveToFileAsync(Windows::Storage::IStorageFile * file, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("5d034661-7bd8-4ad5-9ebf-81e6347263b1")) __declspec(novtable) IXmlDocumentIO2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_LoadXmlFromBuffer(Windows::Storage::Streams::IBuffer * buffer) = 0;
    virtual HRESULT __stdcall abi_LoadXmlFromBufferWithSettings(Windows::Storage::Streams::IBuffer * buffer, Windows::Data::Xml::Dom::IXmlLoadSettings * loadSettings) = 0;
};

struct __declspec(uuid("5543d254-d757-4b79-9539-232b18f50bf1")) __declspec(novtable) IXmlDocumentStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_LoadFromUriAsync(Windows::Foundation::IUriRuntimeClass * uri, Windows::Foundation::IAsyncOperation<Windows::Data::Xml::Dom::XmlDocument> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_LoadFromUriWithSettingsAsync(Windows::Foundation::IUriRuntimeClass * uri, Windows::Data::Xml::Dom::IXmlLoadSettings * loadSettings, Windows::Foundation::IAsyncOperation<Windows::Data::Xml::Dom::XmlDocument> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_LoadFromFileAsync(Windows::Storage::IStorageFile * file, Windows::Foundation::IAsyncOperation<Windows::Data::Xml::Dom::XmlDocument> ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_LoadFromFileWithSettingsAsync(Windows::Storage::IStorageFile * file, Windows::Data::Xml::Dom::IXmlLoadSettings * loadSettings, Windows::Foundation::IAsyncOperation<Windows::Data::Xml::Dom::XmlDocument> ** asyncInfo) = 0;
};

struct __declspec(uuid("f7342425-9781-4964-8e94-9b1c6dfc9bc7")) __declspec(novtable) IXmlDocumentType : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Name(hstring * value) = 0;
    virtual HRESULT __stdcall get_Entities(Windows::Data::Xml::Dom::IXmlNamedNodeMap ** value) = 0;
    virtual HRESULT __stdcall get_Notations(Windows::Data::Xml::Dom::IXmlNamedNodeMap ** value) = 0;
};

struct __declspec(uuid("6de58132-f11d-4fbb-8cc6-583cba93112f")) __declspec(novtable) IXmlDomImplementation : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_HasFeature(hstring feature, Windows::IInspectable * version, bool * featureSupported) = 0;
};

struct __declspec(uuid("2dfb8a1f-6b10-4ef8-9f83-efcce8faec37")) __declspec(novtable) IXmlElement : Windows::IInspectable
{
    virtual HRESULT __stdcall get_TagName(hstring * value) = 0;
    virtual HRESULT __stdcall abi_GetAttribute(hstring attributeName, hstring * attributeValue) = 0;
    virtual HRESULT __stdcall abi_SetAttribute(hstring attributeName, hstring attributeValue) = 0;
    virtual HRESULT __stdcall abi_RemoveAttribute(hstring attributeName) = 0;
    virtual HRESULT __stdcall abi_GetAttributeNode(hstring attributeName, Windows::Data::Xml::Dom::IXmlAttribute ** attributeNode) = 0;
    virtual HRESULT __stdcall abi_SetAttributeNode(Windows::Data::Xml::Dom::IXmlAttribute * newAttribute, Windows::Data::Xml::Dom::IXmlAttribute ** previousAttribute) = 0;
    virtual HRESULT __stdcall abi_RemoveAttributeNode(Windows::Data::Xml::Dom::IXmlAttribute * attributeNode, Windows::Data::Xml::Dom::IXmlAttribute ** removedAttribute) = 0;
    virtual HRESULT __stdcall abi_GetElementsByTagName(hstring tagName, Windows::Data::Xml::Dom::IXmlNodeList ** elements) = 0;
    virtual HRESULT __stdcall abi_SetAttributeNS(Windows::IInspectable * namespaceUri, hstring qualifiedName, hstring value) = 0;
    virtual HRESULT __stdcall abi_GetAttributeNS(Windows::IInspectable * namespaceUri, hstring localName, hstring * value) = 0;
    virtual HRESULT __stdcall abi_RemoveAttributeNS(Windows::IInspectable * namespaceUri, hstring localName) = 0;
    virtual HRESULT __stdcall abi_SetAttributeNodeNS(Windows::Data::Xml::Dom::IXmlAttribute * newAttribute, Windows::Data::Xml::Dom::IXmlAttribute ** previousAttribute) = 0;
    virtual HRESULT __stdcall abi_GetAttributeNodeNS(Windows::IInspectable * namespaceUri, hstring localName, Windows::Data::Xml::Dom::IXmlAttribute ** previousAttribute) = 0;
};

struct __declspec(uuid("2e2f47bc-c3d0-4ccf-bb86-0ab8c36a61cf")) __declspec(novtable) IXmlEntityReference : Windows::IInspectable
{
};

struct __declspec(uuid("58aa07a8-fed6-46f7-b4c5-fb1ba72108d6")) __declspec(novtable) IXmlLoadSettings : Windows::IInspectable
{
    virtual HRESULT __stdcall get_MaxElementDepth(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_MaxElementDepth(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ProhibitDtd(bool * value) = 0;
    virtual HRESULT __stdcall put_ProhibitDtd(bool value) = 0;
    virtual HRESULT __stdcall get_ResolveExternals(bool * value) = 0;
    virtual HRESULT __stdcall put_ResolveExternals(bool value) = 0;
    virtual HRESULT __stdcall get_ValidateOnParse(bool * value) = 0;
    virtual HRESULT __stdcall put_ValidateOnParse(bool value) = 0;
    virtual HRESULT __stdcall get_ElementContentWhiteSpace(bool * value) = 0;
    virtual HRESULT __stdcall put_ElementContentWhiteSpace(bool value) = 0;
};

struct __declspec(uuid("b3a69eb0-aab0-4b82-a6fa-b1453f7c021b")) __declspec(novtable) IXmlNamedNodeMap : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Length(uint32_t * value) = 0;
    virtual HRESULT __stdcall abi_Item(uint32_t index, Windows::Data::Xml::Dom::IXmlNode ** node) = 0;
    virtual HRESULT __stdcall abi_GetNamedItem(hstring name, Windows::Data::Xml::Dom::IXmlNode ** node) = 0;
    virtual HRESULT __stdcall abi_SetNamedItem(Windows::Data::Xml::Dom::IXmlNode * node, Windows::Data::Xml::Dom::IXmlNode ** previousNode) = 0;
    virtual HRESULT __stdcall abi_RemoveNamedItem(hstring name, Windows::Data::Xml::Dom::IXmlNode ** previousNode) = 0;
    virtual HRESULT __stdcall abi_GetNamedItemNS(Windows::IInspectable * namespaceUri, hstring name, Windows::Data::Xml::Dom::IXmlNode ** node) = 0;
    virtual HRESULT __stdcall abi_RemoveNamedItemNS(Windows::IInspectable * namespaceUri, hstring name, Windows::Data::Xml::Dom::IXmlNode ** previousNode) = 0;
    virtual HRESULT __stdcall abi_SetNamedItemNS(Windows::Data::Xml::Dom::IXmlNode * node, Windows::Data::Xml::Dom::IXmlNode ** previousNode) = 0;
};

struct __declspec(uuid("1c741d59-2122-47d5-a856-83f3d4214875")) __declspec(novtable) IXmlNode : Windows::IInspectable
{
    virtual HRESULT __stdcall get_NodeValue(Windows::IInspectable ** value) = 0;
    virtual HRESULT __stdcall put_NodeValue(Windows::IInspectable * value) = 0;
    virtual HRESULT __stdcall get_NodeType(winrt::Windows::Data::Xml::Dom::NodeType * value) = 0;
    virtual HRESULT __stdcall get_NodeName(hstring * value) = 0;
    virtual HRESULT __stdcall get_ParentNode(Windows::Data::Xml::Dom::IXmlNode ** value) = 0;
    virtual HRESULT __stdcall get_ChildNodes(Windows::Data::Xml::Dom::IXmlNodeList ** value) = 0;
    virtual HRESULT __stdcall get_FirstChild(Windows::Data::Xml::Dom::IXmlNode ** value) = 0;
    virtual HRESULT __stdcall get_LastChild(Windows::Data::Xml::Dom::IXmlNode ** value) = 0;
    virtual HRESULT __stdcall get_PreviousSibling(Windows::Data::Xml::Dom::IXmlNode ** value) = 0;
    virtual HRESULT __stdcall get_NextSibling(Windows::Data::Xml::Dom::IXmlNode ** value) = 0;
    virtual HRESULT __stdcall get_Attributes(Windows::Data::Xml::Dom::IXmlNamedNodeMap ** value) = 0;
    virtual HRESULT __stdcall abi_HasChildNodes(bool * value) = 0;
    virtual HRESULT __stdcall get_OwnerDocument(Windows::Data::Xml::Dom::IXmlDocument ** value) = 0;
    virtual HRESULT __stdcall abi_InsertBefore(Windows::Data::Xml::Dom::IXmlNode * newChild, Windows::Data::Xml::Dom::IXmlNode * referenceChild, Windows::Data::Xml::Dom::IXmlNode ** insertedChild) = 0;
    virtual HRESULT __stdcall abi_ReplaceChild(Windows::Data::Xml::Dom::IXmlNode * newChild, Windows::Data::Xml::Dom::IXmlNode * referenceChild, Windows::Data::Xml::Dom::IXmlNode ** previousChild) = 0;
    virtual HRESULT __stdcall abi_RemoveChild(Windows::Data::Xml::Dom::IXmlNode * childNode, Windows::Data::Xml::Dom::IXmlNode ** removedChild) = 0;
    virtual HRESULT __stdcall abi_AppendChild(Windows::Data::Xml::Dom::IXmlNode * newChild, Windows::Data::Xml::Dom::IXmlNode ** appendedChild) = 0;
    virtual HRESULT __stdcall abi_CloneNode(bool deep, Windows::Data::Xml::Dom::IXmlNode ** newNode) = 0;
    virtual HRESULT __stdcall get_NamespaceUri(Windows::IInspectable ** value) = 0;
    virtual HRESULT __stdcall get_LocalName(Windows::IInspectable ** value) = 0;
    virtual HRESULT __stdcall get_Prefix(Windows::IInspectable ** value) = 0;
    virtual HRESULT __stdcall abi_Normalize() = 0;
    virtual HRESULT __stdcall put_Prefix(Windows::IInspectable * value) = 0;
};

struct __declspec(uuid("8c60ad77-83a4-4ec1-9c54-7ba429e13da6")) __declspec(novtable) IXmlNodeList : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Length(uint32_t * value) = 0;
    virtual HRESULT __stdcall abi_Item(uint32_t index, Windows::Data::Xml::Dom::IXmlNode ** node) = 0;
};

struct __declspec(uuid("63dbba8b-d0db-4fe1-b745-f9433afdc25b")) __declspec(novtable) IXmlNodeSelector : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_SelectSingleNode(hstring xpath, Windows::Data::Xml::Dom::IXmlNode ** node) = 0;
    virtual HRESULT __stdcall abi_SelectNodes(hstring xpath, Windows::Data::Xml::Dom::IXmlNodeList ** nodelist) = 0;
    virtual HRESULT __stdcall abi_SelectSingleNodeNS(hstring xpath, Windows::IInspectable * namespaces, Windows::Data::Xml::Dom::IXmlNode ** node) = 0;
    virtual HRESULT __stdcall abi_SelectNodesNS(hstring xpath, Windows::IInspectable * namespaces, Windows::Data::Xml::Dom::IXmlNodeList ** nodelist) = 0;
};

struct __declspec(uuid("5cc5b382-e6dd-4991-abef-06d8d2e7bd0c")) __declspec(novtable) IXmlNodeSerializer : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetXml(hstring * outerXml) = 0;
    virtual HRESULT __stdcall get_InnerText(hstring * value) = 0;
    virtual HRESULT __stdcall put_InnerText(hstring value) = 0;
};

struct __declspec(uuid("2707fd1e-1e92-4ece-b6f4-26f069078ddc")) __declspec(novtable) IXmlProcessingInstruction : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Target(hstring * value) = 0;
    virtual HRESULT __stdcall get_Data(hstring * value) = 0;
    virtual HRESULT __stdcall put_Data(hstring value) = 0;
};

struct __declspec(uuid("f931a4cb-308d-4760-a1d5-43b67450ac7e")) __declspec(novtable) IXmlText : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_SplitText(uint32_t offset, Windows::Data::Xml::Dom::IXmlText ** secondPart) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Data::Xml::Dom::DtdEntity> { using default_interface = Windows::Data::Xml::Dom::IDtdEntity; };
template <> struct traits<Windows::Data::Xml::Dom::DtdNotation> { using default_interface = Windows::Data::Xml::Dom::IDtdNotation; };
template <> struct traits<Windows::Data::Xml::Dom::XmlAttribute> { using default_interface = Windows::Data::Xml::Dom::IXmlAttribute; };
template <> struct traits<Windows::Data::Xml::Dom::XmlCDataSection> { using default_interface = Windows::Data::Xml::Dom::IXmlCDataSection; };
template <> struct traits<Windows::Data::Xml::Dom::XmlComment> { using default_interface = Windows::Data::Xml::Dom::IXmlComment; };
template <> struct traits<Windows::Data::Xml::Dom::XmlDocument> { using default_interface = Windows::Data::Xml::Dom::IXmlDocument; };
template <> struct traits<Windows::Data::Xml::Dom::XmlDocumentFragment> { using default_interface = Windows::Data::Xml::Dom::IXmlDocumentFragment; };
template <> struct traits<Windows::Data::Xml::Dom::XmlDocumentType> { using default_interface = Windows::Data::Xml::Dom::IXmlDocumentType; };
template <> struct traits<Windows::Data::Xml::Dom::XmlDomImplementation> { using default_interface = Windows::Data::Xml::Dom::IXmlDomImplementation; };
template <> struct traits<Windows::Data::Xml::Dom::XmlElement> { using default_interface = Windows::Data::Xml::Dom::IXmlElement; };
template <> struct traits<Windows::Data::Xml::Dom::XmlEntityReference> { using default_interface = Windows::Data::Xml::Dom::IXmlEntityReference; };
template <> struct traits<Windows::Data::Xml::Dom::XmlLoadSettings> { using default_interface = Windows::Data::Xml::Dom::IXmlLoadSettings; };
template <> struct traits<Windows::Data::Xml::Dom::XmlNamedNodeMap> { using default_interface = Windows::Data::Xml::Dom::IXmlNamedNodeMap; };
template <> struct traits<Windows::Data::Xml::Dom::XmlNodeList> { using default_interface = Windows::Data::Xml::Dom::IXmlNodeList; };
template <> struct traits<Windows::Data::Xml::Dom::XmlProcessingInstruction> { using default_interface = Windows::Data::Xml::Dom::IXmlProcessingInstruction; };
template <> struct traits<Windows::Data::Xml::Dom::XmlText> { using default_interface = Windows::Data::Xml::Dom::IXmlText; };

}

namespace Windows::Data::Xml::Dom {

template <typename T> struct impl_IDtdEntity;
template <typename T> struct impl_IDtdNotation;
template <typename T> struct impl_IXmlAttribute;
template <typename T> struct impl_IXmlCDataSection;
template <typename T> struct impl_IXmlCharacterData;
template <typename T> struct impl_IXmlComment;
template <typename T> struct impl_IXmlDocument;
template <typename T> struct impl_IXmlDocumentFragment;
template <typename T> struct impl_IXmlDocumentIO;
template <typename T> struct impl_IXmlDocumentIO2;
template <typename T> struct impl_IXmlDocumentStatics;
template <typename T> struct impl_IXmlDocumentType;
template <typename T> struct impl_IXmlDomImplementation;
template <typename T> struct impl_IXmlElement;
template <typename T> struct impl_IXmlEntityReference;
template <typename T> struct impl_IXmlLoadSettings;
template <typename T> struct impl_IXmlNamedNodeMap;
template <typename T> struct impl_IXmlNode;
template <typename T> struct impl_IXmlNodeList;
template <typename T> struct impl_IXmlNodeSelector;
template <typename T> struct impl_IXmlNodeSerializer;
template <typename T> struct impl_IXmlProcessingInstruction;
template <typename T> struct impl_IXmlText;

}

namespace impl {

template <> struct traits<Windows::Data::Xml::Dom::IDtdEntity>
{
    using abi = ABI::Windows::Data::Xml::Dom::IDtdEntity;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IDtdEntity<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IDtdNotation>
{
    using abi = ABI::Windows::Data::Xml::Dom::IDtdNotation;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IDtdNotation<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlAttribute>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlAttribute;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlAttribute<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlCDataSection>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlCDataSection;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlCDataSection<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlCharacterData>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlCharacterData;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlCharacterData<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlComment>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlComment;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlComment<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlDocument>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlDocument;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlDocument<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlDocumentFragment>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlDocumentFragment;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlDocumentFragment<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlDocumentIO>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlDocumentIO;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlDocumentIO<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlDocumentIO2>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlDocumentIO2;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlDocumentIO2<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlDocumentStatics>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlDocumentStatics;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlDocumentStatics<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlDocumentType>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlDocumentType;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlDocumentType<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlDomImplementation>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlDomImplementation;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlDomImplementation<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlElement>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlElement;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlElement<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlEntityReference>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlEntityReference;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlEntityReference<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlLoadSettings>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlLoadSettings;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlLoadSettings<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlNamedNodeMap>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlNamedNodeMap;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlNamedNodeMap<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlNode>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlNode;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlNode<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlNodeList>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlNodeList;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlNodeList<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlNodeSelector>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlNodeSelector;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlNodeSelector<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlNodeSerializer>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlNodeSerializer;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlNodeSerializer<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlProcessingInstruction>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlProcessingInstruction;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlProcessingInstruction<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::IXmlText>
{
    using abi = ABI::Windows::Data::Xml::Dom::IXmlText;
    template <typename D> using consume = Windows::Data::Xml::Dom::impl_IXmlText<D>;
};

template <> struct traits<Windows::Data::Xml::Dom::DtdEntity>
{
    using abi = ABI::Windows::Data::Xml::Dom::DtdEntity;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.DtdEntity"; }
};

template <> struct traits<Windows::Data::Xml::Dom::DtdNotation>
{
    using abi = ABI::Windows::Data::Xml::Dom::DtdNotation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.DtdNotation"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlAttribute>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlAttribute;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlAttribute"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlCDataSection>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlCDataSection;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlCDataSection"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlComment>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlComment;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlComment"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlDocument>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlDocument;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlDocument"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlDocumentFragment>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlDocumentFragment;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlDocumentFragment"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlDocumentType>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlDocumentType;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlDocumentType"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlDomImplementation>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlDomImplementation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlDomImplementation"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlElement>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlElement;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlElement"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlEntityReference>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlEntityReference;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlEntityReference"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlLoadSettings>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlLoadSettings;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlLoadSettings"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlNamedNodeMap>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlNamedNodeMap;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlNamedNodeMap"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlNodeList>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlNodeList;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlNodeList"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlProcessingInstruction>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlProcessingInstruction;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlProcessingInstruction"; }
};

template <> struct traits<Windows::Data::Xml::Dom::XmlText>
{
    using abi = ABI::Windows::Data::Xml::Dom::XmlText;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Data.Xml.Dom.XmlText"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Services.Maps.Guidance.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Services.Maps.Guidance.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Services::Maps::Guidance {

struct WINRT_EBO GuidanceAudioNotificationRequestedEventArgs :
    Windows::Services::Maps::Guidance::IGuidanceAudioNotificationRequestedEventArgs
{
    GuidanceAudioNotificationRequestedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO GuidanceLaneInfo :
    Windows::Services::Maps::Guidance::IGuidanceLaneInfo
{
    GuidanceLaneInfo(std::nullptr_t) noexcept {}
};

struct WINRT_EBO GuidanceManeuver :
    Windows::Services::Maps::Guidance::IGuidanceManeuver
{
    GuidanceManeuver(std::nullptr_t) noexcept {}
};

struct WINRT_EBO GuidanceMapMatchedCoordinate :
    Windows::Services::Maps::Guidance::IGuidanceMapMatchedCoordinate
{
    GuidanceMapMatchedCoordinate(std::nullptr_t) noexcept {}
};

struct WINRT_EBO GuidanceNavigator :
    Windows::Services::Maps::Guidance::IGuidanceNavigator,
    impl::require<GuidanceNavigator, Windows::Services::Maps::Guidance::IGuidanceNavigator2>
{
    GuidanceNavigator(std::nullptr_t) noexcept {}
    static Windows::Services::Maps::Guidance::GuidanceNavigator GetCurrent();
    static bool UseAppProvidedVoice();
};

struct WINRT_EBO GuidanceReroutedEventArgs :
    Windows::Services::Maps::Guidance::IGuidanceReroutedEventArgs
{
    GuidanceReroutedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO GuidanceRoadSegment :
    Windows::Services::Maps::Guidance::IGuidanceRoadSegment
{
    GuidanceRoadSegment(std::nullptr_t) noexcept {}
};

struct WINRT_EBO GuidanceRoadSignpost :
    Windows::Services::Maps::Guidance::IGuidanceRoadSignpost
{
    GuidanceRoadSignpost(std::nullptr_t) noexcept {}
};

struct WINRT_EBO GuidanceRoute :
    Windows::Services::Maps::Guidance::IGuidanceRoute
{
    GuidanceRoute(std::nullptr_t) noexcept {}
    static bool CanCreateFromMapRoute(const Windows::Services::Maps::MapRoute & mapRoute);
    static Windows::Services::Maps::Guidance::GuidanceRoute TryCreateFromMapRoute(const Windows::Services::Maps::MapRoute & mapRoute);
};

struct WINRT_EBO GuidanceTelemetryCollector :
    Windows::Services::Maps::Guidance::IGuidanceTelemetryCollector
{
    GuidanceTelemetryCollector(std::nullptr_t) noexcept {}
    static Windows::Services::Maps::Guidance::GuidanceTelemetryCollector GetCurrent();
};

struct WINRT_EBO GuidanceUpdatedEventArgs :
    Windows::Services::Maps::Guidance::IGuidanceUpdatedEventArgs
{
    GuidanceUpdatedEventArgs(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Management.Core.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Storage.3.h"
#include "internal/Windows.Management.Core.3.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Management::Core::IApplicationDataManager> : produce_base<D, Windows::Management::Core::IApplicationDataManager>
{};

template <typename D>
struct produce<D, Windows::Management::Core::IApplicationDataManagerStatics> : produce_base<D, Windows::Management::Core::IApplicationDataManagerStatics>
{
    HRESULT __stdcall abi_CreateForPackageFamily(abi_arg_in<hstring> packageFamilyName, abi_arg_out<Windows::Storage::IApplicationData> applicationData) noexcept override
    {
        try
        {
            *applicationData = detach(this->shim().CreateForPackageFamily(*reinterpret_cast<const hstring *>(&packageFamilyName)));
            return S_OK;
        }
        catch (...)
        {
            *applicationData = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Management::Core {

template <typename D> Windows::Storage::ApplicationData impl_IApplicationDataManagerStatics<D>::CreateForPackageFamily(hstring_ref packageFamilyName) const
{
    Windows::Storage::ApplicationData applicationData { nullptr };
    check_hresult(static_cast<const IApplicationDataManagerStatics &>(static_cast<const D &>(*this))->abi_CreateForPackageFamily(get(packageFamilyName), put(applicationData)));
    return applicationData;
}

inline Windows::Storage::ApplicationData ApplicationDataManager::CreateForPackageFamily(hstring_ref packageFamilyName)
{
    return get_activation_factory<ApplicationDataManager, IApplicationDataManagerStatics>().CreateForPackageFamily(packageFamilyName);
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Controls.Primitives.5.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.UI.Xaml.Controls.4.h"
#include "Windows.UI.Xaml.4.h"

WINRT_EXPORT namespace winrt {

namespace Windows::UI::Xaml::Controls::Primitives {

template <typename D, typename ... Interfaces> struct ButtonBaseT :
    overrides<D, Windows::UI::Xaml::Controls::IContentControlOverridesT<D>, Windows::UI::Xaml::IUIElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverrides2T<D>, Windows::UI::Xaml::Controls::IControlOverridesT<D>, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Controls::IContentControl, Windows::UI::Xaml::Controls::IContentControl2, Windows::UI::Xaml::Controls::Primitives::IButtonBase, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::IUIElement, Windows::UI::Xaml::IUIElement2, Windows::UI::Xaml::IUIElement3, Windows::UI::Xaml::IUIElement4, Windows::UI::Xaml::IFrameworkElement, Windows::UI::Xaml::IFrameworkElement2, Windows::UI::Xaml::IFrameworkElement3, Windows::UI::Xaml::IFrameworkElement4, Windows::UI::Xaml::Controls::IControl, Windows::UI::Xaml::Controls::IControlProtected, Windows::UI::Xaml::Controls::IControl2, Windows::UI::Xaml::Controls::IControl3, Windows::UI::Xaml::Controls::IControl4>
{
    using composable = ButtonBase;

protected:

    ButtonBaseT()
    {
        get_activation_factory<ButtonBase, IButtonBaseFactory>().CreateInstance(*this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct CarouselPanelT :
    overrides<D, Windows::UI::Xaml::Controls::IVirtualizingPanelOverridesT<D>, Windows::UI::Xaml::IUIElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverrides2T<D>, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Controls::IPanel, Windows::UI::Xaml::Controls::IVirtualizingPanel, Windows::UI::Xaml::Controls::IVirtualizingPanelProtected, Windows::UI::Xaml::Controls::Primitives::IScrollSnapPointsInfo, Windows::UI::Xaml::Controls::Primitives::ICarouselPanel, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::IUIElement, Windows::UI::Xaml::IUIElement2, Windows::UI::Xaml::IUIElement3, Windows::UI::Xaml::IUIElement4, Windows::UI::Xaml::IFrameworkElement, Windows::UI::Xaml::IFrameworkElement2, Windows::UI::Xaml::IFrameworkElement3, Windows::UI::Xaml::IFrameworkElement4>
{
    using composable = CarouselPanel;

protected:

    CarouselPanelT()
    {
        get_activation_factory<CarouselPanel, ICarouselPanelFactory>().CreateInstance(*this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct DragCompletedEventArgsT :
    overrides<D, Windows::IInspectable, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Controls::Primitives::IDragCompletedEventArgs, Windows::UI::Xaml::IRoutedEventArgs>
{
    using composable = DragCompletedEventArgs;

protected:

    DragCompletedEventArgsT(double horizontalChange, double verticalChange, bool canceled)
    {
        get_activation_factory<DragCompletedEventArgs, IDragCompletedEventArgsFactory>().CreateInstanceWithHorizontalChangeVerticalChangeAndCanceled(horizontalChange, verticalChange, canceled, *this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct DragDeltaEventArgsT :
    overrides<D, Windows::IInspectable, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Controls::Primitives::IDragDeltaEventArgs, Windows::UI::Xaml::IRoutedEventArgs>
{
    using composable = DragDeltaEventArgs;

protected:

    DragDeltaEventArgsT(double horizontalChange, double verticalChange)
    {
        get_activation_factory<DragDeltaEventArgs, IDragDeltaEventArgsFactory>().CreateInstanceWithHorizontalChangeAndVerticalChange(horizontalChange, verticalChange, *this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct DragStartedEventArgsT :
    overrides<D, Windows::IInspectable, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Controls::Primitives::IDragStartedEventArgs, Windows::UI::Xaml::IRoutedEventArgs>
{
    using composable = DragStartedEventArgs;

protected:

    DragStartedEventArgsT(double horizontalOffset, double verticalOffset)
    {
        get_activation_factory<DragStartedEventArgs, IDragStartedEventArgsFactory>().CreateInstanceWithHorizontalOffsetAndVerticalOffset(horizontalOffset, verticalOffset, *this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct FlyoutBaseT :
    overrides<D, Windows::UI::Xaml::Controls::Primitives::IFlyoutBaseOverridesT<D>, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::Controls::Primitives::IFlyoutBase, Windows::UI::Xaml::Controls::Primitives::IFlyoutBase2>
{
    using composable = FlyoutBase;

protected:

    FlyoutBaseT()
    {
        get_activation_factory<FlyoutBase, IFlyoutBaseFactory>().CreateInstance(*this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct GridViewItemPresenterT :
    overrides<D, Windows::UI::Xaml::Controls::IContentPresenterOverridesT<D>, Windows::UI::Xaml::IUIElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverrides2T<D>, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Controls::IContentPresenter, Windows::UI::Xaml::Controls::IContentPresenter2, Windows::UI::Xaml::Controls::IContentPresenter3, Windows::UI::Xaml::Controls::IContentPresenter4, Windows::UI::Xaml::Controls::Primitives::IGridViewItemPresenter, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::IUIElement, Windows::UI::Xaml::IUIElement2, Windows::UI::Xaml::IUIElement3, Windows::UI::Xaml::IUIElement4, Windows::UI::Xaml::IFrameworkElement, Windows::UI::Xaml::IFrameworkElement2, Windows::UI::Xaml::IFrameworkElement3, Windows::UI::Xaml::IFrameworkElement4>
{
    using composable = GridViewItemPresenter;

protected:

    GridViewItemPresenterT()
    {
        get_activation_factory<GridViewItemPresenter, IGridViewItemPresenterFactory>().CreateInstance(*this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct ListViewItemPresenterT :
    overrides<D, Windows::UI::Xaml::Controls::IContentPresenterOverridesT<D>, Windows::UI::Xaml::IUIElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverrides2T<D>, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Controls::IContentPresenter, Windows::UI::Xaml::Controls::IContentPresenter2, Windows::UI::Xaml::Controls::IContentPresenter3, Windows::UI::Xaml::Controls::IContentPresenter4, Windows::UI::Xaml::Controls::Primitives::IListViewItemPresenter, Windows::UI::Xaml::Controls::Primitives::IListViewItemPresenter2, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::IUIElement, Windows::UI::Xaml::IUIElement2, Windows::UI::Xaml::IUIElement3, Windows::UI::Xaml::IUIElement4, Windows::UI::Xaml::IFrameworkElement, Windows::UI::Xaml::IFrameworkElement2, Windows::UI::Xaml::IFrameworkElement3, Windows::UI::Xaml::IFrameworkElement4>
{
    using composable = ListViewItemPresenter;

protected:

    ListViewItemPresenterT()
    {
        get_activation_factory<ListViewItemPresenter, IListViewItemPresenterFactory>().CreateInstance(*this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct PickerFlyoutBaseT :
    overrides<D, Windows::UI::Xaml::Controls::Primitives::IFlyoutBaseOverridesT<D>, Windows::UI::Xaml::Controls::Primitives::IPickerFlyoutBaseOverridesT<D>, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::Controls::Primitives::IFlyoutBase, Windows::UI::Xaml::Controls::Primitives::IFlyoutBase2, Windows::UI::Xaml::Controls::Primitives::IPickerFlyoutBase>
{
    using composable = PickerFlyoutBase;

protected:

    PickerFlyoutBaseT()
    {
        get_activation_factory<PickerFlyoutBase, IPickerFlyoutBaseFactory>().CreateInstance(*this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct PivotHeaderItemT :
    overrides<D, Windows::UI::Xaml::Controls::IContentControlOverridesT<D>, Windows::UI::Xaml::IUIElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverrides2T<D>, Windows::UI::Xaml::Controls::IControlOverridesT<D>, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Controls::IContentControl, Windows::UI::Xaml::Controls::IContentControl2, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::IUIElement, Windows::UI::Xaml::IUIElement2, Windows::UI::Xaml::IUIElement3, Windows::UI::Xaml::IUIElement4, Windows::UI::Xaml::IFrameworkElement, Windows::UI::Xaml::IFrameworkElement2, Windows::UI::Xaml::IFrameworkElement3, Windows::UI::Xaml::IFrameworkElement4, Windows::UI::Xaml::Controls::IControl, Windows::UI::Xaml::Controls::IControlProtected, Windows::UI::Xaml::Controls::IControl2, Windows::UI::Xaml::Controls::IControl3, Windows::UI::Xaml::Controls::IControl4, Windows::UI::Xaml::Controls::Primitives::IPivotHeaderItem>
{
    using composable = PivotHeaderItem;

protected:

    PivotHeaderItemT()
    {
        get_activation_factory<PivotHeaderItem, IPivotHeaderItemFactory>().CreateInstance(*this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct RangeBaseT :
    overrides<D, Windows::UI::Xaml::Controls::Primitives::IRangeBaseOverridesT<D>, Windows::UI::Xaml::IUIElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverrides2T<D>, Windows::UI::Xaml::Controls::IControlOverridesT<D>, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Controls::Primitives::IRangeBase, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::IUIElement, Windows::UI::Xaml::IUIElement2, Windows::UI::Xaml::IUIElement3, Windows::UI::Xaml::IUIElement4, Windows::UI::Xaml::IFrameworkElement, Windows::UI::Xaml::IFrameworkElement2, Windows::UI::Xaml::IFrameworkElement3, Windows::UI::Xaml::IFrameworkElement4, Windows::UI::Xaml::Controls::IControl, Windows::UI::Xaml::Controls::IControlProtected, Windows::UI::Xaml::Controls::IControl2, Windows::UI::Xaml::Controls::IControl3, Windows::UI::Xaml::Controls::IControl4>
{
    using composable = RangeBase;

protected:

    RangeBaseT()
    {
        get_activation_factory<RangeBase, IRangeBaseFactory>().CreateInstance(*this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct SelectorItemT :
    overrides<D, Windows::UI::Xaml::Controls::IContentControlOverridesT<D>, Windows::UI::Xaml::IUIElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverrides2T<D>, Windows::UI::Xaml::Controls::IControlOverridesT<D>, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Controls::IContentControl, Windows::UI::Xaml::Controls::IContentControl2, Windows::UI::Xaml::Controls::Primitives::ISelectorItem, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::IUIElement, Windows::UI::Xaml::IUIElement2, Windows::UI::Xaml::IUIElement3, Windows::UI::Xaml::IUIElement4, Windows::UI::Xaml::IFrameworkElement, Windows::UI::Xaml::IFrameworkElement2, Windows::UI::Xaml::IFrameworkElement3, Windows::UI::Xaml::IFrameworkElement4, Windows::UI::Xaml::Controls::IControl, Windows::UI::Xaml::Controls::IControlProtected, Windows::UI::Xaml::Controls::IControl2, Windows::UI::Xaml::Controls::IControl3, Windows::UI::Xaml::Controls::IControl4>
{
    using composable = SelectorItem;

protected:

    SelectorItemT()
    {
        get_activation_factory<SelectorItem, ISelectorItemFactory>().CreateInstance(*this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct ToggleButtonT :
    overrides<D, Windows::UI::Xaml::Controls::IContentControlOverridesT<D>, Windows::UI::Xaml::Controls::Primitives::IToggleButtonOverridesT<D>, Windows::UI::Xaml::IUIElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverridesT<D>, Windows::UI::Xaml::IFrameworkElementOverrides2T<D>, Windows::UI::Xaml::Controls::IControlOverridesT<D>, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Controls::IContentControl, Windows::UI::Xaml::Controls::IContentControl2, Windows::UI::Xaml::Controls::Primitives::IButtonBase, Windows::UI::Xaml::Controls::Primitives::IToggleButton, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::IUIElement, Windows::UI::Xaml::IUIElement2, Windows::UI::Xaml::IUIElement3, Windows::UI::Xaml::IUIElement4, Windows::UI::Xaml::IFrameworkElement, Windows::UI::Xaml::IFrameworkElement2, Windows::UI::Xaml::IFrameworkElement3, Windows::UI::Xaml::IFrameworkElement4, Windows::UI::Xaml::Controls::IControl, Windows::UI::Xaml::Controls::IControlProtected, Windows::UI::Xaml::Controls::IControl2, Windows::UI::Xaml::Controls::IControl3, Windows::UI::Xaml::Controls::IControl4>
{
    using composable = ToggleButton;

protected:

    ToggleButtonT()
    {
        get_activation_factory<ToggleButton, IToggleButtonFactory>().CreateInstance(*this, this->m_inner);
    }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.ApplicationModel.UserDataAccounts.SystemAccess.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Security.Credentials.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.ApplicationModel.UserDataAccounts.SystemAccess.3.h"
#include "Windows.ApplicationModel.UserDataAccounts.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::ApplicationModel::UserDataAccounts::SystemAccess::IDeviceAccountConfiguration> : produce_base<D, Windows::ApplicationModel::UserDataAccounts::SystemAccess::IDeviceAccountConfiguration>
{
    HRESULT __stdcall get_AccountName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AccountName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AccountName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().AccountName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DeviceAccountTypeId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DeviceAccountTypeId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DeviceAccountTypeId(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().DeviceAccountTypeId(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ServerType(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountServerType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ServerType());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ServerType(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountServerType value) noexcept override
    {
        try
        {
            this->shim().ServerType(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailAddress(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailAddress());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_EmailAddress(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().EmailAddress(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Domain(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Domain());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Domain(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Domain(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailSyncEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailSyncEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_EmailSyncEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().EmailSyncEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ContactsSyncEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ContactsSyncEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ContactsSyncEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().ContactsSyncEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CalendarSyncEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CalendarSyncEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CalendarSyncEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().CalendarSyncEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IncomingServerAddress(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IncomingServerAddress());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IncomingServerAddress(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().IncomingServerAddress(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IncomingServerPort(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IncomingServerPort());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IncomingServerPort(int32_t value) noexcept override
    {
        try
        {
            this->shim().IncomingServerPort(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IncomingServerRequiresSsl(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IncomingServerRequiresSsl());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IncomingServerRequiresSsl(bool value) noexcept override
    {
        try
        {
            this->shim().IncomingServerRequiresSsl(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IncomingServerUsername(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IncomingServerUsername());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IncomingServerUsername(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().IncomingServerUsername(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OutgoingServerAddress(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OutgoingServerAddress());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_OutgoingServerAddress(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().OutgoingServerAddress(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OutgoingServerPort(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OutgoingServerPort());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_OutgoingServerPort(int32_t value) noexcept override
    {
        try
        {
            this->shim().OutgoingServerPort(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OutgoingServerRequiresSsl(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OutgoingServerRequiresSsl());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_OutgoingServerRequiresSsl(bool value) noexcept override
    {
        try
        {
            this->shim().OutgoingServerRequiresSsl(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OutgoingServerUsername(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OutgoingServerUsername());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_OutgoingServerUsername(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().OutgoingServerUsername(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::UserDataAccounts::SystemAccess::IDeviceAccountConfiguration2> : produce_base<D, Windows::ApplicationModel::UserDataAccounts::SystemAccess::IDeviceAccountConfiguration2>
{
    HRESULT __stdcall get_IncomingServerCredential(abi_arg_out<Windows::Security::Credentials::IPasswordCredential> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IncomingServerCredential());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IncomingServerCredential(abi_arg_in<Windows::Security::Credentials::IPasswordCredential> value) noexcept override
    {
        try
        {
            this->shim().IncomingServerCredential(*reinterpret_cast<const Windows::Security::Credentials::PasswordCredential *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OutgoingServerCredential(abi_arg_out<Windows::Security::Credentials::IPasswordCredential> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OutgoingServerCredential());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_OutgoingServerCredential(abi_arg_in<Windows::Security::Credentials::IPasswordCredential> value) noexcept override
    {
        try
        {
            this->shim().OutgoingServerCredential(*reinterpret_cast<const Windows::Security::Credentials::PasswordCredential *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OAuthRefreshToken(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OAuthRefreshToken());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_OAuthRefreshToken(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().OAuthRefreshToken(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsExternallyManaged(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsExternallyManaged());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IsExternallyManaged(bool value) noexcept override
    {
        try
        {
            this->shim().IsExternallyManaged(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AccountIconId(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountIconId * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AccountIconId());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AccountIconId(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountIconId value) noexcept override
    {
        try
        {
            this->shim().AccountIconId(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AuthenticationType(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountAuthenticationType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AuthenticationType());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AuthenticationType(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountAuthenticationType value) noexcept override
    {
        try
        {
            this->shim().AuthenticationType(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsSsoAuthenticationSupported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsSsoAuthenticationSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SsoAccountId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SsoAccountId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SsoAccountId(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().SsoAccountId(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AlwaysDownloadFullMessage(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AlwaysDownloadFullMessage());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AlwaysDownloadFullMessage(bool value) noexcept override
    {
        try
        {
            this->shim().AlwaysDownloadFullMessage(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DoesPolicyAllowMailSync(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DoesPolicyAllowMailSync());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SyncScheduleKind(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SyncScheduleKind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SyncScheduleKind(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind value) noexcept override
    {
        try
        {
            this->shim().SyncScheduleKind(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MailAgeFilter(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountMailAgeFilter * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MailAgeFilter());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_MailAgeFilter(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountMailAgeFilter value) noexcept override
    {
        try
        {
            this->shim().MailAgeFilter(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsClientAuthenticationCertificateRequired(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsClientAuthenticationCertificateRequired());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IsClientAuthenticationCertificateRequired(bool value) noexcept override
    {
        try
        {
            this->shim().IsClientAuthenticationCertificateRequired(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AutoSelectAuthenticationCertificate(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AutoSelectAuthenticationCertificate());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AutoSelectAuthenticationCertificate(bool value) noexcept override
    {
        try
        {
            this->shim().AutoSelectAuthenticationCertificate(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AuthenticationCertificateId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AuthenticationCertificateId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AuthenticationCertificateId(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().AuthenticationCertificateId(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CardDavSyncScheduleKind(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CardDavSyncScheduleKind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CardDavSyncScheduleKind(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind value) noexcept override
    {
        try
        {
            this->shim().CardDavSyncScheduleKind(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CalDavSyncScheduleKind(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CalDavSyncScheduleKind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CalDavSyncScheduleKind(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind value) noexcept override
    {
        try
        {
            this->shim().CalDavSyncScheduleKind(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CardDavServerUrl(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CardDavServerUrl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CardDavServerUrl(abi_arg_in<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            this->shim().CardDavServerUrl(*reinterpret_cast<const Windows::Foundation::Uri *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CardDavRequiresSsl(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CardDavRequiresSsl());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CardDavRequiresSsl(bool value) noexcept override
    {
        try
        {
            this->shim().CardDavRequiresSsl(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CalDavServerUrl(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CalDavServerUrl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CalDavServerUrl(abi_arg_in<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            this->shim().CalDavServerUrl(*reinterpret_cast<const Windows::Foundation::Uri *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CalDavRequiresSsl(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CalDavRequiresSsl());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CalDavRequiresSsl(bool value) noexcept override
    {
        try
        {
            this->shim().CalDavRequiresSsl(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WasModifiedByUser(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WasModifiedByUser());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_WasModifiedByUser(bool value) noexcept override
    {
        try
        {
            this->shim().WasModifiedByUser(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WasIncomingServerCertificateHashConfirmed(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WasIncomingServerCertificateHashConfirmed());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_WasIncomingServerCertificateHashConfirmed(bool value) noexcept override
    {
        try
        {
            this->shim().WasIncomingServerCertificateHashConfirmed(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IncomingServerCertificateHash(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IncomingServerCertificateHash());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IncomingServerCertificateHash(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().IncomingServerCertificateHash(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsOutgoingServerAuthenticationRequired(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsOutgoingServerAuthenticationRequired());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IsOutgoingServerAuthenticationRequired(bool value) noexcept override
    {
        try
        {
            this->shim().IsOutgoingServerAuthenticationRequired(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsOutgoingServerAuthenticationEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsOutgoingServerAuthenticationEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IsOutgoingServerAuthenticationEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().IsOutgoingServerAuthenticationEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WasOutgoingServerCertificateHashConfirmed(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WasOutgoingServerCertificateHashConfirmed());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_WasOutgoingServerCertificateHashConfirmed(bool value) noexcept override
    {
        try
        {
            this->shim().WasOutgoingServerCertificateHashConfirmed(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OutgoingServerCertificateHash(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OutgoingServerCertificateHash());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_OutgoingServerCertificateHash(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().OutgoingServerCertificateHash(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsSyncScheduleManagedBySystem(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsSyncScheduleManagedBySystem());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IsSyncScheduleManagedBySystem(bool value) noexcept override
    {
        try
        {
            this->shim().IsSyncScheduleManagedBySystem(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::UserDataAccounts::SystemAccess::IUserDataAccountSystemAccessManagerStatics> : produce_base<D, Windows::ApplicationModel::UserDataAccounts::SystemAccess::IUserDataAccountSystemAccessManagerStatics>
{
    HRESULT __stdcall abi_AddAndShowDeviceAccountsAsync(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountConfiguration>> accounts, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<hstring>>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().AddAndShowDeviceAccountsAsync(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountConfiguration> *>(&accounts)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::UserDataAccounts::SystemAccess::IUserDataAccountSystemAccessManagerStatics2> : produce_base<D, Windows::ApplicationModel::UserDataAccounts::SystemAccess::IUserDataAccountSystemAccessManagerStatics2>
{
    HRESULT __stdcall abi_SuppressLocalAccountWithAccountAsync(abi_arg_in<hstring> userDataAccountId, abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().SuppressLocalAccountWithAccountAsync(*reinterpret_cast<const hstring *>(&userDataAccountId)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateDeviceAccountAsync(abi_arg_in<Windows::ApplicationModel::UserDataAccounts::SystemAccess::IDeviceAccountConfiguration> account, abi_arg_out<Windows::Foundation::IAsyncOperation<hstring>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateDeviceAccountAsync(*reinterpret_cast<const Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountConfiguration *>(&account)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_DeleteDeviceAccountAsync(abi_arg_in<hstring> accountId, abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().DeleteDeviceAccountAsync(*reinterpret_cast<const hstring *>(&accountId)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeviceAccountConfigurationAsync(abi_arg_in<hstring> accountId, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountConfiguration>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetDeviceAccountConfigurationAsync(*reinterpret_cast<const hstring *>(&accountId)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::ApplicationModel::UserDataAccounts::SystemAccess {

template <typename D> hstring impl_IDeviceAccountConfiguration<D>::AccountName() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_AccountName(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::AccountName(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_AccountName(get(value)));
}

template <typename D> hstring impl_IDeviceAccountConfiguration<D>::DeviceAccountTypeId() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_DeviceAccountTypeId(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::DeviceAccountTypeId(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_DeviceAccountTypeId(get(value)));
}

template <typename D> Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountServerType impl_IDeviceAccountConfiguration<D>::ServerType() const
{
    Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountServerType value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_ServerType(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::ServerType(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountServerType value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_ServerType(value));
}

template <typename D> hstring impl_IDeviceAccountConfiguration<D>::EmailAddress() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_EmailAddress(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::EmailAddress(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_EmailAddress(get(value)));
}

template <typename D> hstring impl_IDeviceAccountConfiguration<D>::Domain() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_Domain(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::Domain(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_Domain(get(value)));
}

template <typename D> bool impl_IDeviceAccountConfiguration<D>::EmailSyncEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_EmailSyncEnabled(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::EmailSyncEnabled(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_EmailSyncEnabled(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration<D>::ContactsSyncEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_ContactsSyncEnabled(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::ContactsSyncEnabled(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_ContactsSyncEnabled(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration<D>::CalendarSyncEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_CalendarSyncEnabled(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::CalendarSyncEnabled(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_CalendarSyncEnabled(value));
}

template <typename D> hstring impl_IDeviceAccountConfiguration<D>::IncomingServerAddress() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_IncomingServerAddress(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::IncomingServerAddress(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_IncomingServerAddress(get(value)));
}

template <typename D> int32_t impl_IDeviceAccountConfiguration<D>::IncomingServerPort() const
{
    int32_t value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_IncomingServerPort(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::IncomingServerPort(int32_t value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_IncomingServerPort(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration<D>::IncomingServerRequiresSsl() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_IncomingServerRequiresSsl(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::IncomingServerRequiresSsl(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_IncomingServerRequiresSsl(value));
}

template <typename D> hstring impl_IDeviceAccountConfiguration<D>::IncomingServerUsername() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_IncomingServerUsername(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::IncomingServerUsername(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_IncomingServerUsername(get(value)));
}

template <typename D> hstring impl_IDeviceAccountConfiguration<D>::OutgoingServerAddress() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_OutgoingServerAddress(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::OutgoingServerAddress(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_OutgoingServerAddress(get(value)));
}

template <typename D> int32_t impl_IDeviceAccountConfiguration<D>::OutgoingServerPort() const
{
    int32_t value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_OutgoingServerPort(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::OutgoingServerPort(int32_t value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_OutgoingServerPort(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration<D>::OutgoingServerRequiresSsl() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_OutgoingServerRequiresSsl(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::OutgoingServerRequiresSsl(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_OutgoingServerRequiresSsl(value));
}

template <typename D> hstring impl_IDeviceAccountConfiguration<D>::OutgoingServerUsername() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->get_OutgoingServerUsername(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration<D>::OutgoingServerUsername(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration &>(static_cast<const D &>(*this))->put_OutgoingServerUsername(get(value)));
}

template <typename D> Windows::Security::Credentials::PasswordCredential impl_IDeviceAccountConfiguration2<D>::IncomingServerCredential() const
{
    Windows::Security::Credentials::PasswordCredential value { nullptr };
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_IncomingServerCredential(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::IncomingServerCredential(const Windows::Security::Credentials::PasswordCredential & value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_IncomingServerCredential(get(value)));
}

template <typename D> Windows::Security::Credentials::PasswordCredential impl_IDeviceAccountConfiguration2<D>::OutgoingServerCredential() const
{
    Windows::Security::Credentials::PasswordCredential value { nullptr };
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_OutgoingServerCredential(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::OutgoingServerCredential(const Windows::Security::Credentials::PasswordCredential & value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_OutgoingServerCredential(get(value)));
}

template <typename D> hstring impl_IDeviceAccountConfiguration2<D>::OAuthRefreshToken() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_OAuthRefreshToken(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::OAuthRefreshToken(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_OAuthRefreshToken(get(value)));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::IsExternallyManaged() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_IsExternallyManaged(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::IsExternallyManaged(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_IsExternallyManaged(value));
}

template <typename D> Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountIconId impl_IDeviceAccountConfiguration2<D>::AccountIconId() const
{
    Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountIconId value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_AccountIconId(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::AccountIconId(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountIconId value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_AccountIconId(value));
}

template <typename D> Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountAuthenticationType impl_IDeviceAccountConfiguration2<D>::AuthenticationType() const
{
    Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountAuthenticationType value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_AuthenticationType(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::AuthenticationType(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountAuthenticationType value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_AuthenticationType(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::IsSsoAuthenticationSupported() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_IsSsoAuthenticationSupported(&value));
    return value;
}

template <typename D> hstring impl_IDeviceAccountConfiguration2<D>::SsoAccountId() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_SsoAccountId(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::SsoAccountId(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_SsoAccountId(get(value)));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::AlwaysDownloadFullMessage() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_AlwaysDownloadFullMessage(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::AlwaysDownloadFullMessage(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_AlwaysDownloadFullMessage(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::DoesPolicyAllowMailSync() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_DoesPolicyAllowMailSync(&value));
    return value;
}

template <typename D> Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind impl_IDeviceAccountConfiguration2<D>::SyncScheduleKind() const
{
    Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_SyncScheduleKind(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::SyncScheduleKind(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_SyncScheduleKind(value));
}

template <typename D> Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountMailAgeFilter impl_IDeviceAccountConfiguration2<D>::MailAgeFilter() const
{
    Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountMailAgeFilter value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_MailAgeFilter(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::MailAgeFilter(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountMailAgeFilter value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_MailAgeFilter(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::IsClientAuthenticationCertificateRequired() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_IsClientAuthenticationCertificateRequired(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::IsClientAuthenticationCertificateRequired(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_IsClientAuthenticationCertificateRequired(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::AutoSelectAuthenticationCertificate() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_AutoSelectAuthenticationCertificate(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::AutoSelectAuthenticationCertificate(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_AutoSelectAuthenticationCertificate(value));
}

template <typename D> hstring impl_IDeviceAccountConfiguration2<D>::AuthenticationCertificateId() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_AuthenticationCertificateId(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::AuthenticationCertificateId(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_AuthenticationCertificateId(get(value)));
}

template <typename D> Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind impl_IDeviceAccountConfiguration2<D>::CardDavSyncScheduleKind() const
{
    Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_CardDavSyncScheduleKind(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::CardDavSyncScheduleKind(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_CardDavSyncScheduleKind(value));
}

template <typename D> Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind impl_IDeviceAccountConfiguration2<D>::CalDavSyncScheduleKind() const
{
    Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_CalDavSyncScheduleKind(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::CalDavSyncScheduleKind(Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountSyncScheduleKind value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_CalDavSyncScheduleKind(value));
}

template <typename D> Windows::Foundation::Uri impl_IDeviceAccountConfiguration2<D>::CardDavServerUrl() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_CardDavServerUrl(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::CardDavServerUrl(const Windows::Foundation::Uri & value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_CardDavServerUrl(get(value)));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::CardDavRequiresSsl() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_CardDavRequiresSsl(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::CardDavRequiresSsl(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_CardDavRequiresSsl(value));
}

template <typename D> Windows::Foundation::Uri impl_IDeviceAccountConfiguration2<D>::CalDavServerUrl() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_CalDavServerUrl(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::CalDavServerUrl(const Windows::Foundation::Uri & value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_CalDavServerUrl(get(value)));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::CalDavRequiresSsl() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_CalDavRequiresSsl(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::CalDavRequiresSsl(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_CalDavRequiresSsl(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::WasModifiedByUser() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_WasModifiedByUser(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::WasModifiedByUser(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_WasModifiedByUser(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::WasIncomingServerCertificateHashConfirmed() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_WasIncomingServerCertificateHashConfirmed(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::WasIncomingServerCertificateHashConfirmed(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_WasIncomingServerCertificateHashConfirmed(value));
}

template <typename D> hstring impl_IDeviceAccountConfiguration2<D>::IncomingServerCertificateHash() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_IncomingServerCertificateHash(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::IncomingServerCertificateHash(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_IncomingServerCertificateHash(get(value)));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::IsOutgoingServerAuthenticationRequired() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_IsOutgoingServerAuthenticationRequired(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::IsOutgoingServerAuthenticationRequired(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_IsOutgoingServerAuthenticationRequired(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::IsOutgoingServerAuthenticationEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_IsOutgoingServerAuthenticationEnabled(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::IsOutgoingServerAuthenticationEnabled(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_IsOutgoingServerAuthenticationEnabled(value));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::WasOutgoingServerCertificateHashConfirmed() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_WasOutgoingServerCertificateHashConfirmed(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::WasOutgoingServerCertificateHashConfirmed(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_WasOutgoingServerCertificateHashConfirmed(value));
}

template <typename D> hstring impl_IDeviceAccountConfiguration2<D>::OutgoingServerCertificateHash() const
{
    hstring value;
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_OutgoingServerCertificateHash(put(value)));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::OutgoingServerCertificateHash(hstring_ref value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_OutgoingServerCertificateHash(get(value)));
}

template <typename D> bool impl_IDeviceAccountConfiguration2<D>::IsSyncScheduleManagedBySystem() const
{
    bool value {};
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->get_IsSyncScheduleManagedBySystem(&value));
    return value;
}

template <typename D> void impl_IDeviceAccountConfiguration2<D>::IsSyncScheduleManagedBySystem(bool value) const
{
    check_hresult(static_cast<const IDeviceAccountConfiguration2 &>(static_cast<const D &>(*this))->put_IsSyncScheduleManagedBySystem(value));
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<hstring>> impl_IUserDataAccountSystemAccessManagerStatics<D>::AddAndShowDeviceAccountsAsync(const Windows::Foundation::Collections::IIterable<Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountConfiguration> & accounts) const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<hstring>> result;
    check_hresult(static_cast<const IUserDataAccountSystemAccessManagerStatics &>(static_cast<const D &>(*this))->abi_AddAndShowDeviceAccountsAsync(get(accounts), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IUserDataAccountSystemAccessManagerStatics2<D>::SuppressLocalAccountWithAccountAsync(hstring_ref userDataAccountId) const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IUserDataAccountSystemAccessManagerStatics2 &>(static_cast<const D &>(*this))->abi_SuppressLocalAccountWithAccountAsync(get(userDataAccountId), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncOperation<hstring> impl_IUserDataAccountSystemAccessManagerStatics2<D>::CreateDeviceAccountAsync(const Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountConfiguration & account) const
{
    Windows::Foundation::IAsyncOperation<hstring> result;
    check_hresult(static_cast<const IUserDataAccountSystemAccessManagerStatics2 &>(static_cast<const D &>(*this))->abi_CreateDeviceAccountAsync(get(account), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IUserDataAccountSystemAccessManagerStatics2<D>::DeleteDeviceAccountAsync(hstring_ref accountId) const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IUserDataAccountSystemAccessManagerStatics2 &>(static_cast<const D &>(*this))->abi_DeleteDeviceAccountAsync(get(accountId), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountConfiguration> impl_IUserDataAccountSystemAccessManagerStatics2<D>::GetDeviceAccountConfigurationAsync(hstring_ref accountId) const
{
    Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountConfiguration> result;
    check_hresult(static_cast<const IUserDataAccountSystemAccessManagerStatics2 &>(static_cast<const D &>(*this))->abi_GetDeviceAccountConfigurationAsync(get(accountId), put(result)));
    return result;
}

inline DeviceAccountConfiguration::DeviceAccountConfiguration() :
    DeviceAccountConfiguration(activate_instance<DeviceAccountConfiguration>())
{}

inline Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<hstring>> UserDataAccountSystemAccessManager::AddAndShowDeviceAccountsAsync(const Windows::Foundation::Collections::IIterable<Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountConfiguration> & accounts)
{
    return get_activation_factory<UserDataAccountSystemAccessManager, IUserDataAccountSystemAccessManagerStatics>().AddAndShowDeviceAccountsAsync(accounts);
}

inline Windows::Foundation::IAsyncAction UserDataAccountSystemAccessManager::SuppressLocalAccountWithAccountAsync(hstring_ref userDataAccountId)
{
    return get_activation_factory<UserDataAccountSystemAccessManager, IUserDataAccountSystemAccessManagerStatics2>().SuppressLocalAccountWithAccountAsync(userDataAccountId);
}

inline Windows::Foundation::IAsyncOperation<hstring> UserDataAccountSystemAccessManager::CreateDeviceAccountAsync(const Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountConfiguration & account)
{
    return get_activation_factory<UserDataAccountSystemAccessManager, IUserDataAccountSystemAccessManagerStatics2>().CreateDeviceAccountAsync(account);
}

inline Windows::Foundation::IAsyncAction UserDataAccountSystemAccessManager::DeleteDeviceAccountAsync(hstring_ref accountId)
{
    return get_activation_factory<UserDataAccountSystemAccessManager, IUserDataAccountSystemAccessManagerStatics2>().DeleteDeviceAccountAsync(accountId);
}

inline Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::SystemAccess::DeviceAccountConfiguration> UserDataAccountSystemAccessManager::GetDeviceAccountConfigurationAsync(hstring_ref accountId)
{
    return get_activation_factory<UserDataAccountSystemAccessManager, IUserDataAccountSystemAccessManagerStatics2>().GetDeviceAccountConfigurationAsync(accountId);
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Foundation.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

struct Rect;
struct DateTime;

}

namespace Windows::Foundation {

using Rect = ABI::Windows::Foundation::Rect;
using DateTime = ABI::Windows::Foundation::DateTime;

}

namespace ABI::Windows::Foundation {

struct DeferralCompletedHandler;
struct IClosable;
struct IDeferral;
struct IDeferralFactory;
struct IGetActivationFactory;
struct IMemoryBuffer;
struct IMemoryBufferFactory;
struct IMemoryBufferReference;
struct IPropertyValue;
struct IPropertyValueStatics;
struct IStringable;
struct IUriEscapeStatics;
struct IUriRuntimeClass;
struct IUriRuntimeClassFactory;
struct IUriRuntimeClassWithAbsoluteCanonicalUri;
struct IWwwFormUrlDecoderEntry;
struct IWwwFormUrlDecoderRuntimeClass;
struct IWwwFormUrlDecoderRuntimeClassFactory;
struct Deferral;
struct MemoryBuffer;
struct Uri;
struct WwwFormUrlDecoder;
struct WwwFormUrlDecoderEntry;

}

namespace Windows::Foundation {

struct DeferralCompletedHandler;
struct IClosable;
struct IDeferral;
struct IDeferralFactory;
struct IGetActivationFactory;
struct IMemoryBuffer;
struct IMemoryBufferFactory;
struct IMemoryBufferReference;
struct IPropertyValue;
struct IPropertyValueStatics;
struct IStringable;
struct IUriEscapeStatics;
struct IUriRuntimeClass;
struct IUriRuntimeClassFactory;
struct IUriRuntimeClassWithAbsoluteCanonicalUri;
struct IWwwFormUrlDecoderEntry;
struct IWwwFormUrlDecoderRuntimeClass;
struct IWwwFormUrlDecoderRuntimeClassFactory;
struct Deferral;
struct MemoryBuffer;
struct PropertyValue;
struct Uri;
struct WwwFormUrlDecoder;
struct WwwFormUrlDecoderEntry;

}

namespace Windows::Foundation {

enum class PropertyType
{
    Empty = 0,
    UInt8 = 1,
    Int16 = 2,
    UInt16 = 3,
    Int32 = 4,
    UInt32 = 5,
    Int64 = 6,
    UInt64 = 7,
    Single = 8,
    Double = 9,
    Char16 = 10,
    Boolean = 11,
    String = 12,
    Inspectable = 13,
    DateTime = 14,
    TimeSpan = 15,
    Guid = 16,
    Point = 17,
    Size = 18,
    Rect = 19,
    OtherType = 20,
    UInt8Array = 1025,
    Int16Array = 1026,
    UInt16Array = 1027,
    Int32Array = 1028,
    UInt32Array = 1029,
    Int64Array = 1030,
    UInt64Array = 1031,
    SingleArray = 1032,
    DoubleArray = 1033,
    Char16Array = 1034,
    BooleanArray = 1035,
    StringArray = 1036,
    InspectableArray = 1037,
    DateTimeArray = 1038,
    TimeSpanArray = 1039,
    GuidArray = 1040,
    PointArray = 1041,
    SizeArray = 1042,
    RectArray = 1043,
    OtherTypeArray = 1044,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Networking.Sockets.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Networking.Sockets.0.h"
#include "Windows.ApplicationModel.Background.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Networking.0.h"
#include "Windows.Networking.Connectivity.0.h"
#include "Windows.Security.Credentials.0.h"
#include "Windows.Security.Cryptography.Certificates.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.Web.0.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Networking.1.h"
#include "Windows.Foundation.1.h"
#include "Windows.Storage.Streams.1.h"
#include "Windows.Security.Cryptography.Certificates.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Networking::Sockets {

struct RoundTripTimeStatistics
{
    uint32_t Variance;
    uint32_t Max;
    uint32_t Min;
    uint32_t Sum;
};

struct BandwidthStatistics
{
    uint64_t OutboundBitsPerSecond;
    uint64_t InboundBitsPerSecond;
    uint64_t OutboundBitsPerSecondInstability;
    uint64_t InboundBitsPerSecondInstability;
    bool OutboundBandwidthPeaked;
    bool InboundBandwidthPeaked;
};

}

namespace Windows::Networking::Sockets {

using RoundTripTimeStatistics = ABI::Windows::Networking::Sockets::RoundTripTimeStatistics;
using BandwidthStatistics = ABI::Windows::Networking::Sockets::BandwidthStatistics;

}

namespace ABI::Windows::Networking::Sockets {

struct __declspec(uuid("7d1431a7-ee96-40e8-a199-8703cd969ec3")) __declspec(novtable) IControlChannelTrigger : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ControlChannelTriggerId(hstring * value) = 0;
    virtual HRESULT __stdcall get_ServerKeepAliveIntervalInMinutes(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ServerKeepAliveIntervalInMinutes(uint32_t value) = 0;
    virtual HRESULT __stdcall get_CurrentKeepAliveIntervalInMinutes(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_TransportObject(Windows::IInspectable ** value) = 0;
    virtual HRESULT __stdcall get_KeepAliveTrigger(Windows::ApplicationModel::Background::IBackgroundTrigger ** trigger) = 0;
    virtual HRESULT __stdcall get_PushNotificationTrigger(Windows::ApplicationModel::Background::IBackgroundTrigger ** trigger) = 0;
    virtual HRESULT __stdcall abi_UsingTransport(Windows::IInspectable * transport) = 0;
    virtual HRESULT __stdcall abi_WaitForPushEnabled(winrt::Windows::Networking::Sockets::ControlChannelTriggerStatus * channelTriggerStatus) = 0;
    virtual HRESULT __stdcall abi_DecreaseNetworkKeepAliveInterval() = 0;
    virtual HRESULT __stdcall abi_FlushTransport() = 0;
};

struct __declspec(uuid("af00d237-51be-4514-9725-3556e1879580")) __declspec(novtable) IControlChannelTrigger2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_IsWakeFromLowPowerSupported(bool * value) = 0;
};

struct __declspec(uuid("1b36e047-89bb-4236-96ac-71d012bb4869")) __declspec(novtable) IControlChannelTriggerEventDetails : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ControlChannelTrigger(Windows::Networking::Sockets::IControlChannelTrigger ** value) = 0;
};

struct __declspec(uuid("da4b7cf0-8d71-446f-88c3-b95184a2d6cd")) __declspec(novtable) IControlChannelTriggerFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateControlChannelTrigger(hstring channelId, uint32_t serverKeepAliveIntervalInMinutes, Windows::Networking::Sockets::IControlChannelTrigger ** notificationChannel) = 0;
    virtual HRESULT __stdcall abi_CreateControlChannelTriggerEx(hstring channelId, uint32_t serverKeepAliveIntervalInMinutes, winrt::Windows::Networking::Sockets::ControlChannelTriggerResourceType resourceRequestType, Windows::Networking::Sockets::IControlChannelTrigger ** notificationChannel) = 0;
};

struct __declspec(uuid("6851038e-8ec4-42fe-9bb2-21e91b7bfcb1")) __declspec(novtable) IControlChannelTriggerResetEventDetails : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ResetReason(winrt::Windows::Networking::Sockets::ControlChannelTriggerResetReason * value) = 0;
    virtual HRESULT __stdcall get_HardwareSlotReset(bool * value) = 0;
    virtual HRESULT __stdcall get_SoftwareSlotReset(bool * value) = 0;
};

struct __declspec(uuid("7fe25bbb-c3bc-4677-8446-ca28a465a3af")) __declspec(novtable) IDatagramSocket : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Control(Windows::Networking::Sockets::IDatagramSocketControl ** value) = 0;
    virtual HRESULT __stdcall get_Information(Windows::Networking::Sockets::IDatagramSocketInformation ** value) = 0;
    virtual HRESULT __stdcall get_OutputStream(Windows::Storage::Streams::IOutputStream ** value) = 0;
    virtual HRESULT __stdcall abi_ConnectAsync(Windows::Networking::IHostName * remoteHostName, hstring remoteServiceName, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_ConnectWithEndpointPairAsync(Windows::Networking::IEndpointPair * endpointPair, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_BindServiceNameAsync(hstring localServiceName, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_BindEndpointAsync(Windows::Networking::IHostName * localHostName, hstring localServiceName, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_JoinMulticastGroup(Windows::Networking::IHostName * host) = 0;
    virtual HRESULT __stdcall abi_GetOutputStreamAsync(Windows::Networking::IHostName * remoteHostName, hstring remoteServiceName, Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IOutputStream> ** value) = 0;
    virtual HRESULT __stdcall abi_GetOutputStreamWithEndpointPairAsync(Windows::Networking::IEndpointPair * endpointPair, Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IOutputStream> ** value) = 0;
    virtual HRESULT __stdcall add_MessageReceived(Windows::Foundation::TypedEventHandler<Windows::Networking::Sockets::DatagramSocket, Windows::Networking::Sockets::DatagramSocketMessageReceivedEventArgs> * eventHandler, event_token * eventCookie) = 0;
    virtual HRESULT __stdcall remove_MessageReceived(event_token eventCookie) = 0;
};

struct __declspec(uuid("d83ba354-9a9d-4185-a20a-1424c9c2a7cd")) __declspec(novtable) IDatagramSocket2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_BindServiceNameAndAdapterAsync(hstring localServiceName, Windows::Networking::Connectivity::INetworkAdapter * adapter, Windows::Foundation::IAsyncAction ** operation) = 0;
};

struct __declspec(uuid("37544f09-ab92-4306-9ac1-0c381283d9c6")) __declspec(novtable) IDatagramSocket3 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CancelIOAsync(Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_EnableTransferOwnership(GUID taskId) = 0;
    virtual HRESULT __stdcall abi_EnableTransferOwnershipWithConnectedStandbyAction(GUID taskId, winrt::Windows::Networking::Sockets::SocketActivityConnectedStandbyAction connectedStandbyAction) = 0;
    virtual HRESULT __stdcall abi_TransferOwnership(hstring socketId) = 0;
    virtual HRESULT __stdcall abi_TransferOwnershipWithContext(hstring socketId, Windows::Networking::Sockets::ISocketActivityContext * data) = 0;
    virtual HRESULT __stdcall abi_TransferOwnershipWithContextAndKeepAliveTime(hstring socketId, Windows::Networking::Sockets::ISocketActivityContext * data, Windows::Foundation::TimeSpan keepAliveTime) = 0;
};

struct __declspec(uuid("52ac3f2e-349a-4135-bb58-b79b2647d390")) __declspec(novtable) IDatagramSocketControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_QualityOfService(winrt::Windows::Networking::Sockets::SocketQualityOfService * value) = 0;
    virtual HRESULT __stdcall put_QualityOfService(winrt::Windows::Networking::Sockets::SocketQualityOfService value) = 0;
    virtual HRESULT __stdcall get_OutboundUnicastHopLimit(uint8_t * value) = 0;
    virtual HRESULT __stdcall put_OutboundUnicastHopLimit(uint8_t value) = 0;
};

struct __declspec(uuid("33ead5c2-979c-4415-82a1-3cfaf646c192")) __declspec(novtable) IDatagramSocketControl2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_InboundBufferSizeInBytes(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_InboundBufferSizeInBytes(uint32_t value) = 0;
    virtual HRESULT __stdcall get_DontFragment(bool * value) = 0;
    virtual HRESULT __stdcall put_DontFragment(bool value) = 0;
};

struct __declspec(uuid("d4eb8256-1f6d-4598-9b57-d42a001df349")) __declspec(novtable) IDatagramSocketControl3 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_MulticastOnly(bool * value) = 0;
    virtual HRESULT __stdcall put_MulticastOnly(bool value) = 0;
};

struct __declspec(uuid("5f1a569a-55fb-48cd-9706-7a974f7b1585")) __declspec(novtable) IDatagramSocketInformation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_LocalAddress(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall get_LocalPort(hstring * value) = 0;
    virtual HRESULT __stdcall get_RemoteAddress(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall get_RemotePort(hstring * value) = 0;
};

struct __declspec(uuid("9e2ddca2-1712-4ce4-b179-8c652c6d107e")) __declspec(novtable) IDatagramSocketMessageReceivedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_RemoteAddress(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall get_RemotePort(hstring * value) = 0;
    virtual HRESULT __stdcall get_LocalAddress(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall abi_GetDataReader(Windows::Storage::Streams::IDataReader ** dataReader) = 0;
    virtual HRESULT __stdcall abi_GetDataStream(Windows::Storage::Streams::IInputStream ** inputStream) = 0;
};

struct __declspec(uuid("e9c62aee-1494-4a21-bb7e-8589fc751d9d")) __declspec(novtable) IDatagramSocketStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetEndpointPairsAsync(Windows::Networking::IHostName * remoteHostName, hstring remoteServiceName, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Networking::EndpointPair>> ** operation) = 0;
    virtual HRESULT __stdcall abi_GetEndpointPairsWithSortOptionsAsync(Windows::Networking::IHostName * remoteHostName, hstring remoteServiceName, winrt::Windows::Networking::HostNameSortOptions sortOptions, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Networking::EndpointPair>> ** operation) = 0;
};

struct __declspec(uuid("33727d08-34d5-4746-ad7b-8dde5bc2ef88")) __declspec(novtable) IMessageWebSocket : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Control(Windows::Networking::Sockets::IMessageWebSocketControl ** value) = 0;
    virtual HRESULT __stdcall get_Information(Windows::Networking::Sockets::IWebSocketInformation ** value) = 0;
    virtual HRESULT __stdcall add_MessageReceived(Windows::Foundation::TypedEventHandler<Windows::Networking::Sockets::MessageWebSocket, Windows::Networking::Sockets::MessageWebSocketMessageReceivedEventArgs> * eventHandler, event_token * eventCookie) = 0;
    virtual HRESULT __stdcall remove_MessageReceived(event_token eventCookie) = 0;
};

struct __declspec(uuid("bed0cee7-f9c8-440a-9ad5-737281d9742e")) __declspec(novtable) IMessageWebSocket2 : Windows::IInspectable
{
    virtual HRESULT __stdcall add_ServerCustomValidationRequested(Windows::Foundation::TypedEventHandler<Windows::Networking::Sockets::MessageWebSocket, Windows::Networking::Sockets::WebSocketServerCustomValidationRequestedEventArgs> * eventHandler, event_token * eventCookie) = 0;
    virtual HRESULT __stdcall remove_ServerCustomValidationRequested(event_token eventCookie) = 0;
};

struct __declspec(uuid("8118388a-c629-4f0a-80fb-81fc05538862")) __declspec(novtable) IMessageWebSocketControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_MaxMessageSize(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_MaxMessageSize(uint32_t value) = 0;
    virtual HRESULT __stdcall get_MessageType(winrt::Windows::Networking::Sockets::SocketMessageType * value) = 0;
    virtual HRESULT __stdcall put_MessageType(winrt::Windows::Networking::Sockets::SocketMessageType value) = 0;
};

struct __declspec(uuid("478c22ac-4c4b-42ed-9ed7-1ef9f94fa3d5")) __declspec(novtable) IMessageWebSocketMessageReceivedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_MessageType(winrt::Windows::Networking::Sockets::SocketMessageType * value) = 0;
    virtual HRESULT __stdcall abi_GetDataReader(Windows::Storage::Streams::IDataReader ** dataReader) = 0;
    virtual HRESULT __stdcall abi_GetDataStream(Windows::Storage::Streams::IInputStream ** inputStream) = 0;
};

struct __declspec(uuid("43b04d64-4c85-4396-a637-1d973f6ebd49")) __declspec(novtable) ISocketActivityContext : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Data(Windows::Storage::Streams::IBuffer ** value) = 0;
};

struct __declspec(uuid("b99fc3c3-088c-4388-83ae-2525138e049a")) __declspec(novtable) ISocketActivityContextFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(Windows::Storage::Streams::IBuffer * data, Windows::Networking::Sockets::ISocketActivityContext ** context) = 0;
};

struct __declspec(uuid("8d8a42e4-a87e-4b74-9968-185b2511defe")) __declspec(novtable) ISocketActivityInformation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_TaskId(GUID * value) = 0;
    virtual HRESULT __stdcall get_Id(hstring * value) = 0;
    virtual HRESULT __stdcall get_SocketKind(winrt::Windows::Networking::Sockets::SocketActivityKind * value) = 0;
    virtual HRESULT __stdcall get_Context(Windows::Networking::Sockets::ISocketActivityContext ** value) = 0;
    virtual HRESULT __stdcall get_DatagramSocket(Windows::Networking::Sockets::IDatagramSocket ** value) = 0;
    virtual HRESULT __stdcall get_StreamSocket(Windows::Networking::Sockets::IStreamSocket ** value) = 0;
    virtual HRESULT __stdcall get_StreamSocketListener(Windows::Networking::Sockets::IStreamSocketListener ** value) = 0;
};

struct __declspec(uuid("8570b47a-7e7d-4736-8041-1327a6543c56")) __declspec(novtable) ISocketActivityInformationStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AllSockets(Windows::Foundation::Collections::IMapView<hstring, Windows::Networking::Sockets::SocketActivityInformation> ** sockets) = 0;
};

struct __declspec(uuid("45f406a7-fc9f-4f81-acad-355fef51e67b")) __declspec(novtable) ISocketActivityTriggerDetails : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reason(winrt::Windows::Networking::Sockets::SocketActivityTriggerReason * value) = 0;
    virtual HRESULT __stdcall get_SocketInformation(Windows::Networking::Sockets::ISocketActivityInformation ** value) = 0;
};

struct __declspec(uuid("828337f4-7d56-4d8e-b7b4-a07dd7c1bca9")) __declspec(novtable) ISocketErrorStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetStatus(int32_t hresult, winrt::Windows::Networking::Sockets::SocketErrorStatus * status) = 0;
};

struct __declspec(uuid("69a22cf3-fc7b-4857-af38-f6e7de6a5b49")) __declspec(novtable) IStreamSocket : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Control(Windows::Networking::Sockets::IStreamSocketControl ** value) = 0;
    virtual HRESULT __stdcall get_Information(Windows::Networking::Sockets::IStreamSocketInformation ** value) = 0;
    virtual HRESULT __stdcall get_InputStream(Windows::Storage::Streams::IInputStream ** value) = 0;
    virtual HRESULT __stdcall get_OutputStream(Windows::Storage::Streams::IOutputStream ** value) = 0;
    virtual HRESULT __stdcall abi_ConnectWithEndpointPairAsync(Windows::Networking::IEndpointPair * endpointPair, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_ConnectAsync(Windows::Networking::IHostName * remoteHostName, hstring remoteServiceName, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_ConnectWithEndpointPairAndProtectionLevelAsync(Windows::Networking::IEndpointPair * endpointPair, winrt::Windows::Networking::Sockets::SocketProtectionLevel protectionLevel, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_ConnectWithProtectionLevelAsync(Windows::Networking::IHostName * remoteHostName, hstring remoteServiceName, winrt::Windows::Networking::Sockets::SocketProtectionLevel protectionLevel, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_UpgradeToSslAsync(winrt::Windows::Networking::Sockets::SocketProtectionLevel protectionLevel, Windows::Networking::IHostName * validationHostName, Windows::Foundation::IAsyncAction ** operation) = 0;
};

struct __declspec(uuid("29d0e575-f314-4d09-adf0-0fbd967fbd9f")) __declspec(novtable) IStreamSocket2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ConnectWithProtectionLevelAndAdapterAsync(Windows::Networking::IHostName * remoteHostName, hstring remoteServiceName, winrt::Windows::Networking::Sockets::SocketProtectionLevel protectionLevel, Windows::Networking::Connectivity::INetworkAdapter * adapter, Windows::Foundation::IAsyncAction ** operation) = 0;
};

struct __declspec(uuid("3f430b00-9d28-4854-bac3-2301941ec223")) __declspec(novtable) IStreamSocket3 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CancelIOAsync(Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_EnableTransferOwnership(GUID taskId) = 0;
    virtual HRESULT __stdcall abi_EnableTransferOwnershipWithConnectedStandbyAction(GUID taskId, winrt::Windows::Networking::Sockets::SocketActivityConnectedStandbyAction connectedStandbyAction) = 0;
    virtual HRESULT __stdcall abi_TransferOwnership(hstring socketId) = 0;
    virtual HRESULT __stdcall abi_TransferOwnershipWithContext(hstring socketId, Windows::Networking::Sockets::ISocketActivityContext * data) = 0;
    virtual HRESULT __stdcall abi_TransferOwnershipWithContextAndKeepAliveTime(hstring socketId, Windows::Networking::Sockets::ISocketActivityContext * data, Windows::Foundation::TimeSpan keepAliveTime) = 0;
};

struct __declspec(uuid("fe25adf1-92ab-4af3-9992-0f4c85e36cc4")) __declspec(novtable) IStreamSocketControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_NoDelay(bool * value) = 0;
    virtual HRESULT __stdcall put_NoDelay(bool value) = 0;
    virtual HRESULT __stdcall get_KeepAlive(bool * value) = 0;
    virtual HRESULT __stdcall put_KeepAlive(bool value) = 0;
    virtual HRESULT __stdcall get_OutboundBufferSizeInBytes(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_OutboundBufferSizeInBytes(uint32_t value) = 0;
    virtual HRESULT __stdcall get_QualityOfService(winrt::Windows::Networking::Sockets::SocketQualityOfService * value) = 0;
    virtual HRESULT __stdcall put_QualityOfService(winrt::Windows::Networking::Sockets::SocketQualityOfService value) = 0;
    virtual HRESULT __stdcall get_OutboundUnicastHopLimit(uint8_t * value) = 0;
    virtual HRESULT __stdcall put_OutboundUnicastHopLimit(uint8_t value) = 0;
};

struct __declspec(uuid("c2d09a56-060f-44c1-b8e2-1fbf60bd62c5")) __declspec(novtable) IStreamSocketControl2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_IgnorableServerCertificateErrors(Windows::Foundation::Collections::IVector<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> ** value) = 0;
};

struct __declspec(uuid("c56a444c-4e74-403e-894c-b31cae5c7342")) __declspec(novtable) IStreamSocketControl3 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_SerializeConnectionAttempts(bool * value) = 0;
    virtual HRESULT __stdcall put_SerializeConnectionAttempts(bool value) = 0;
    virtual HRESULT __stdcall get_ClientCertificate(Windows::Security::Cryptography::Certificates::ICertificate ** value) = 0;
    virtual HRESULT __stdcall put_ClientCertificate(Windows::Security::Cryptography::Certificates::ICertificate * value) = 0;
};

struct __declspec(uuid("3b80ae30-5e68-4205-88f0-dc85d2e25ded")) __declspec(novtable) IStreamSocketInformation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_LocalAddress(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall get_LocalPort(hstring * value) = 0;
    virtual HRESULT __stdcall get_RemoteHostName(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall get_RemoteAddress(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall get_RemoteServiceName(hstring * value) = 0;
    virtual HRESULT __stdcall get_RemotePort(hstring * value) = 0;
    virtual HRESULT __stdcall get_RoundTripTimeStatistics(Windows::Networking::Sockets::RoundTripTimeStatistics * value) = 0;
    virtual HRESULT __stdcall get_BandwidthStatistics(Windows::Networking::Sockets::BandwidthStatistics * value) = 0;
    virtual HRESULT __stdcall get_ProtectionLevel(winrt::Windows::Networking::Sockets::SocketProtectionLevel * value) = 0;
    virtual HRESULT __stdcall get_SessionKey(Windows::Storage::Streams::IBuffer ** value) = 0;
};

struct __declspec(uuid("12c28452-4bdc-4ee4-976a-cf130e9d92e3")) __declspec(novtable) IStreamSocketInformation2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServerCertificateErrorSeverity(winrt::Windows::Networking::Sockets::SocketSslErrorSeverity * value) = 0;
    virtual HRESULT __stdcall get_ServerCertificateErrors(Windows::Foundation::Collections::IVectorView<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> ** value) = 0;
    virtual HRESULT __stdcall get_ServerCertificate(Windows::Security::Cryptography::Certificates::ICertificate ** value) = 0;
    virtual HRESULT __stdcall get_ServerIntermediateCertificates(Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> ** value) = 0;
};

struct __declspec(uuid("ff513437-df9f-4df0-bf82-0ec5d7b35aae")) __declspec(novtable) IStreamSocketListener : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Control(Windows::Networking::Sockets::IStreamSocketListenerControl ** value) = 0;
    virtual HRESULT __stdcall get_Information(Windows::Networking::Sockets::IStreamSocketListenerInformation ** value) = 0;
    virtual HRESULT __stdcall abi_BindServiceNameAsync(hstring localServiceName, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_BindEndpointAsync(Windows::Networking::IHostName * localHostName, hstring localServiceName, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall add_ConnectionReceived(Windows::Foundation::TypedEventHandler<Windows::Networking::Sockets::StreamSocketListener, Windows::Networking::Sockets::StreamSocketListenerConnectionReceivedEventArgs> * eventHandler, event_token * eventCookie) = 0;
    virtual HRESULT __stdcall remove_ConnectionReceived(event_token eventCookie) = 0;
};

struct __declspec(uuid("658dc13e-bb3e-4458-b232-ed1088694b98")) __declspec(novtable) IStreamSocketListener2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_BindServiceNameWithProtectionLevelAsync(hstring localServiceName, winrt::Windows::Networking::Sockets::SocketProtectionLevel protectionLevel, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_BindServiceNameWithProtectionLevelAndAdapterAsync(hstring localServiceName, winrt::Windows::Networking::Sockets::SocketProtectionLevel protectionLevel, Windows::Networking::Connectivity::INetworkAdapter * adapter, Windows::Foundation::IAsyncAction ** operation) = 0;
};

struct __declspec(uuid("4798201c-bdf8-4919-8542-28d450e74507")) __declspec(novtable) IStreamSocketListener3 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CancelIOAsync(Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_EnableTransferOwnership(GUID taskId) = 0;
    virtual HRESULT __stdcall abi_EnableTransferOwnershipWithConnectedStandbyAction(GUID taskId, winrt::Windows::Networking::Sockets::SocketActivityConnectedStandbyAction connectedStandbyAction) = 0;
    virtual HRESULT __stdcall abi_TransferOwnership(hstring socketId) = 0;
    virtual HRESULT __stdcall abi_TransferOwnershipWithContext(hstring socketId, Windows::Networking::Sockets::ISocketActivityContext * data) = 0;
};

struct __declspec(uuid("0c472ea9-373f-447b-85b1-ddd4548803ba")) __declspec(novtable) IStreamSocketListenerConnectionReceivedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Socket(Windows::Networking::Sockets::IStreamSocket ** value) = 0;
};

struct __declspec(uuid("20d8c576-8d8a-4dba-9722-a16c4d984980")) __declspec(novtable) IStreamSocketListenerControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_QualityOfService(winrt::Windows::Networking::Sockets::SocketQualityOfService * value) = 0;
    virtual HRESULT __stdcall put_QualityOfService(winrt::Windows::Networking::Sockets::SocketQualityOfService value) = 0;
};

struct __declspec(uuid("948bb665-2c3e-404b-b8b0-8eb249a2b0a1")) __declspec(novtable) IStreamSocketListenerControl2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_NoDelay(bool * value) = 0;
    virtual HRESULT __stdcall put_NoDelay(bool value) = 0;
    virtual HRESULT __stdcall get_KeepAlive(bool * value) = 0;
    virtual HRESULT __stdcall put_KeepAlive(bool value) = 0;
    virtual HRESULT __stdcall get_OutboundBufferSizeInBytes(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_OutboundBufferSizeInBytes(uint32_t value) = 0;
    virtual HRESULT __stdcall get_OutboundUnicastHopLimit(uint8_t * value) = 0;
    virtual HRESULT __stdcall put_OutboundUnicastHopLimit(uint8_t value) = 0;
};

struct __declspec(uuid("e62ba82f-a63a-430b-bf62-29e93e5633b4")) __declspec(novtable) IStreamSocketListenerInformation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_LocalPort(hstring * value) = 0;
};

struct __declspec(uuid("a420bc4a-6e2e-4af5-b556-355ae0cd4f29")) __declspec(novtable) IStreamSocketStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetEndpointPairsAsync(Windows::Networking::IHostName * remoteHostName, hstring remoteServiceName, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Networking::EndpointPair>> ** operation) = 0;
    virtual HRESULT __stdcall abi_GetEndpointPairsWithSortOptionsAsync(Windows::Networking::IHostName * remoteHostName, hstring remoteServiceName, winrt::Windows::Networking::HostNameSortOptions sortOptions, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Networking::EndpointPair>> ** operation) = 0;
};

struct __declspec(uuid("bd4a49d8-b289-45bb-97eb-c7525205a843")) __declspec(novtable) IStreamWebSocket : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Control(Windows::Networking::Sockets::IStreamWebSocketControl ** value) = 0;
    virtual HRESULT __stdcall get_Information(Windows::Networking::Sockets::IWebSocketInformation ** value) = 0;
    virtual HRESULT __stdcall get_InputStream(Windows::Storage::Streams::IInputStream ** value) = 0;
};

struct __declspec(uuid("aa4d08cb-93f5-4678-8236-57cce5417ed5")) __declspec(novtable) IStreamWebSocket2 : Windows::IInspectable
{
    virtual HRESULT __stdcall add_ServerCustomValidationRequested(Windows::Foundation::TypedEventHandler<Windows::Networking::Sockets::StreamWebSocket, Windows::Networking::Sockets::WebSocketServerCustomValidationRequestedEventArgs> * eventHandler, event_token * eventCookie) = 0;
    virtual HRESULT __stdcall remove_ServerCustomValidationRequested(event_token eventCookie) = 0;
};

struct __declspec(uuid("b4f478b1-a45a-48db-953a-645b7d964c07")) __declspec(novtable) IStreamWebSocketControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_NoDelay(bool * value) = 0;
    virtual HRESULT __stdcall put_NoDelay(bool value) = 0;
};

struct __declspec(uuid("f877396f-99b1-4e18-bc08-850c9adf156e")) __declspec(novtable) IWebSocket : Windows::IInspectable
{
    virtual HRESULT __stdcall get_OutputStream(Windows::Storage::Streams::IOutputStream ** value) = 0;
    virtual HRESULT __stdcall abi_ConnectAsync(Windows::Foundation::IUriRuntimeClass * uri, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_SetRequestHeader(hstring headerName, hstring headerValue) = 0;
    virtual HRESULT __stdcall add_Closed(Windows::Foundation::TypedEventHandler<Windows::Networking::Sockets::IWebSocket, Windows::Networking::Sockets::WebSocketClosedEventArgs> * eventHandler, event_token * eventCookie) = 0;
    virtual HRESULT __stdcall remove_Closed(event_token eventCookie) = 0;
    virtual HRESULT __stdcall abi_CloseWithStatus(uint16_t code, hstring reason) = 0;
};

struct __declspec(uuid("ceb78d07-d0a8-4703-a091-c8c2c0915bc3")) __declspec(novtable) IWebSocketClosedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Code(uint16_t * value) = 0;
    virtual HRESULT __stdcall get_Reason(hstring * value) = 0;
};

struct __declspec(uuid("2ec4bdc3-d9a5-455a-9811-de24d45337e9")) __declspec(novtable) IWebSocketControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_OutboundBufferSizeInBytes(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_OutboundBufferSizeInBytes(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ServerCredential(Windows::Security::Credentials::IPasswordCredential ** value) = 0;
    virtual HRESULT __stdcall put_ServerCredential(Windows::Security::Credentials::IPasswordCredential * value) = 0;
    virtual HRESULT __stdcall get_ProxyCredential(Windows::Security::Credentials::IPasswordCredential ** value) = 0;
    virtual HRESULT __stdcall put_ProxyCredential(Windows::Security::Credentials::IPasswordCredential * value) = 0;
    virtual HRESULT __stdcall get_SupportedProtocols(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
};

struct __declspec(uuid("79c3be03-f2ca-461e-af4e-9665bc2d0620")) __declspec(novtable) IWebSocketControl2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_IgnorableServerCertificateErrors(Windows::Foundation::Collections::IVector<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> ** value) = 0;
};

struct __declspec(uuid("27cdf35b-1f61-4709-8e02-61283ada4e9d")) __declspec(novtable) IWebSocketErrorStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetStatus(int32_t hresult, winrt::Windows::Web::WebErrorStatus * status) = 0;
};

struct __declspec(uuid("5e01e316-c92a-47a5-b25f-07847639d181")) __declspec(novtable) IWebSocketInformation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_LocalAddress(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall get_BandwidthStatistics(Windows::Networking::Sockets::BandwidthStatistics * value) = 0;
    virtual HRESULT __stdcall get_Protocol(hstring * value) = 0;
};

struct __declspec(uuid("ce1d39ce-a1b7-4d43-8269-8d5b981bd47a")) __declspec(novtable) IWebSocketInformation2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServerCertificate(Windows::Security::Cryptography::Certificates::ICertificate ** value) = 0;
    virtual HRESULT __stdcall get_ServerCertificateErrorSeverity(winrt::Windows::Networking::Sockets::SocketSslErrorSeverity * value) = 0;
    virtual HRESULT __stdcall get_ServerCertificateErrors(Windows::Foundation::Collections::IVectorView<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> ** value) = 0;
    virtual HRESULT __stdcall get_ServerIntermediateCertificates(Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> ** value) = 0;
};

struct __declspec(uuid("ffeffe48-022a-4ab7-8b36-e10af4640e6b")) __declspec(novtable) IWebSocketServerCustomValidationRequestedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServerCertificate(Windows::Security::Cryptography::Certificates::ICertificate ** value) = 0;
    virtual HRESULT __stdcall get_ServerCertificateErrorSeverity(winrt::Windows::Networking::Sockets::SocketSslErrorSeverity * value) = 0;
    virtual HRESULT __stdcall get_ServerCertificateErrors(Windows::Foundation::Collections::IVectorView<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> ** value) = 0;
    virtual HRESULT __stdcall get_ServerIntermediateCertificates(Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> ** value) = 0;
    virtual HRESULT __stdcall abi_Reject() = 0;
    virtual HRESULT __stdcall abi_GetDeferral(Windows::Foundation::IDeferral ** result) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Networking::Sockets::ControlChannelTrigger> { using default_interface = Windows::Networking::Sockets::IControlChannelTrigger; };
template <> struct traits<Windows::Networking::Sockets::DatagramSocket> { using default_interface = Windows::Networking::Sockets::IDatagramSocket; };
template <> struct traits<Windows::Networking::Sockets::DatagramSocketControl> { using default_interface = Windows::Networking::Sockets::IDatagramSocketControl; };
template <> struct traits<Windows::Networking::Sockets::DatagramSocketInformation> { using default_interface = Windows::Networking::Sockets::IDatagramSocketInformation; };
template <> struct traits<Windows::Networking::Sockets::DatagramSocketMessageReceivedEventArgs> { using default_interface = Windows::Networking::Sockets::IDatagramSocketMessageReceivedEventArgs; };
template <> struct traits<Windows::Networking::Sockets::MessageWebSocket> { using default_interface = Windows::Networking::Sockets::IMessageWebSocket; };
template <> struct traits<Windows::Networking::Sockets::MessageWebSocketControl> { using default_interface = Windows::Networking::Sockets::IMessageWebSocketControl; };
template <> struct traits<Windows::Networking::Sockets::MessageWebSocketInformation> { using default_interface = Windows::Networking::Sockets::IWebSocketInformation; };
template <> struct traits<Windows::Networking::Sockets::MessageWebSocketMessageReceivedEventArgs> { using default_interface = Windows::Networking::Sockets::IMessageWebSocketMessageReceivedEventArgs; };
template <> struct traits<Windows::Networking::Sockets::SocketActivityContext> { using default_interface = Windows::Networking::Sockets::ISocketActivityContext; };
template <> struct traits<Windows::Networking::Sockets::SocketActivityInformation> { using default_interface = Windows::Networking::Sockets::ISocketActivityInformation; };
template <> struct traits<Windows::Networking::Sockets::SocketActivityTriggerDetails> { using default_interface = Windows::Networking::Sockets::ISocketActivityTriggerDetails; };
template <> struct traits<Windows::Networking::Sockets::StreamSocket> { using default_interface = Windows::Networking::Sockets::IStreamSocket; };
template <> struct traits<Windows::Networking::Sockets::StreamSocketControl> { using default_interface = Windows::Networking::Sockets::IStreamSocketControl; };
template <> struct traits<Windows::Networking::Sockets::StreamSocketInformation> { using default_interface = Windows::Networking::Sockets::IStreamSocketInformation; };
template <> struct traits<Windows::Networking::Sockets::StreamSocketListener> { using default_interface = Windows::Networking::Sockets::IStreamSocketListener; };
template <> struct traits<Windows::Networking::Sockets::StreamSocketListenerConnectionReceivedEventArgs> { using default_interface = Windows::Networking::Sockets::IStreamSocketListenerConnectionReceivedEventArgs; };
template <> struct traits<Windows::Networking::Sockets::StreamSocketListenerControl> { using default_interface = Windows::Networking::Sockets::IStreamSocketListenerControl; };
template <> struct traits<Windows::Networking::Sockets::StreamSocketListenerInformation> { using default_interface = Windows::Networking::Sockets::IStreamSocketListenerInformation; };
template <> struct traits<Windows::Networking::Sockets::StreamWebSocket> { using default_interface = Windows::Networking::Sockets::IStreamWebSocket; };
template <> struct traits<Windows::Networking::Sockets::StreamWebSocketControl> { using default_interface = Windows::Networking::Sockets::IStreamWebSocketControl; };
template <> struct traits<Windows::Networking::Sockets::StreamWebSocketInformation> { using default_interface = Windows::Networking::Sockets::IWebSocketInformation; };
template <> struct traits<Windows::Networking::Sockets::WebSocketClosedEventArgs> { using default_interface = Windows::Networking::Sockets::IWebSocketClosedEventArgs; };
template <> struct traits<Windows::Networking::Sockets::WebSocketKeepAlive> { using default_interface = Windows::ApplicationModel::Background::IBackgroundTask; };
template <> struct traits<Windows::Networking::Sockets::WebSocketServerCustomValidationRequestedEventArgs> { using default_interface = Windows::Networking::Sockets::IWebSocketServerCustomValidationRequestedEventArgs; };

}

namespace Windows::Networking::Sockets {

template <typename T> struct impl_IControlChannelTrigger;
template <typename T> struct impl_IControlChannelTrigger2;
template <typename T> struct impl_IControlChannelTriggerEventDetails;
template <typename T> struct impl_IControlChannelTriggerFactory;
template <typename T> struct impl_IControlChannelTriggerResetEventDetails;
template <typename T> struct impl_IDatagramSocket;
template <typename T> struct impl_IDatagramSocket2;
template <typename T> struct impl_IDatagramSocket3;
template <typename T> struct impl_IDatagramSocketControl;
template <typename T> struct impl_IDatagramSocketControl2;
template <typename T> struct impl_IDatagramSocketControl3;
template <typename T> struct impl_IDatagramSocketInformation;
template <typename T> struct impl_IDatagramSocketMessageReceivedEventArgs;
template <typename T> struct impl_IDatagramSocketStatics;
template <typename T> struct impl_IMessageWebSocket;
template <typename T> struct impl_IMessageWebSocket2;
template <typename T> struct impl_IMessageWebSocketControl;
template <typename T> struct impl_IMessageWebSocketMessageReceivedEventArgs;
template <typename T> struct impl_ISocketActivityContext;
template <typename T> struct impl_ISocketActivityContextFactory;
template <typename T> struct impl_ISocketActivityInformation;
template <typename T> struct impl_ISocketActivityInformationStatics;
template <typename T> struct impl_ISocketActivityTriggerDetails;
template <typename T> struct impl_ISocketErrorStatics;
template <typename T> struct impl_IStreamSocket;
template <typename T> struct impl_IStreamSocket2;
template <typename T> struct impl_IStreamSocket3;
template <typename T> struct impl_IStreamSocketControl;
template <typename T> struct impl_IStreamSocketControl2;
template <typename T> struct impl_IStreamSocketControl3;
template <typename T> struct impl_IStreamSocketInformation;
template <typename T> struct impl_IStreamSocketInformation2;
template <typename T> struct impl_IStreamSocketListener;
template <typename T> struct impl_IStreamSocketListener2;
template <typename T> struct impl_IStreamSocketListener3;
template <typename T> struct impl_IStreamSocketListenerConnectionReceivedEventArgs;
template <typename T> struct impl_IStreamSocketListenerControl;
template <typename T> struct impl_IStreamSocketListenerControl2;
template <typename T> struct impl_IStreamSocketListenerInformation;
template <typename T> struct impl_IStreamSocketStatics;
template <typename T> struct impl_IStreamWebSocket;
template <typename T> struct impl_IStreamWebSocket2;
template <typename T> struct impl_IStreamWebSocketControl;
template <typename T> struct impl_IWebSocket;
template <typename T> struct impl_IWebSocketClosedEventArgs;
template <typename T> struct impl_IWebSocketControl;
template <typename T> struct impl_IWebSocketControl2;
template <typename T> struct impl_IWebSocketErrorStatics;
template <typename T> struct impl_IWebSocketInformation;
template <typename T> struct impl_IWebSocketInformation2;
template <typename T> struct impl_IWebSocketServerCustomValidationRequestedEventArgs;

}

namespace impl {

template <> struct traits<Windows::Networking::Sockets::IControlChannelTrigger>
{
    using abi = ABI::Windows::Networking::Sockets::IControlChannelTrigger;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IControlChannelTrigger<D>;
};

template <> struct traits<Windows::Networking::Sockets::IControlChannelTrigger2>
{
    using abi = ABI::Windows::Networking::Sockets::IControlChannelTrigger2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IControlChannelTrigger2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IControlChannelTriggerEventDetails>
{
    using abi = ABI::Windows::Networking::Sockets::IControlChannelTriggerEventDetails;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IControlChannelTriggerEventDetails<D>;
};

template <> struct traits<Windows::Networking::Sockets::IControlChannelTriggerFactory>
{
    using abi = ABI::Windows::Networking::Sockets::IControlChannelTriggerFactory;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IControlChannelTriggerFactory<D>;
};

template <> struct traits<Windows::Networking::Sockets::IControlChannelTriggerResetEventDetails>
{
    using abi = ABI::Windows::Networking::Sockets::IControlChannelTriggerResetEventDetails;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IControlChannelTriggerResetEventDetails<D>;
};

template <> struct traits<Windows::Networking::Sockets::IDatagramSocket>
{
    using abi = ABI::Windows::Networking::Sockets::IDatagramSocket;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IDatagramSocket<D>;
};

template <> struct traits<Windows::Networking::Sockets::IDatagramSocket2>
{
    using abi = ABI::Windows::Networking::Sockets::IDatagramSocket2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IDatagramSocket2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IDatagramSocket3>
{
    using abi = ABI::Windows::Networking::Sockets::IDatagramSocket3;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IDatagramSocket3<D>;
};

template <> struct traits<Windows::Networking::Sockets::IDatagramSocketControl>
{
    using abi = ABI::Windows::Networking::Sockets::IDatagramSocketControl;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IDatagramSocketControl<D>;
};

template <> struct traits<Windows::Networking::Sockets::IDatagramSocketControl2>
{
    using abi = ABI::Windows::Networking::Sockets::IDatagramSocketControl2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IDatagramSocketControl2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IDatagramSocketControl3>
{
    using abi = ABI::Windows::Networking::Sockets::IDatagramSocketControl3;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IDatagramSocketControl3<D>;
};

template <> struct traits<Windows::Networking::Sockets::IDatagramSocketInformation>
{
    using abi = ABI::Windows::Networking::Sockets::IDatagramSocketInformation;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IDatagramSocketInformation<D>;
};

template <> struct traits<Windows::Networking::Sockets::IDatagramSocketMessageReceivedEventArgs>
{
    using abi = ABI::Windows::Networking::Sockets::IDatagramSocketMessageReceivedEventArgs;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IDatagramSocketMessageReceivedEventArgs<D>;
};

template <> struct traits<Windows::Networking::Sockets::IDatagramSocketStatics>
{
    using abi = ABI::Windows::Networking::Sockets::IDatagramSocketStatics;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IDatagramSocketStatics<D>;
};

template <> struct traits<Windows::Networking::Sockets::IMessageWebSocket>
{
    using abi = ABI::Windows::Networking::Sockets::IMessageWebSocket;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IMessageWebSocket<D>;
};

template <> struct traits<Windows::Networking::Sockets::IMessageWebSocket2>
{
    using abi = ABI::Windows::Networking::Sockets::IMessageWebSocket2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IMessageWebSocket2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IMessageWebSocketControl>
{
    using abi = ABI::Windows::Networking::Sockets::IMessageWebSocketControl;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IMessageWebSocketControl<D>;
};

template <> struct traits<Windows::Networking::Sockets::IMessageWebSocketMessageReceivedEventArgs>
{
    using abi = ABI::Windows::Networking::Sockets::IMessageWebSocketMessageReceivedEventArgs;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IMessageWebSocketMessageReceivedEventArgs<D>;
};

template <> struct traits<Windows::Networking::Sockets::ISocketActivityContext>
{
    using abi = ABI::Windows::Networking::Sockets::ISocketActivityContext;
    template <typename D> using consume = Windows::Networking::Sockets::impl_ISocketActivityContext<D>;
};

template <> struct traits<Windows::Networking::Sockets::ISocketActivityContextFactory>
{
    using abi = ABI::Windows::Networking::Sockets::ISocketActivityContextFactory;
    template <typename D> using consume = Windows::Networking::Sockets::impl_ISocketActivityContextFactory<D>;
};

template <> struct traits<Windows::Networking::Sockets::ISocketActivityInformation>
{
    using abi = ABI::Windows::Networking::Sockets::ISocketActivityInformation;
    template <typename D> using consume = Windows::Networking::Sockets::impl_ISocketActivityInformation<D>;
};

template <> struct traits<Windows::Networking::Sockets::ISocketActivityInformationStatics>
{
    using abi = ABI::Windows::Networking::Sockets::ISocketActivityInformationStatics;
    template <typename D> using consume = Windows::Networking::Sockets::impl_ISocketActivityInformationStatics<D>;
};

template <> struct traits<Windows::Networking::Sockets::ISocketActivityTriggerDetails>
{
    using abi = ABI::Windows::Networking::Sockets::ISocketActivityTriggerDetails;
    template <typename D> using consume = Windows::Networking::Sockets::impl_ISocketActivityTriggerDetails<D>;
};

template <> struct traits<Windows::Networking::Sockets::ISocketErrorStatics>
{
    using abi = ABI::Windows::Networking::Sockets::ISocketErrorStatics;
    template <typename D> using consume = Windows::Networking::Sockets::impl_ISocketErrorStatics<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocket>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocket;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocket<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocket2>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocket2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocket2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocket3>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocket3;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocket3<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketControl>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketControl;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketControl<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketControl2>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketControl2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketControl2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketControl3>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketControl3;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketControl3<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketInformation>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketInformation;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketInformation<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketInformation2>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketInformation2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketInformation2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketListener>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketListener;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketListener<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketListener2>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketListener2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketListener2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketListener3>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketListener3;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketListener3<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketListenerConnectionReceivedEventArgs>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketListenerConnectionReceivedEventArgs;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketListenerConnectionReceivedEventArgs<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketListenerControl>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketListenerControl;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketListenerControl<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketListenerControl2>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketListenerControl2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketListenerControl2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketListenerInformation>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketListenerInformation;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketListenerInformation<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamSocketStatics>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamSocketStatics;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamSocketStatics<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamWebSocket>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamWebSocket;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamWebSocket<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamWebSocket2>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamWebSocket2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamWebSocket2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IStreamWebSocketControl>
{
    using abi = ABI::Windows::Networking::Sockets::IStreamWebSocketControl;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IStreamWebSocketControl<D>;
};

template <> struct traits<Windows::Networking::Sockets::IWebSocket>
{
    using abi = ABI::Windows::Networking::Sockets::IWebSocket;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IWebSocket<D>;
};

template <> struct traits<Windows::Networking::Sockets::IWebSocketClosedEventArgs>
{
    using abi = ABI::Windows::Networking::Sockets::IWebSocketClosedEventArgs;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IWebSocketClosedEventArgs<D>;
};

template <> struct traits<Windows::Networking::Sockets::IWebSocketControl>
{
    using abi = ABI::Windows::Networking::Sockets::IWebSocketControl;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IWebSocketControl<D>;
};

template <> struct traits<Windows::Networking::Sockets::IWebSocketControl2>
{
    using abi = ABI::Windows::Networking::Sockets::IWebSocketControl2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IWebSocketControl2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IWebSocketErrorStatics>
{
    using abi = ABI::Windows::Networking::Sockets::IWebSocketErrorStatics;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IWebSocketErrorStatics<D>;
};

template <> struct traits<Windows::Networking::Sockets::IWebSocketInformation>
{
    using abi = ABI::Windows::Networking::Sockets::IWebSocketInformation;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IWebSocketInformation<D>;
};

template <> struct traits<Windows::Networking::Sockets::IWebSocketInformation2>
{
    using abi = ABI::Windows::Networking::Sockets::IWebSocketInformation2;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IWebSocketInformation2<D>;
};

template <> struct traits<Windows::Networking::Sockets::IWebSocketServerCustomValidationRequestedEventArgs>
{
    using abi = ABI::Windows::Networking::Sockets::IWebSocketServerCustomValidationRequestedEventArgs;
    template <typename D> using consume = Windows::Networking::Sockets::impl_IWebSocketServerCustomValidationRequestedEventArgs<D>;
};

template <> struct traits<Windows::Networking::Sockets::ControlChannelTrigger>
{
    using abi = ABI::Windows::Networking::Sockets::ControlChannelTrigger;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.ControlChannelTrigger"; }
};

template <> struct traits<Windows::Networking::Sockets::DatagramSocket>
{
    using abi = ABI::Windows::Networking::Sockets::DatagramSocket;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.DatagramSocket"; }
};

template <> struct traits<Windows::Networking::Sockets::DatagramSocketControl>
{
    using abi = ABI::Windows::Networking::Sockets::DatagramSocketControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.DatagramSocketControl"; }
};

template <> struct traits<Windows::Networking::Sockets::DatagramSocketInformation>
{
    using abi = ABI::Windows::Networking::Sockets::DatagramSocketInformation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.DatagramSocketInformation"; }
};

template <> struct traits<Windows::Networking::Sockets::DatagramSocketMessageReceivedEventArgs>
{
    using abi = ABI::Windows::Networking::Sockets::DatagramSocketMessageReceivedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.DatagramSocketMessageReceivedEventArgs"; }
};

template <> struct traits<Windows::Networking::Sockets::MessageWebSocket>
{
    using abi = ABI::Windows::Networking::Sockets::MessageWebSocket;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.MessageWebSocket"; }
};

template <> struct traits<Windows::Networking::Sockets::MessageWebSocketControl>
{
    using abi = ABI::Windows::Networking::Sockets::MessageWebSocketControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.MessageWebSocketControl"; }
};

template <> struct traits<Windows::Networking::Sockets::MessageWebSocketInformation>
{
    using abi = ABI::Windows::Networking::Sockets::MessageWebSocketInformation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.MessageWebSocketInformation"; }
};

template <> struct traits<Windows::Networking::Sockets::MessageWebSocketMessageReceivedEventArgs>
{
    using abi = ABI::Windows::Networking::Sockets::MessageWebSocketMessageReceivedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.MessageWebSocketMessageReceivedEventArgs"; }
};

template <> struct traits<Windows::Networking::Sockets::SocketActivityContext>
{
    using abi = ABI::Windows::Networking::Sockets::SocketActivityContext;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.SocketActivityContext"; }
};

template <> struct traits<Windows::Networking::Sockets::SocketActivityInformation>
{
    using abi = ABI::Windows::Networking::Sockets::SocketActivityInformation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.SocketActivityInformation"; }
};

template <> struct traits<Windows::Networking::Sockets::SocketActivityTriggerDetails>
{
    using abi = ABI::Windows::Networking::Sockets::SocketActivityTriggerDetails;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.SocketActivityTriggerDetails"; }
};

template <> struct traits<Windows::Networking::Sockets::SocketError>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.SocketError"; }
};

template <> struct traits<Windows::Networking::Sockets::StreamSocket>
{
    using abi = ABI::Windows::Networking::Sockets::StreamSocket;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.StreamSocket"; }
};

template <> struct traits<Windows::Networking::Sockets::StreamSocketControl>
{
    using abi = ABI::Windows::Networking::Sockets::StreamSocketControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.StreamSocketControl"; }
};

template <> struct traits<Windows::Networking::Sockets::StreamSocketInformation>
{
    using abi = ABI::Windows::Networking::Sockets::StreamSocketInformation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.StreamSocketInformation"; }
};

template <> struct traits<Windows::Networking::Sockets::StreamSocketListener>
{
    using abi = ABI::Windows::Networking::Sockets::StreamSocketListener;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.StreamSocketListener"; }
};

template <> struct traits<Windows::Networking::Sockets::StreamSocketListenerConnectionReceivedEventArgs>
{
    using abi = ABI::Windows::Networking::Sockets::StreamSocketListenerConnectionReceivedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.StreamSocketListenerConnectionReceivedEventArgs"; }
};

template <> struct traits<Windows::Networking::Sockets::StreamSocketListenerControl>
{
    using abi = ABI::Windows::Networking::Sockets::StreamSocketListenerControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.StreamSocketListenerControl"; }
};

template <> struct traits<Windows::Networking::Sockets::StreamSocketListenerInformation>
{
    using abi = ABI::Windows::Networking::Sockets::StreamSocketListenerInformation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.StreamSocketListenerInformation"; }
};

template <> struct traits<Windows::Networking::Sockets::StreamWebSocket>
{
    using abi = ABI::Windows::Networking::Sockets::StreamWebSocket;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.StreamWebSocket"; }
};

template <> struct traits<Windows::Networking::Sockets::StreamWebSocketControl>
{
    using abi = ABI::Windows::Networking::Sockets::StreamWebSocketControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.StreamWebSocketControl"; }
};

template <> struct traits<Windows::Networking::Sockets::StreamWebSocketInformation>
{
    using abi = ABI::Windows::Networking::Sockets::StreamWebSocketInformation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.StreamWebSocketInformation"; }
};

template <> struct traits<Windows::Networking::Sockets::WebSocketClosedEventArgs>
{
    using abi = ABI::Windows::Networking::Sockets::WebSocketClosedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.WebSocketClosedEventArgs"; }
};

template <> struct traits<Windows::Networking::Sockets::WebSocketError>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.WebSocketError"; }
};

template <> struct traits<Windows::Networking::Sockets::WebSocketKeepAlive>
{
    using abi = ABI::Windows::Networking::Sockets::WebSocketKeepAlive;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.WebSocketKeepAlive"; }
};

template <> struct traits<Windows::Networking::Sockets::WebSocketServerCustomValidationRequestedEventArgs>
{
    using abi = ABI::Windows::Networking::Sockets::WebSocketServerCustomValidationRequestedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Sockets.WebSocketServerCustomValidationRequestedEventArgs"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Web.AtomPub.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Web.Syndication.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Storage.Streams.3.h"
#include "internal/Windows.Security.Credentials.3.h"
#include "internal/Windows.Web.AtomPub.3.h"
#include "Windows.Web.h"
#include "Windows.Web.Syndication.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Web::AtomPub::IAtomPubClient> : produce_base<D, Windows::Web::AtomPub::IAtomPubClient>
{
    HRESULT __stdcall abi_RetrieveServiceDocumentAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::AtomPub::ServiceDocument, Windows::Web::Syndication::RetrievalProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().RetrieveServiceDocumentAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RetrieveMediaResourceAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, Windows::Web::Syndication::RetrievalProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().RetrieveMediaResourceAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RetrieveResourceAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::RetrievalProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().RetrieveResourceAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateResourceAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_in<hstring> description, abi_arg_in<Windows::Web::Syndication::ISyndicationItem> item, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateResourceAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri), *reinterpret_cast<const hstring *>(&description), *reinterpret_cast<const Windows::Web::Syndication::SyndicationItem *>(&item)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateMediaResourceAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_in<hstring> mediaType, abi_arg_in<hstring> description, abi_arg_in<Windows::Storage::Streams::IInputStream> mediaStream, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateMediaResourceAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri), *reinterpret_cast<const hstring *>(&mediaType), *reinterpret_cast<const hstring *>(&description), *reinterpret_cast<const Windows::Storage::Streams::IInputStream *>(&mediaStream)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UpdateMediaResourceAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_in<hstring> mediaType, abi_arg_in<Windows::Storage::Streams::IInputStream> mediaStream, abi_arg_out<Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().UpdateMediaResourceAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri), *reinterpret_cast<const hstring *>(&mediaType), *reinterpret_cast<const Windows::Storage::Streams::IInputStream *>(&mediaStream)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UpdateResourceAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_in<Windows::Web::Syndication::ISyndicationItem> item, abi_arg_out<Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().UpdateResourceAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri), *reinterpret_cast<const Windows::Web::Syndication::SyndicationItem *>(&item)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UpdateResourceItemAsync(abi_arg_in<Windows::Web::Syndication::ISyndicationItem> item, abi_arg_out<Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().UpdateResourceItemAsync(*reinterpret_cast<const Windows::Web::Syndication::SyndicationItem *>(&item)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_DeleteResourceAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().DeleteResourceAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_DeleteResourceItemAsync(abi_arg_in<Windows::Web::Syndication::ISyndicationItem> item, abi_arg_out<Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().DeleteResourceItemAsync(*reinterpret_cast<const Windows::Web::Syndication::SyndicationItem *>(&item)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CancelAsyncOperations() noexcept override
    {
        try
        {
            this->shim().CancelAsyncOperations();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::AtomPub::IAtomPubClientFactory> : produce_base<D, Windows::Web::AtomPub::IAtomPubClientFactory>
{
    HRESULT __stdcall abi_CreateAtomPubClientWithCredentials(abi_arg_in<Windows::Security::Credentials::IPasswordCredential> serverCredential, abi_arg_out<Windows::Web::AtomPub::IAtomPubClient> atomPubClient) noexcept override
    {
        try
        {
            *atomPubClient = detach(this->shim().CreateAtomPubClientWithCredentials(*reinterpret_cast<const Windows::Security::Credentials::PasswordCredential *>(&serverCredential)));
            return S_OK;
        }
        catch (...)
        {
            *atomPubClient = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::AtomPub::IResourceCollection> : produce_base<D, Windows::Web::AtomPub::IResourceCollection>
{
    HRESULT __stdcall get_Title(abi_arg_out<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Title());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Uri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Uri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Categories(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Web::Syndication::SyndicationCategory>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Categories());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Accepts(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Accepts());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::AtomPub::IServiceDocument> : produce_base<D, Windows::Web::AtomPub::IServiceDocument>
{
    HRESULT __stdcall get_Workspaces(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Web::AtomPub::Workspace>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Workspaces());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::AtomPub::IWorkspace> : produce_base<D, Windows::Web::AtomPub::IWorkspace>
{
    HRESULT __stdcall get_Title(abi_arg_out<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Title());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Collections(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Web::AtomPub::ResourceCollection>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Collections());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Web::AtomPub {

template <typename D> Windows::Web::Syndication::ISyndicationText impl_IResourceCollection<D>::Title() const
{
    Windows::Web::Syndication::ISyndicationText value;
    check_hresult(static_cast<const IResourceCollection &>(static_cast<const D &>(*this))->get_Title(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Uri impl_IResourceCollection<D>::Uri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const IResourceCollection &>(static_cast<const D &>(*this))->get_Uri(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Web::Syndication::SyndicationCategory> impl_IResourceCollection<D>::Categories() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Web::Syndication::SyndicationCategory> value;
    check_hresult(static_cast<const IResourceCollection &>(static_cast<const D &>(*this))->get_Categories(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_IResourceCollection<D>::Accepts() const
{
    Windows::Foundation::Collections::IVectorView<hstring> value;
    check_hresult(static_cast<const IResourceCollection &>(static_cast<const D &>(*this))->get_Accepts(put(value)));
    return value;
}

template <typename D> Windows::Web::Syndication::ISyndicationText impl_IWorkspace<D>::Title() const
{
    Windows::Web::Syndication::ISyndicationText value;
    check_hresult(static_cast<const IWorkspace &>(static_cast<const D &>(*this))->get_Title(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Web::AtomPub::ResourceCollection> impl_IWorkspace<D>::Collections() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Web::AtomPub::ResourceCollection> value;
    check_hresult(static_cast<const IWorkspace &>(static_cast<const D &>(*this))->get_Collections(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Web::AtomPub::Workspace> impl_IServiceDocument<D>::Workspaces() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Web::AtomPub::Workspace> value;
    check_hresult(static_cast<const IServiceDocument &>(static_cast<const D &>(*this))->get_Workspaces(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::AtomPub::ServiceDocument, Windows::Web::Syndication::RetrievalProgress> impl_IAtomPubClient<D>::RetrieveServiceDocumentAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::AtomPub::ServiceDocument, Windows::Web::Syndication::RetrievalProgress> operation;
    check_hresult(static_cast<const IAtomPubClient &>(static_cast<const D &>(*this))->abi_RetrieveServiceDocumentAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, Windows::Web::Syndication::RetrievalProgress> impl_IAtomPubClient<D>::RetrieveMediaResourceAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, Windows::Web::Syndication::RetrievalProgress> operation;
    check_hresult(static_cast<const IAtomPubClient &>(static_cast<const D &>(*this))->abi_RetrieveMediaResourceAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::RetrievalProgress> impl_IAtomPubClient<D>::RetrieveResourceAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::RetrievalProgress> operation;
    check_hresult(static_cast<const IAtomPubClient &>(static_cast<const D &>(*this))->abi_RetrieveResourceAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> impl_IAtomPubClient<D>::CreateResourceAsync(const Windows::Foundation::Uri & uri, hstring_ref description, const Windows::Web::Syndication::SyndicationItem & item) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> operation;
    check_hresult(static_cast<const IAtomPubClient &>(static_cast<const D &>(*this))->abi_CreateResourceAsync(get(uri), get(description), get(item), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> impl_IAtomPubClient<D>::CreateMediaResourceAsync(const Windows::Foundation::Uri & uri, hstring_ref mediaType, hstring_ref description, const Windows::Storage::Streams::IInputStream & mediaStream) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> operation;
    check_hresult(static_cast<const IAtomPubClient &>(static_cast<const D &>(*this))->abi_CreateMediaResourceAsync(get(uri), get(mediaType), get(description), get(mediaStream), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> impl_IAtomPubClient<D>::UpdateMediaResourceAsync(const Windows::Foundation::Uri & uri, hstring_ref mediaType, const Windows::Storage::Streams::IInputStream & mediaStream) const
{
    Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> operation;
    check_hresult(static_cast<const IAtomPubClient &>(static_cast<const D &>(*this))->abi_UpdateMediaResourceAsync(get(uri), get(mediaType), get(mediaStream), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> impl_IAtomPubClient<D>::UpdateResourceAsync(const Windows::Foundation::Uri & uri, const Windows::Web::Syndication::SyndicationItem & item) const
{
    Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> operation;
    check_hresult(static_cast<const IAtomPubClient &>(static_cast<const D &>(*this))->abi_UpdateResourceAsync(get(uri), get(item), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> impl_IAtomPubClient<D>::UpdateResourceItemAsync(const Windows::Web::Syndication::SyndicationItem & item) const
{
    Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> operation;
    check_hresult(static_cast<const IAtomPubClient &>(static_cast<const D &>(*this))->abi_UpdateResourceItemAsync(get(item), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> impl_IAtomPubClient<D>::DeleteResourceAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> operation;
    check_hresult(static_cast<const IAtomPubClient &>(static_cast<const D &>(*this))->abi_DeleteResourceAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> impl_IAtomPubClient<D>::DeleteResourceItemAsync(const Windows::Web::Syndication::SyndicationItem & item) const
{
    Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> operation;
    check_hresult(static_cast<const IAtomPubClient &>(static_cast<const D &>(*this))->abi_DeleteResourceItemAsync(get(item), put(operation)));
    return operation;
}

template <typename D> void impl_IAtomPubClient<D>::CancelAsyncOperations() const
{
    check_hresult(static_cast<const IAtomPubClient &>(static_cast<const D &>(*this))->abi_CancelAsyncOperations());
}

template <typename D> Windows::Web::AtomPub::AtomPubClient impl_IAtomPubClientFactory<D>::CreateAtomPubClientWithCredentials(const Windows::Security::Credentials::PasswordCredential & serverCredential) const
{
    Windows::Web::AtomPub::AtomPubClient atomPubClient { nullptr };
    check_hresult(static_cast<const IAtomPubClientFactory &>(static_cast<const D &>(*this))->abi_CreateAtomPubClientWithCredentials(get(serverCredential), put(atomPubClient)));
    return atomPubClient;
}

inline AtomPubClient::AtomPubClient() :
    AtomPubClient(activate_instance<AtomPubClient>())
{}

inline AtomPubClient::AtomPubClient(const Windows::Security::Credentials::PasswordCredential & serverCredential) :
    AtomPubClient(get_activation_factory<AtomPubClient, IAtomPubClientFactory>().CreateAtomPubClientWithCredentials(serverCredential))
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Bluetooth.Rfcomm.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Devices.Bluetooth.Rfcomm.0.h"
#include "Windows.Devices.Bluetooth.0.h"
#include "Windows.Devices.Enumeration.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Networking.0.h"
#include "Windows.Networking.Sockets.0.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Foundation.1.h"
#include "Windows.Storage.Streams.1.h"
#include "Windows.Devices.Enumeration.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::Bluetooth::Rfcomm {

struct __declspec(uuid("ae81ff1f-c5a1-4c40-8c28-f3efd69062f3")) __declspec(novtable) IRfcommDeviceService : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ConnectionHostName(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall get_ConnectionServiceName(hstring * value) = 0;
    virtual HRESULT __stdcall get_ServiceId(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** value) = 0;
    virtual HRESULT __stdcall get_ProtectionLevel(winrt::Windows::Networking::Sockets::SocketProtectionLevel * value) = 0;
    virtual HRESULT __stdcall get_MaxProtectionLevel(winrt::Windows::Networking::Sockets::SocketProtectionLevel * value) = 0;
    virtual HRESULT __stdcall abi_GetSdpRawAttributesAsync(Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IMapView<uint32_t, Windows::Storage::Streams::IBuffer>> ** asyncOp) = 0;
    virtual HRESULT __stdcall abi_GetSdpRawAttributesWithCacheModeAsync(winrt::Windows::Devices::Bluetooth::BluetoothCacheMode cacheMode, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IMapView<uint32_t, Windows::Storage::Streams::IBuffer>> ** asyncOp) = 0;
};

struct __declspec(uuid("536ced14-ebcd-49fe-bf9f-40efc689b20d")) __declspec(novtable) IRfcommDeviceService2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Device(Windows::Devices::Bluetooth::IBluetoothDevice ** value) = 0;
};

struct __declspec(uuid("1c22ace6-dd44-4d23-866d-8f3486ee6490")) __declspec(novtable) IRfcommDeviceService3 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceAccessInformation(Windows::Devices::Enumeration::IDeviceAccessInformation ** value) = 0;
    virtual HRESULT __stdcall abi_RequestAccessAsync(Windows::Foundation::IAsyncOperation<winrt::Windows::Devices::Enumeration::DeviceAccessStatus> ** value) = 0;
};

struct __declspec(uuid("a4a149ef-626d-41ac-b253-87ac5c27e28a")) __declspec(novtable) IRfcommDeviceServiceStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_FromIdAsync(hstring deviceId, Windows::Foundation::IAsyncOperation<Windows::Devices::Bluetooth::Rfcomm::RfcommDeviceService> ** asyncOp) = 0;
    virtual HRESULT __stdcall abi_GetDeviceSelector(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId * serviceId, hstring * selector) = 0;
};

struct __declspec(uuid("aa8cb1c9-e78d-4be4-8076-0a3d87a0a05f")) __declspec(novtable) IRfcommDeviceServiceStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDeviceSelectorForBluetoothDevice(Windows::Devices::Bluetooth::IBluetoothDevice * bluetoothDevice, hstring * selector) = 0;
    virtual HRESULT __stdcall abi_GetDeviceSelectorForBluetoothDeviceWithCacheMode(Windows::Devices::Bluetooth::IBluetoothDevice * bluetoothDevice, winrt::Windows::Devices::Bluetooth::BluetoothCacheMode cacheMode, hstring * selector) = 0;
    virtual HRESULT __stdcall abi_GetDeviceSelectorForBluetoothDeviceAndServiceId(Windows::Devices::Bluetooth::IBluetoothDevice * bluetoothDevice, Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId * serviceId, hstring * selector) = 0;
    virtual HRESULT __stdcall abi_GetDeviceSelectorForBluetoothDeviceAndServiceIdWithCacheMode(Windows::Devices::Bluetooth::IBluetoothDevice * bluetoothDevice, Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId * serviceId, winrt::Windows::Devices::Bluetooth::BluetoothCacheMode cacheMode, hstring * selector) = 0;
};

struct __declspec(uuid("3b48388c-7ccf-488e-9625-d259a5732d55")) __declspec(novtable) IRfcommDeviceServicesResult : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Error(winrt::Windows::Devices::Bluetooth::BluetoothError * value) = 0;
    virtual HRESULT __stdcall get_Services(Windows::Foundation::Collections::IVectorView<Windows::Devices::Bluetooth::Rfcomm::RfcommDeviceService> ** services) = 0;
};

struct __declspec(uuid("22629204-7e02-4017-8136-da1b6a1b9bbf")) __declspec(novtable) IRfcommServiceId : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Uuid(GUID * value) = 0;
    virtual HRESULT __stdcall abi_AsShortId(uint32_t * shortId) = 0;
    virtual HRESULT __stdcall abi_AsString(hstring * id) = 0;
};

struct __declspec(uuid("2a179eba-a975-46e3-b56b-08ffd783a5fe")) __declspec(novtable) IRfcommServiceIdStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_FromUuid(GUID uuid, Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** serviceId) = 0;
    virtual HRESULT __stdcall abi_FromShortId(uint32_t shortId, Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** serviceId) = 0;
    virtual HRESULT __stdcall get_SerialPort(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** serviceId) = 0;
    virtual HRESULT __stdcall get_ObexObjectPush(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** serviceId) = 0;
    virtual HRESULT __stdcall get_ObexFileTransfer(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** serviceId) = 0;
    virtual HRESULT __stdcall get_PhoneBookAccessPce(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** serviceId) = 0;
    virtual HRESULT __stdcall get_PhoneBookAccessPse(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** serviceId) = 0;
    virtual HRESULT __stdcall get_GenericFileTransfer(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** serviceId) = 0;
};

struct __declspec(uuid("eadbfdc4-b1f6-44ff-9f7c-e7a82ab86821")) __declspec(novtable) IRfcommServiceProvider : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServiceId(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** value) = 0;
    virtual HRESULT __stdcall get_SdpRawAttributes(Windows::Foundation::Collections::IMap<uint32_t, Windows::Storage::Streams::IBuffer> ** value) = 0;
    virtual HRESULT __stdcall abi_StartAdvertising(Windows::Networking::Sockets::IStreamSocketListener * listener) = 0;
    virtual HRESULT __stdcall abi_StopAdvertising() = 0;
};

struct __declspec(uuid("736bdfc6-3c81-4d1e-baf2-ddbb81284512")) __declspec(novtable) IRfcommServiceProvider2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_StartAdvertisingWithRadioDiscoverability(Windows::Networking::Sockets::IStreamSocketListener * listener, bool radioDiscoverable) = 0;
};

struct __declspec(uuid("98888303-69ca-413a-84f7-4344c7292997")) __declspec(novtable) IRfcommServiceProviderStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateAsync(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId * serviceId, Windows::Foundation::IAsyncOperation<Windows::Devices::Bluetooth::Rfcomm::RfcommServiceProvider> ** asyncOp) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::RfcommDeviceService> { using default_interface = Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceService; };
template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::RfcommDeviceServicesResult> { using default_interface = Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceServicesResult; };
template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::RfcommServiceId> { using default_interface = Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId; };
template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::RfcommServiceProvider> { using default_interface = Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceProvider; };

}

namespace Windows::Devices::Bluetooth::Rfcomm {

template <typename T> struct impl_IRfcommDeviceService;
template <typename T> struct impl_IRfcommDeviceService2;
template <typename T> struct impl_IRfcommDeviceService3;
template <typename T> struct impl_IRfcommDeviceServiceStatics;
template <typename T> struct impl_IRfcommDeviceServiceStatics2;
template <typename T> struct impl_IRfcommDeviceServicesResult;
template <typename T> struct impl_IRfcommServiceId;
template <typename T> struct impl_IRfcommServiceIdStatics;
template <typename T> struct impl_IRfcommServiceProvider;
template <typename T> struct impl_IRfcommServiceProvider2;
template <typename T> struct impl_IRfcommServiceProviderStatics;

}

namespace impl {

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceService>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceService;
    template <typename D> using consume = Windows::Devices::Bluetooth::Rfcomm::impl_IRfcommDeviceService<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceService2>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceService2;
    template <typename D> using consume = Windows::Devices::Bluetooth::Rfcomm::impl_IRfcommDeviceService2<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceService3>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceService3;
    template <typename D> using consume = Windows::Devices::Bluetooth::Rfcomm::impl_IRfcommDeviceService3<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceServiceStatics>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceServiceStatics;
    template <typename D> using consume = Windows::Devices::Bluetooth::Rfcomm::impl_IRfcommDeviceServiceStatics<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceServiceStatics2>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceServiceStatics2;
    template <typename D> using consume = Windows::Devices::Bluetooth::Rfcomm::impl_IRfcommDeviceServiceStatics2<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceServicesResult>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::IRfcommDeviceServicesResult;
    template <typename D> using consume = Windows::Devices::Bluetooth::Rfcomm::impl_IRfcommDeviceServicesResult<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId;
    template <typename D> using consume = Windows::Devices::Bluetooth::Rfcomm::impl_IRfcommServiceId<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceIdStatics>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceIdStatics;
    template <typename D> using consume = Windows::Devices::Bluetooth::Rfcomm::impl_IRfcommServiceIdStatics<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceProvider>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceProvider;
    template <typename D> using consume = Windows::Devices::Bluetooth::Rfcomm::impl_IRfcommServiceProvider<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceProvider2>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceProvider2;
    template <typename D> using consume = Windows::Devices::Bluetooth::Rfcomm::impl_IRfcommServiceProvider2<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceProviderStatics>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceProviderStatics;
    template <typename D> using consume = Windows::Devices::Bluetooth::Rfcomm::impl_IRfcommServiceProviderStatics<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::RfcommDeviceService>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::RfcommDeviceService;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceService"; }
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::RfcommDeviceServicesResult>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::RfcommDeviceServicesResult;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.Rfcomm.RfcommDeviceServicesResult"; }
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::RfcommServiceId>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::RfcommServiceId;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.Rfcomm.RfcommServiceId"; }
};

template <> struct traits<Windows::Devices::Bluetooth::Rfcomm::RfcommServiceProvider>
{
    using abi = ABI::Windows::Devices::Bluetooth::Rfcomm::RfcommServiceProvider;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.Rfcomm.RfcommServiceProvider"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Gaming.Preview.GamesEnumeration.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Gaming::Preview::GamesEnumeration {

struct GameListChangedEventHandler;
struct GameListRemovedEventHandler;
struct IGameListEntry;
struct IGameListStatics;
struct GameListEntry;

}

namespace Windows::Gaming::Preview::GamesEnumeration {

struct GameListChangedEventHandler;
struct GameListRemovedEventHandler;
struct IGameListEntry;
struct IGameListStatics;
struct GameList;
struct GameListEntry;

}

namespace Windows::Gaming::Preview::GamesEnumeration {

enum class GameListCategory
{
    Candidate = 0,
    ConfirmedBySystem = 1,
    ConfirmedByUser = 2,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.UI.Notifications.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.ApplicationModel.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Data.Xml.Dom.3.h"
#include "internal/Windows.System.3.h"
#include "internal/Windows.UI.Notifications.3.h"
#include "Windows.UI.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::UI::Notifications::IAdaptiveNotificationContent> : produce_base<D, Windows::UI::Notifications::IAdaptiveNotificationContent>
{
    HRESULT __stdcall get_Kind(Windows::UI::Notifications::AdaptiveNotificationContentKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Kind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Hints(abi_arg_out<Windows::Foundation::Collections::IMap<hstring, hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Hints());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IAdaptiveNotificationText> : produce_base<D, Windows::UI::Notifications::IAdaptiveNotificationText>
{
    HRESULT __stdcall get_Text(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Text());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Text(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Text(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Language(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Language());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Language(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Language(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IBadgeNotification> : produce_base<D, Windows::UI::Notifications::IBadgeNotification>
{
    HRESULT __stdcall get_Content(abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Content());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ExpirationTime(abi_arg_in<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            this->shim().ExpirationTime(*reinterpret_cast<const Windows::Foundation::IReference<Windows::Foundation::DateTime> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExpirationTime(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExpirationTime());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IBadgeNotificationFactory> : produce_base<D, Windows::UI::Notifications::IBadgeNotificationFactory>
{
    HRESULT __stdcall abi_CreateBadgeNotification(abi_arg_in<Windows::Data::Xml::Dom::IXmlDocument> content, abi_arg_out<Windows::UI::Notifications::IBadgeNotification> notification) noexcept override
    {
        try
        {
            *notification = detach(this->shim().CreateBadgeNotification(*reinterpret_cast<const Windows::Data::Xml::Dom::XmlDocument *>(&content)));
            return S_OK;
        }
        catch (...)
        {
            *notification = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IBadgeUpdateManagerForUser> : produce_base<D, Windows::UI::Notifications::IBadgeUpdateManagerForUser>
{
    HRESULT __stdcall abi_CreateBadgeUpdaterForApplication(abi_arg_out<Windows::UI::Notifications::IBadgeUpdater> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateBadgeUpdaterForApplication());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateBadgeUpdaterForApplicationWithId(abi_arg_in<hstring> applicationId, abi_arg_out<Windows::UI::Notifications::IBadgeUpdater> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateBadgeUpdaterForApplication(*reinterpret_cast<const hstring *>(&applicationId)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateBadgeUpdaterForSecondaryTile(abi_arg_in<hstring> tileId, abi_arg_out<Windows::UI::Notifications::IBadgeUpdater> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateBadgeUpdaterForSecondaryTile(*reinterpret_cast<const hstring *>(&tileId)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_User(abi_arg_out<Windows::System::IUser> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().User());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IBadgeUpdateManagerStatics> : produce_base<D, Windows::UI::Notifications::IBadgeUpdateManagerStatics>
{
    HRESULT __stdcall abi_CreateBadgeUpdaterForApplication(abi_arg_out<Windows::UI::Notifications::IBadgeUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateBadgeUpdaterForApplication());
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateBadgeUpdaterForApplicationWithId(abi_arg_in<hstring> applicationId, abi_arg_out<Windows::UI::Notifications::IBadgeUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateBadgeUpdaterForApplication(*reinterpret_cast<const hstring *>(&applicationId)));
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateBadgeUpdaterForSecondaryTile(abi_arg_in<hstring> tileId, abi_arg_out<Windows::UI::Notifications::IBadgeUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateBadgeUpdaterForSecondaryTile(*reinterpret_cast<const hstring *>(&tileId)));
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetTemplateContent(Windows::UI::Notifications::BadgeTemplateType type, abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> content) noexcept override
    {
        try
        {
            *content = detach(this->shim().GetTemplateContent(type));
            return S_OK;
        }
        catch (...)
        {
            *content = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IBadgeUpdateManagerStatics2> : produce_base<D, Windows::UI::Notifications::IBadgeUpdateManagerStatics2>
{
    HRESULT __stdcall abi_GetForUser(abi_arg_in<Windows::System::IUser> user, abi_arg_out<Windows::UI::Notifications::IBadgeUpdateManagerForUser> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetForUser(*reinterpret_cast<const Windows::System::User *>(&user)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IBadgeUpdater> : produce_base<D, Windows::UI::Notifications::IBadgeUpdater>
{
    HRESULT __stdcall abi_Update(abi_arg_in<Windows::UI::Notifications::IBadgeNotification> notification) noexcept override
    {
        try
        {
            this->shim().Update(*reinterpret_cast<const Windows::UI::Notifications::BadgeNotification *>(&notification));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Clear() noexcept override
    {
        try
        {
            this->shim().Clear();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StartPeriodicUpdate(abi_arg_in<Windows::Foundation::IUriRuntimeClass> badgeContent, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) noexcept override
    {
        try
        {
            this->shim().StartPeriodicUpdate(*reinterpret_cast<const Windows::Foundation::Uri *>(&badgeContent), requestedInterval);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StartPeriodicUpdateAtTime(abi_arg_in<Windows::Foundation::IUriRuntimeClass> badgeContent, abi_arg_in<Windows::Foundation::DateTime> startTime, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) noexcept override
    {
        try
        {
            this->shim().StartPeriodicUpdate(*reinterpret_cast<const Windows::Foundation::Uri *>(&badgeContent), *reinterpret_cast<const Windows::Foundation::DateTime *>(&startTime), requestedInterval);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StopPeriodicUpdate() noexcept override
    {
        try
        {
            this->shim().StopPeriodicUpdate();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IKnownAdaptiveNotificationHintsStatics> : produce_base<D, Windows::UI::Notifications::IKnownAdaptiveNotificationHintsStatics>
{
    HRESULT __stdcall get_Style(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Style());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Wrap(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Wrap());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaxLines(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxLines());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MinLines(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MinLines());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TextStacking(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TextStacking());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Align(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Align());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IKnownAdaptiveNotificationTextStylesStatics> : produce_base<D, Windows::UI::Notifications::IKnownAdaptiveNotificationTextStylesStatics>
{
    HRESULT __stdcall get_Caption(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Caption());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Body(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Body());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Base(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Base());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Subtitle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Subtitle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Title(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Title());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Subheader(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Subheader());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Header(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Header());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TitleNumeral(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TitleNumeral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SubheaderNumeral(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SubheaderNumeral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HeaderNumeral(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HeaderNumeral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CaptionSubtle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CaptionSubtle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BodySubtle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BodySubtle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BaseSubtle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BaseSubtle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SubtitleSubtle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SubtitleSubtle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TitleSubtle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TitleSubtle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SubheaderSubtle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SubheaderSubtle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SubheaderNumeralSubtle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SubheaderNumeralSubtle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HeaderSubtle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HeaderSubtle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HeaderNumeralSubtle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HeaderNumeralSubtle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IKnownNotificationBindingsStatics> : produce_base<D, Windows::UI::Notifications::IKnownNotificationBindingsStatics>
{
    HRESULT __stdcall get_ToastGeneric(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ToastGeneric());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::INotification> : produce_base<D, Windows::UI::Notifications::INotification>
{
    HRESULT __stdcall get_ExpirationTime(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExpirationTime());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ExpirationTime(abi_arg_in<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            this->shim().ExpirationTime(*reinterpret_cast<const Windows::Foundation::IReference<Windows::Foundation::DateTime> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Visual(abi_arg_out<Windows::UI::Notifications::INotificationVisual> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Visual());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Visual(abi_arg_in<Windows::UI::Notifications::INotificationVisual> value) noexcept override
    {
        try
        {
            this->shim().Visual(*reinterpret_cast<const Windows::UI::Notifications::NotificationVisual *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::INotificationBinding> : produce_base<D, Windows::UI::Notifications::INotificationBinding>
{
    HRESULT __stdcall get_Template(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Template());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Template(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Template(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Language(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Language());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Language(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Language(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Hints(abi_arg_out<Windows::Foundation::Collections::IMap<hstring, hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Hints());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetTextElements(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::AdaptiveNotificationText>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetTextElements());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::INotificationVisual> : produce_base<D, Windows::UI::Notifications::INotificationVisual>
{
    HRESULT __stdcall get_Language(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Language());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Language(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Language(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Bindings(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::UI::Notifications::NotificationBinding>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().Bindings());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetBinding(abi_arg_in<hstring> templateName, abi_arg_out<Windows::UI::Notifications::INotificationBinding> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetBinding(*reinterpret_cast<const hstring *>(&templateName)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IScheduledTileNotification> : produce_base<D, Windows::UI::Notifications::IScheduledTileNotification>
{
    HRESULT __stdcall get_Content(abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Content());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DeliveryTime(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DeliveryTime());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ExpirationTime(abi_arg_in<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            this->shim().ExpirationTime(*reinterpret_cast<const Windows::Foundation::IReference<Windows::Foundation::DateTime> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExpirationTime(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExpirationTime());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Tag(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Tag(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Tag(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Tag());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Id(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Id(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Id(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Id());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IScheduledTileNotificationFactory> : produce_base<D, Windows::UI::Notifications::IScheduledTileNotificationFactory>
{
    HRESULT __stdcall abi_CreateScheduledTileNotification(abi_arg_in<Windows::Data::Xml::Dom::IXmlDocument> content, abi_arg_in<Windows::Foundation::DateTime> deliveryTime, abi_arg_out<Windows::UI::Notifications::IScheduledTileNotification> notification) noexcept override
    {
        try
        {
            *notification = detach(this->shim().CreateScheduledTileNotification(*reinterpret_cast<const Windows::Data::Xml::Dom::XmlDocument *>(&content), *reinterpret_cast<const Windows::Foundation::DateTime *>(&deliveryTime)));
            return S_OK;
        }
        catch (...)
        {
            *notification = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IScheduledToastNotification> : produce_base<D, Windows::UI::Notifications::IScheduledToastNotification>
{
    HRESULT __stdcall get_Content(abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Content());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DeliveryTime(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DeliveryTime());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SnoozeInterval(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SnoozeInterval());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaximumSnoozeCount(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaximumSnoozeCount());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Id(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Id(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Id(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Id());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IScheduledToastNotification2> : produce_base<D, Windows::UI::Notifications::IScheduledToastNotification2>
{
    HRESULT __stdcall put_Tag(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Tag(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Tag(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Tag());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Group(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Group(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Group(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Group());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SuppressPopup(bool value) noexcept override
    {
        try
        {
            this->shim().SuppressPopup(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SuppressPopup(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SuppressPopup());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IScheduledToastNotification3> : produce_base<D, Windows::UI::Notifications::IScheduledToastNotification3>
{
    HRESULT __stdcall get_NotificationMirroring(Windows::UI::Notifications::NotificationMirroring * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NotificationMirroring());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_NotificationMirroring(Windows::UI::Notifications::NotificationMirroring value) noexcept override
    {
        try
        {
            this->shim().NotificationMirroring(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RemoteId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RemoteId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_RemoteId(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().RemoteId(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IScheduledToastNotificationFactory> : produce_base<D, Windows::UI::Notifications::IScheduledToastNotificationFactory>
{
    HRESULT __stdcall abi_CreateScheduledToastNotification(abi_arg_in<Windows::Data::Xml::Dom::IXmlDocument> content, abi_arg_in<Windows::Foundation::DateTime> deliveryTime, abi_arg_out<Windows::UI::Notifications::IScheduledToastNotification> notification) noexcept override
    {
        try
        {
            *notification = detach(this->shim().CreateScheduledToastNotification(*reinterpret_cast<const Windows::Data::Xml::Dom::XmlDocument *>(&content), *reinterpret_cast<const Windows::Foundation::DateTime *>(&deliveryTime)));
            return S_OK;
        }
        catch (...)
        {
            *notification = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateScheduledToastNotificationRecurring(abi_arg_in<Windows::Data::Xml::Dom::IXmlDocument> content, abi_arg_in<Windows::Foundation::DateTime> deliveryTime, abi_arg_in<Windows::Foundation::TimeSpan> snoozeInterval, uint32_t maximumSnoozeCount, abi_arg_out<Windows::UI::Notifications::IScheduledToastNotification> notification) noexcept override
    {
        try
        {
            *notification = detach(this->shim().CreateScheduledToastNotificationRecurring(*reinterpret_cast<const Windows::Data::Xml::Dom::XmlDocument *>(&content), *reinterpret_cast<const Windows::Foundation::DateTime *>(&deliveryTime), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&snoozeInterval), maximumSnoozeCount));
            return S_OK;
        }
        catch (...)
        {
            *notification = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IShownTileNotification> : produce_base<D, Windows::UI::Notifications::IShownTileNotification>
{
    HRESULT __stdcall get_Arguments(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Arguments());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::ITileFlyoutNotification> : produce_base<D, Windows::UI::Notifications::ITileFlyoutNotification>
{
    HRESULT __stdcall get_Content(abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Content());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ExpirationTime(abi_arg_in<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            this->shim().ExpirationTime(*reinterpret_cast<const Windows::Foundation::IReference<Windows::Foundation::DateTime> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExpirationTime(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExpirationTime());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::ITileFlyoutNotificationFactory> : produce_base<D, Windows::UI::Notifications::ITileFlyoutNotificationFactory>
{
    HRESULT __stdcall abi_CreateTileFlyoutNotification(abi_arg_in<Windows::Data::Xml::Dom::IXmlDocument> content, abi_arg_out<Windows::UI::Notifications::ITileFlyoutNotification> notification) noexcept override
    {
        try
        {
            *notification = detach(this->shim().CreateTileFlyoutNotification(*reinterpret_cast<const Windows::Data::Xml::Dom::XmlDocument *>(&content)));
            return S_OK;
        }
        catch (...)
        {
            *notification = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::ITileFlyoutUpdateManagerStatics> : produce_base<D, Windows::UI::Notifications::ITileFlyoutUpdateManagerStatics>
{
    HRESULT __stdcall abi_CreateTileFlyoutUpdaterForApplication(abi_arg_out<Windows::UI::Notifications::ITileFlyoutUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateTileFlyoutUpdaterForApplication());
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateTileFlyoutUpdaterForApplicationWithId(abi_arg_in<hstring> applicationId, abi_arg_out<Windows::UI::Notifications::ITileFlyoutUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateTileFlyoutUpdaterForApplication(*reinterpret_cast<const hstring *>(&applicationId)));
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateTileFlyoutUpdaterForSecondaryTile(abi_arg_in<hstring> tileId, abi_arg_out<Windows::UI::Notifications::ITileFlyoutUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateTileFlyoutUpdaterForSecondaryTile(*reinterpret_cast<const hstring *>(&tileId)));
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetTemplateContent(Windows::UI::Notifications::TileFlyoutTemplateType type, abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> content) noexcept override
    {
        try
        {
            *content = detach(this->shim().GetTemplateContent(type));
            return S_OK;
        }
        catch (...)
        {
            *content = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::ITileFlyoutUpdater> : produce_base<D, Windows::UI::Notifications::ITileFlyoutUpdater>
{
    HRESULT __stdcall abi_Update(abi_arg_in<Windows::UI::Notifications::ITileFlyoutNotification> notification) noexcept override
    {
        try
        {
            this->shim().Update(*reinterpret_cast<const Windows::UI::Notifications::TileFlyoutNotification *>(&notification));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Clear() noexcept override
    {
        try
        {
            this->shim().Clear();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StartPeriodicUpdate(abi_arg_in<Windows::Foundation::IUriRuntimeClass> tileFlyoutContent, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) noexcept override
    {
        try
        {
            this->shim().StartPeriodicUpdate(*reinterpret_cast<const Windows::Foundation::Uri *>(&tileFlyoutContent), requestedInterval);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StartPeriodicUpdateAtTime(abi_arg_in<Windows::Foundation::IUriRuntimeClass> tileFlyoutContent, abi_arg_in<Windows::Foundation::DateTime> startTime, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) noexcept override
    {
        try
        {
            this->shim().StartPeriodicUpdate(*reinterpret_cast<const Windows::Foundation::Uri *>(&tileFlyoutContent), *reinterpret_cast<const Windows::Foundation::DateTime *>(&startTime), requestedInterval);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StopPeriodicUpdate() noexcept override
    {
        try
        {
            this->shim().StopPeriodicUpdate();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Setting(Windows::UI::Notifications::NotificationSetting * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Setting());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::ITileNotification> : produce_base<D, Windows::UI::Notifications::ITileNotification>
{
    HRESULT __stdcall get_Content(abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Content());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ExpirationTime(abi_arg_in<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            this->shim().ExpirationTime(*reinterpret_cast<const Windows::Foundation::IReference<Windows::Foundation::DateTime> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExpirationTime(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExpirationTime());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Tag(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Tag(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Tag(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Tag());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::ITileNotificationFactory> : produce_base<D, Windows::UI::Notifications::ITileNotificationFactory>
{
    HRESULT __stdcall abi_CreateTileNotification(abi_arg_in<Windows::Data::Xml::Dom::IXmlDocument> content, abi_arg_out<Windows::UI::Notifications::ITileNotification> notification) noexcept override
    {
        try
        {
            *notification = detach(this->shim().CreateTileNotification(*reinterpret_cast<const Windows::Data::Xml::Dom::XmlDocument *>(&content)));
            return S_OK;
        }
        catch (...)
        {
            *notification = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::ITileUpdateManagerForUser> : produce_base<D, Windows::UI::Notifications::ITileUpdateManagerForUser>
{
    HRESULT __stdcall abi_CreateTileUpdaterForApplication(abi_arg_out<Windows::UI::Notifications::ITileUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateTileUpdaterForApplicationForUser());
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateTileUpdaterForApplicationWithId(abi_arg_in<hstring> applicationId, abi_arg_out<Windows::UI::Notifications::ITileUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateTileUpdaterForApplication(*reinterpret_cast<const hstring *>(&applicationId)));
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateTileUpdaterForSecondaryTile(abi_arg_in<hstring> tileId, abi_arg_out<Windows::UI::Notifications::ITileUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateTileUpdaterForSecondaryTile(*reinterpret_cast<const hstring *>(&tileId)));
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_User(abi_arg_out<Windows::System::IUser> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().User());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::ITileUpdateManagerStatics> : produce_base<D, Windows::UI::Notifications::ITileUpdateManagerStatics>
{
    HRESULT __stdcall abi_CreateTileUpdaterForApplication(abi_arg_out<Windows::UI::Notifications::ITileUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateTileUpdaterForApplication());
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateTileUpdaterForApplicationWithId(abi_arg_in<hstring> applicationId, abi_arg_out<Windows::UI::Notifications::ITileUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateTileUpdaterForApplication(*reinterpret_cast<const hstring *>(&applicationId)));
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateTileUpdaterForSecondaryTile(abi_arg_in<hstring> tileId, abi_arg_out<Windows::UI::Notifications::ITileUpdater> updater) noexcept override
    {
        try
        {
            *updater = detach(this->shim().CreateTileUpdaterForSecondaryTile(*reinterpret_cast<const hstring *>(&tileId)));
            return S_OK;
        }
        catch (...)
        {
            *updater = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetTemplateContent(Windows::UI::Notifications::TileTemplateType type, abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> content) noexcept override
    {
        try
        {
            *content = detach(this->shim().GetTemplateContent(type));
            return S_OK;
        }
        catch (...)
        {
            *content = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::ITileUpdateManagerStatics2> : produce_base<D, Windows::UI::Notifications::ITileUpdateManagerStatics2>
{
    HRESULT __stdcall abi_GetForUser(abi_arg_in<Windows::System::IUser> user, abi_arg_out<Windows::UI::Notifications::ITileUpdateManagerForUser> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetForUser(*reinterpret_cast<const Windows::System::User *>(&user)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::ITileUpdater> : produce_base<D, Windows::UI::Notifications::ITileUpdater>
{
    HRESULT __stdcall abi_Update(abi_arg_in<Windows::UI::Notifications::ITileNotification> notification) noexcept override
    {
        try
        {
            this->shim().Update(*reinterpret_cast<const Windows::UI::Notifications::TileNotification *>(&notification));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Clear() noexcept override
    {
        try
        {
            this->shim().Clear();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EnableNotificationQueue(bool enable) noexcept override
    {
        try
        {
            this->shim().EnableNotificationQueue(enable);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Setting(Windows::UI::Notifications::NotificationSetting * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Setting());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddToSchedule(abi_arg_in<Windows::UI::Notifications::IScheduledTileNotification> scheduledTile) noexcept override
    {
        try
        {
            this->shim().AddToSchedule(*reinterpret_cast<const Windows::UI::Notifications::ScheduledTileNotification *>(&scheduledTile));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RemoveFromSchedule(abi_arg_in<Windows::UI::Notifications::IScheduledTileNotification> scheduledTile) noexcept override
    {
        try
        {
            this->shim().RemoveFromSchedule(*reinterpret_cast<const Windows::UI::Notifications::ScheduledTileNotification *>(&scheduledTile));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetScheduledTileNotifications(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ScheduledTileNotification>> scheduledTiles) noexcept override
    {
        try
        {
            *scheduledTiles = detach(this->shim().GetScheduledTileNotifications());
            return S_OK;
        }
        catch (...)
        {
            *scheduledTiles = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StartPeriodicUpdate(abi_arg_in<Windows::Foundation::IUriRuntimeClass> tileContent, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) noexcept override
    {
        try
        {
            this->shim().StartPeriodicUpdate(*reinterpret_cast<const Windows::Foundation::Uri *>(&tileContent), requestedInterval);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StartPeriodicUpdateAtTime(abi_arg_in<Windows::Foundation::IUriRuntimeClass> tileContent, abi_arg_in<Windows::Foundation::DateTime> startTime, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) noexcept override
    {
        try
        {
            this->shim().StartPeriodicUpdate(*reinterpret_cast<const Windows::Foundation::Uri *>(&tileContent), *reinterpret_cast<const Windows::Foundation::DateTime *>(&startTime), requestedInterval);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StopPeriodicUpdate() noexcept override
    {
        try
        {
            this->shim().StopPeriodicUpdate();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StartPeriodicUpdateBatch(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Foundation::Uri>> tileContents, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) noexcept override
    {
        try
        {
            this->shim().StartPeriodicUpdateBatch(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Foundation::Uri> *>(&tileContents), requestedInterval);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StartPeriodicUpdateBatchAtTime(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Foundation::Uri>> tileContents, abi_arg_in<Windows::Foundation::DateTime> startTime, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) noexcept override
    {
        try
        {
            this->shim().StartPeriodicUpdateBatch(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Foundation::Uri> *>(&tileContents), *reinterpret_cast<const Windows::Foundation::DateTime *>(&startTime), requestedInterval);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::ITileUpdater2> : produce_base<D, Windows::UI::Notifications::ITileUpdater2>
{
    HRESULT __stdcall abi_EnableNotificationQueueForSquare150x150(bool enable) noexcept override
    {
        try
        {
            this->shim().EnableNotificationQueueForSquare150x150(enable);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EnableNotificationQueueForWide310x150(bool enable) noexcept override
    {
        try
        {
            this->shim().EnableNotificationQueueForWide310x150(enable);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EnableNotificationQueueForSquare310x310(bool enable) noexcept override
    {
        try
        {
            this->shim().EnableNotificationQueueForSquare310x310(enable);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastActivatedEventArgs> : produce_base<D, Windows::UI::Notifications::IToastActivatedEventArgs>
{
    HRESULT __stdcall get_Arguments(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Arguments());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastDismissedEventArgs> : produce_base<D, Windows::UI::Notifications::IToastDismissedEventArgs>
{
    HRESULT __stdcall get_Reason(Windows::UI::Notifications::ToastDismissalReason * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Reason());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastFailedEventArgs> : produce_base<D, Windows::UI::Notifications::IToastFailedEventArgs>
{
    HRESULT __stdcall get_ErrorCode(HRESULT * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ErrorCode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotification> : produce_base<D, Windows::UI::Notifications::IToastNotification>
{
    HRESULT __stdcall get_Content(abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Content());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ExpirationTime(abi_arg_in<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            this->shim().ExpirationTime(*reinterpret_cast<const Windows::Foundation::IReference<Windows::Foundation::DateTime> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExpirationTime(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExpirationTime());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_Dismissed(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::UI::Notifications::ToastDismissedEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().Dismissed(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::UI::Notifications::ToastDismissedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Dismissed(event_token cookie) noexcept override
    {
        try
        {
            this->shim().Dismissed(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_Activated(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::IInspectable>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().Activated(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Activated(event_token cookie) noexcept override
    {
        try
        {
            this->shim().Activated(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_Failed(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::UI::Notifications::ToastFailedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Failed(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::UI::Notifications::ToastFailedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Failed(event_token token) noexcept override
    {
        try
        {
            this->shim().Failed(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotification2> : produce_base<D, Windows::UI::Notifications::IToastNotification2>
{
    HRESULT __stdcall put_Tag(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Tag(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Tag(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Tag());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Group(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Group(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Group(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Group());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SuppressPopup(bool value) noexcept override
    {
        try
        {
            this->shim().SuppressPopup(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SuppressPopup(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SuppressPopup());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotification3> : produce_base<D, Windows::UI::Notifications::IToastNotification3>
{
    HRESULT __stdcall get_NotificationMirroring(Windows::UI::Notifications::NotificationMirroring * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NotificationMirroring());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_NotificationMirroring(Windows::UI::Notifications::NotificationMirroring value) noexcept override
    {
        try
        {
            this->shim().NotificationMirroring(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RemoteId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RemoteId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_RemoteId(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().RemoteId(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotificationActionTriggerDetail> : produce_base<D, Windows::UI::Notifications::IToastNotificationActionTriggerDetail>
{
    HRESULT __stdcall get_Argument(abi_arg_out<hstring> argument) noexcept override
    {
        try
        {
            *argument = detach(this->shim().Argument());
            return S_OK;
        }
        catch (...)
        {
            *argument = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_UserInput(abi_arg_out<Windows::Foundation::Collections::IPropertySet> inputs) noexcept override
    {
        try
        {
            *inputs = detach(this->shim().UserInput());
            return S_OK;
        }
        catch (...)
        {
            *inputs = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotificationFactory> : produce_base<D, Windows::UI::Notifications::IToastNotificationFactory>
{
    HRESULT __stdcall abi_CreateToastNotification(abi_arg_in<Windows::Data::Xml::Dom::IXmlDocument> content, abi_arg_out<Windows::UI::Notifications::IToastNotification> notification) noexcept override
    {
        try
        {
            *notification = detach(this->shim().CreateToastNotification(*reinterpret_cast<const Windows::Data::Xml::Dom::XmlDocument *>(&content)));
            return S_OK;
        }
        catch (...)
        {
            *notification = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotificationHistory> : produce_base<D, Windows::UI::Notifications::IToastNotificationHistory>
{
    HRESULT __stdcall abi_RemoveGroup(abi_arg_in<hstring> group) noexcept override
    {
        try
        {
            this->shim().RemoveGroup(*reinterpret_cast<const hstring *>(&group));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RemoveGroupWithId(abi_arg_in<hstring> group, abi_arg_in<hstring> applicationId) noexcept override
    {
        try
        {
            this->shim().RemoveGroup(*reinterpret_cast<const hstring *>(&group), *reinterpret_cast<const hstring *>(&applicationId));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RemoveGroupedTagWithId(abi_arg_in<hstring> tag, abi_arg_in<hstring> group, abi_arg_in<hstring> applicationId) noexcept override
    {
        try
        {
            this->shim().Remove(*reinterpret_cast<const hstring *>(&tag), *reinterpret_cast<const hstring *>(&group), *reinterpret_cast<const hstring *>(&applicationId));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RemoveGroupedTag(abi_arg_in<hstring> tag, abi_arg_in<hstring> group) noexcept override
    {
        try
        {
            this->shim().Remove(*reinterpret_cast<const hstring *>(&tag), *reinterpret_cast<const hstring *>(&group));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Remove(abi_arg_in<hstring> tag) noexcept override
    {
        try
        {
            this->shim().Remove(*reinterpret_cast<const hstring *>(&tag));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Clear() noexcept override
    {
        try
        {
            this->shim().Clear();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ClearWithId(abi_arg_in<hstring> applicationId) noexcept override
    {
        try
        {
            this->shim().Clear(*reinterpret_cast<const hstring *>(&applicationId));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotificationHistory2> : produce_base<D, Windows::UI::Notifications::IToastNotificationHistory2>
{
    HRESULT __stdcall abi_GetHistory(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ToastNotification>> toasts) noexcept override
    {
        try
        {
            *toasts = detach(this->shim().GetHistory());
            return S_OK;
        }
        catch (...)
        {
            *toasts = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetHistoryWithId(abi_arg_in<hstring> applicationId, abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ToastNotification>> toasts) noexcept override
    {
        try
        {
            *toasts = detach(this->shim().GetHistory(*reinterpret_cast<const hstring *>(&applicationId)));
            return S_OK;
        }
        catch (...)
        {
            *toasts = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotificationHistoryChangedTriggerDetail> : produce_base<D, Windows::UI::Notifications::IToastNotificationHistoryChangedTriggerDetail>
{
    HRESULT __stdcall get_ChangeType(Windows::UI::Notifications::ToastHistoryChangedType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ChangeType());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotificationManagerForUser> : produce_base<D, Windows::UI::Notifications::IToastNotificationManagerForUser>
{
    HRESULT __stdcall abi_CreateToastNotifier(abi_arg_out<Windows::UI::Notifications::IToastNotifier> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateToastNotifier());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateToastNotifierWithId(abi_arg_in<hstring> applicationId, abi_arg_out<Windows::UI::Notifications::IToastNotifier> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateToastNotifier(*reinterpret_cast<const hstring *>(&applicationId)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_History(abi_arg_out<Windows::UI::Notifications::IToastNotificationHistory> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().History());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_User(abi_arg_out<Windows::System::IUser> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().User());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotificationManagerStatics> : produce_base<D, Windows::UI::Notifications::IToastNotificationManagerStatics>
{
    HRESULT __stdcall abi_CreateToastNotifier(abi_arg_out<Windows::UI::Notifications::IToastNotifier> notifier) noexcept override
    {
        try
        {
            *notifier = detach(this->shim().CreateToastNotifier());
            return S_OK;
        }
        catch (...)
        {
            *notifier = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateToastNotifierWithId(abi_arg_in<hstring> applicationId, abi_arg_out<Windows::UI::Notifications::IToastNotifier> notifier) noexcept override
    {
        try
        {
            *notifier = detach(this->shim().CreateToastNotifier(*reinterpret_cast<const hstring *>(&applicationId)));
            return S_OK;
        }
        catch (...)
        {
            *notifier = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetTemplateContent(Windows::UI::Notifications::ToastTemplateType type, abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> content) noexcept override
    {
        try
        {
            *content = detach(this->shim().GetTemplateContent(type));
            return S_OK;
        }
        catch (...)
        {
            *content = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotificationManagerStatics2> : produce_base<D, Windows::UI::Notifications::IToastNotificationManagerStatics2>
{
    HRESULT __stdcall get_History(abi_arg_out<Windows::UI::Notifications::IToastNotificationHistory> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().History());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotificationManagerStatics4> : produce_base<D, Windows::UI::Notifications::IToastNotificationManagerStatics4>
{
    HRESULT __stdcall abi_GetForUser(abi_arg_in<Windows::System::IUser> user, abi_arg_out<Windows::UI::Notifications::IToastNotificationManagerForUser> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetForUser(*reinterpret_cast<const Windows::System::User *>(&user)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ConfigureNotificationMirroring(Windows::UI::Notifications::NotificationMirroring value) noexcept override
    {
        try
        {
            this->shim().ConfigureNotificationMirroring(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IToastNotifier> : produce_base<D, Windows::UI::Notifications::IToastNotifier>
{
    HRESULT __stdcall abi_Show(abi_arg_in<Windows::UI::Notifications::IToastNotification> notification) noexcept override
    {
        try
        {
            this->shim().Show(*reinterpret_cast<const Windows::UI::Notifications::ToastNotification *>(&notification));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Hide(abi_arg_in<Windows::UI::Notifications::IToastNotification> notification) noexcept override
    {
        try
        {
            this->shim().Hide(*reinterpret_cast<const Windows::UI::Notifications::ToastNotification *>(&notification));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Setting(Windows::UI::Notifications::NotificationSetting * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Setting());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddToSchedule(abi_arg_in<Windows::UI::Notifications::IScheduledToastNotification> scheduledToast) noexcept override
    {
        try
        {
            this->shim().AddToSchedule(*reinterpret_cast<const Windows::UI::Notifications::ScheduledToastNotification *>(&scheduledToast));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RemoveFromSchedule(abi_arg_in<Windows::UI::Notifications::IScheduledToastNotification> scheduledToast) noexcept override
    {
        try
        {
            this->shim().RemoveFromSchedule(*reinterpret_cast<const Windows::UI::Notifications::ScheduledToastNotification *>(&scheduledToast));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetScheduledToastNotifications(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ScheduledToastNotification>> scheduledToasts) noexcept override
    {
        try
        {
            *scheduledToasts = detach(this->shim().GetScheduledToastNotifications());
            return S_OK;
        }
        catch (...)
        {
            *scheduledToasts = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IUserNotification> : produce_base<D, Windows::UI::Notifications::IUserNotification>
{
    HRESULT __stdcall get_Notification(abi_arg_out<Windows::UI::Notifications::INotification> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Notification());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AppInfo(abi_arg_out<Windows::ApplicationModel::IAppInfo> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AppInfo());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Id(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Id());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CreationTime(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreationTime());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Notifications::IUserNotificationChangedEventArgs> : produce_base<D, Windows::UI::Notifications::IUserNotificationChangedEventArgs>
{
    HRESULT __stdcall get_ChangeKind(Windows::UI::Notifications::UserNotificationChangedKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ChangeKind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_UserNotificationId(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UserNotificationId());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::UI::Notifications {

template <typename D> hstring impl_IShownTileNotification<D>::Arguments() const
{
    hstring value;
    check_hresult(static_cast<const IShownTileNotification &>(static_cast<const D &>(*this))->get_Arguments(put(value)));
    return value;
}

template <typename D> Windows::UI::Notifications::UserNotificationChangedKind impl_IUserNotificationChangedEventArgs<D>::ChangeKind() const
{
    Windows::UI::Notifications::UserNotificationChangedKind value {};
    check_hresult(static_cast<const IUserNotificationChangedEventArgs &>(static_cast<const D &>(*this))->get_ChangeKind(&value));
    return value;
}

template <typename D> uint32_t impl_IUserNotificationChangedEventArgs<D>::UserNotificationId() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUserNotificationChangedEventArgs &>(static_cast<const D &>(*this))->get_UserNotificationId(&value));
    return value;
}

template <typename D> Windows::UI::Notifications::Notification impl_IUserNotification<D>::Notification() const
{
    Windows::UI::Notifications::Notification value { nullptr };
    check_hresult(static_cast<const IUserNotification &>(static_cast<const D &>(*this))->get_Notification(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::AppInfo impl_IUserNotification<D>::AppInfo() const
{
    Windows::ApplicationModel::AppInfo value { nullptr };
    check_hresult(static_cast<const IUserNotification &>(static_cast<const D &>(*this))->get_AppInfo(put(value)));
    return value;
}

template <typename D> uint32_t impl_IUserNotification<D>::Id() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUserNotification &>(static_cast<const D &>(*this))->get_Id(&value));
    return value;
}

template <typename D> Windows::Foundation::DateTime impl_IUserNotification<D>::CreationTime() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const IUserNotification &>(static_cast<const D &>(*this))->get_CreationTime(put(value)));
    return value;
}

template <typename D> hstring impl_INotificationVisual<D>::Language() const
{
    hstring value;
    check_hresult(static_cast<const INotificationVisual &>(static_cast<const D &>(*this))->get_Language(put(value)));
    return value;
}

template <typename D> void impl_INotificationVisual<D>::Language(hstring_ref value) const
{
    check_hresult(static_cast<const INotificationVisual &>(static_cast<const D &>(*this))->put_Language(get(value)));
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::UI::Notifications::NotificationBinding> impl_INotificationVisual<D>::Bindings() const
{
    Windows::Foundation::Collections::IVector<Windows::UI::Notifications::NotificationBinding> result;
    check_hresult(static_cast<const INotificationVisual &>(static_cast<const D &>(*this))->get_Bindings(put(result)));
    return result;
}

template <typename D> Windows::UI::Notifications::NotificationBinding impl_INotificationVisual<D>::GetBinding(hstring_ref templateName) const
{
    Windows::UI::Notifications::NotificationBinding result { nullptr };
    check_hresult(static_cast<const INotificationVisual &>(static_cast<const D &>(*this))->abi_GetBinding(get(templateName), put(result)));
    return result;
}

template <typename D> Windows::UI::Notifications::AdaptiveNotificationContentKind impl_IAdaptiveNotificationContent<D>::Kind() const
{
    Windows::UI::Notifications::AdaptiveNotificationContentKind value {};
    check_hresult(static_cast<const IAdaptiveNotificationContent &>(static_cast<const D &>(*this))->get_Kind(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IMap<hstring, hstring> impl_IAdaptiveNotificationContent<D>::Hints() const
{
    Windows::Foundation::Collections::IMap<hstring, hstring> value;
    check_hresult(static_cast<const IAdaptiveNotificationContent &>(static_cast<const D &>(*this))->get_Hints(put(value)));
    return value;
}

template <typename D> hstring impl_INotificationBinding<D>::Template() const
{
    hstring value;
    check_hresult(static_cast<const INotificationBinding &>(static_cast<const D &>(*this))->get_Template(put(value)));
    return value;
}

template <typename D> void impl_INotificationBinding<D>::Template(hstring_ref value) const
{
    check_hresult(static_cast<const INotificationBinding &>(static_cast<const D &>(*this))->put_Template(get(value)));
}

template <typename D> hstring impl_INotificationBinding<D>::Language() const
{
    hstring value;
    check_hresult(static_cast<const INotificationBinding &>(static_cast<const D &>(*this))->get_Language(put(value)));
    return value;
}

template <typename D> void impl_INotificationBinding<D>::Language(hstring_ref value) const
{
    check_hresult(static_cast<const INotificationBinding &>(static_cast<const D &>(*this))->put_Language(get(value)));
}

template <typename D> Windows::Foundation::Collections::IMap<hstring, hstring> impl_INotificationBinding<D>::Hints() const
{
    Windows::Foundation::Collections::IMap<hstring, hstring> value;
    check_hresult(static_cast<const INotificationBinding &>(static_cast<const D &>(*this))->get_Hints(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::AdaptiveNotificationText> impl_INotificationBinding<D>::GetTextElements() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::AdaptiveNotificationText> result;
    check_hresult(static_cast<const INotificationBinding &>(static_cast<const D &>(*this))->abi_GetTextElements(put(result)));
    return result;
}

template <typename D> hstring impl_IKnownNotificationBindingsStatics<D>::ToastGeneric() const
{
    hstring value;
    check_hresult(static_cast<const IKnownNotificationBindingsStatics &>(static_cast<const D &>(*this))->get_ToastGeneric(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationHintsStatics<D>::Style() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationHintsStatics &>(static_cast<const D &>(*this))->get_Style(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationHintsStatics<D>::Wrap() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationHintsStatics &>(static_cast<const D &>(*this))->get_Wrap(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationHintsStatics<D>::MaxLines() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationHintsStatics &>(static_cast<const D &>(*this))->get_MaxLines(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationHintsStatics<D>::MinLines() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationHintsStatics &>(static_cast<const D &>(*this))->get_MinLines(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationHintsStatics<D>::TextStacking() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationHintsStatics &>(static_cast<const D &>(*this))->get_TextStacking(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationHintsStatics<D>::Align() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationHintsStatics &>(static_cast<const D &>(*this))->get_Align(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::Caption() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_Caption(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::Body() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_Body(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::Base() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_Base(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::Subtitle() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_Subtitle(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::Title() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_Title(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::Subheader() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_Subheader(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::Header() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_Header(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::TitleNumeral() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_TitleNumeral(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::SubheaderNumeral() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_SubheaderNumeral(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::HeaderNumeral() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_HeaderNumeral(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::CaptionSubtle() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_CaptionSubtle(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::BodySubtle() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_BodySubtle(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::BaseSubtle() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_BaseSubtle(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::SubtitleSubtle() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_SubtitleSubtle(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::TitleSubtle() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_TitleSubtle(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::SubheaderSubtle() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_SubheaderSubtle(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::SubheaderNumeralSubtle() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_SubheaderNumeralSubtle(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::HeaderSubtle() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_HeaderSubtle(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownAdaptiveNotificationTextStylesStatics<D>::HeaderNumeralSubtle() const
{
    hstring value;
    check_hresult(static_cast<const IKnownAdaptiveNotificationTextStylesStatics &>(static_cast<const D &>(*this))->get_HeaderNumeralSubtle(put(value)));
    return value;
}

template <typename D> hstring impl_IAdaptiveNotificationText<D>::Text() const
{
    hstring value;
    check_hresult(static_cast<const IAdaptiveNotificationText &>(static_cast<const D &>(*this))->get_Text(put(value)));
    return value;
}

template <typename D> void impl_IAdaptiveNotificationText<D>::Text(hstring_ref value) const
{
    check_hresult(static_cast<const IAdaptiveNotificationText &>(static_cast<const D &>(*this))->put_Text(get(value)));
}

template <typename D> hstring impl_IAdaptiveNotificationText<D>::Language() const
{
    hstring value;
    check_hresult(static_cast<const IAdaptiveNotificationText &>(static_cast<const D &>(*this))->get_Language(put(value)));
    return value;
}

template <typename D> void impl_IAdaptiveNotificationText<D>::Language(hstring_ref value) const
{
    check_hresult(static_cast<const IAdaptiveNotificationText &>(static_cast<const D &>(*this))->put_Language(get(value)));
}

template <typename D> Windows::UI::Notifications::ToastDismissalReason impl_IToastDismissedEventArgs<D>::Reason() const
{
    Windows::UI::Notifications::ToastDismissalReason value {};
    check_hresult(static_cast<const IToastDismissedEventArgs &>(static_cast<const D &>(*this))->get_Reason(&value));
    return value;
}

template <typename D> HRESULT impl_IToastFailedEventArgs<D>::ErrorCode() const
{
    HRESULT value {};
    check_hresult(static_cast<const IToastFailedEventArgs &>(static_cast<const D &>(*this))->get_ErrorCode(&value));
    return value;
}

template <typename D> hstring impl_IToastActivatedEventArgs<D>::Arguments() const
{
    hstring value;
    check_hresult(static_cast<const IToastActivatedEventArgs &>(static_cast<const D &>(*this))->get_Arguments(put(value)));
    return value;
}

template <typename D> Windows::UI::Notifications::TileUpdater impl_ITileUpdateManagerStatics<D>::CreateTileUpdaterForApplication() const
{
    Windows::UI::Notifications::TileUpdater updater { nullptr };
    check_hresult(static_cast<const ITileUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_CreateTileUpdaterForApplication(put(updater)));
    return updater;
}

template <typename D> Windows::UI::Notifications::TileUpdater impl_ITileUpdateManagerStatics<D>::CreateTileUpdaterForApplication(hstring_ref applicationId) const
{
    Windows::UI::Notifications::TileUpdater updater { nullptr };
    check_hresult(static_cast<const ITileUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_CreateTileUpdaterForApplicationWithId(get(applicationId), put(updater)));
    return updater;
}

template <typename D> Windows::UI::Notifications::TileUpdater impl_ITileUpdateManagerStatics<D>::CreateTileUpdaterForSecondaryTile(hstring_ref tileId) const
{
    Windows::UI::Notifications::TileUpdater updater { nullptr };
    check_hresult(static_cast<const ITileUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_CreateTileUpdaterForSecondaryTile(get(tileId), put(updater)));
    return updater;
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_ITileUpdateManagerStatics<D>::GetTemplateContent(Windows::UI::Notifications::TileTemplateType type) const
{
    Windows::Data::Xml::Dom::XmlDocument content { nullptr };
    check_hresult(static_cast<const ITileUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_GetTemplateContent(type, put(content)));
    return content;
}

template <typename D> Windows::UI::Notifications::TileUpdateManagerForUser impl_ITileUpdateManagerStatics2<D>::GetForUser(const Windows::System::User & user) const
{
    Windows::UI::Notifications::TileUpdateManagerForUser result { nullptr };
    check_hresult(static_cast<const ITileUpdateManagerStatics2 &>(static_cast<const D &>(*this))->abi_GetForUser(get(user), put(result)));
    return result;
}

template <typename D> Windows::UI::Notifications::TileUpdater impl_ITileUpdateManagerForUser<D>::CreateTileUpdaterForApplicationForUser() const
{
    Windows::UI::Notifications::TileUpdater updater { nullptr };
    check_hresult(static_cast<const ITileUpdateManagerForUser &>(static_cast<const D &>(*this))->abi_CreateTileUpdaterForApplication(put(updater)));
    return updater;
}

template <typename D> Windows::UI::Notifications::TileUpdater impl_ITileUpdateManagerForUser<D>::CreateTileUpdaterForApplication(hstring_ref applicationId) const
{
    Windows::UI::Notifications::TileUpdater updater { nullptr };
    check_hresult(static_cast<const ITileUpdateManagerForUser &>(static_cast<const D &>(*this))->abi_CreateTileUpdaterForApplicationWithId(get(applicationId), put(updater)));
    return updater;
}

template <typename D> Windows::UI::Notifications::TileUpdater impl_ITileUpdateManagerForUser<D>::CreateTileUpdaterForSecondaryTile(hstring_ref tileId) const
{
    Windows::UI::Notifications::TileUpdater updater { nullptr };
    check_hresult(static_cast<const ITileUpdateManagerForUser &>(static_cast<const D &>(*this))->abi_CreateTileUpdaterForSecondaryTile(get(tileId), put(updater)));
    return updater;
}

template <typename D> Windows::System::User impl_ITileUpdateManagerForUser<D>::User() const
{
    Windows::System::User value { nullptr };
    check_hresult(static_cast<const ITileUpdateManagerForUser &>(static_cast<const D &>(*this))->get_User(put(value)));
    return value;
}

template <typename D> void impl_ITileUpdater<D>::Update(const Windows::UI::Notifications::TileNotification & notification) const
{
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->abi_Update(get(notification)));
}

template <typename D> void impl_ITileUpdater<D>::Clear() const
{
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->abi_Clear());
}

template <typename D> void impl_ITileUpdater<D>::EnableNotificationQueue(bool enable) const
{
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->abi_EnableNotificationQueue(enable));
}

template <typename D> Windows::UI::Notifications::NotificationSetting impl_ITileUpdater<D>::Setting() const
{
    Windows::UI::Notifications::NotificationSetting value {};
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->get_Setting(&value));
    return value;
}

template <typename D> void impl_ITileUpdater<D>::AddToSchedule(const Windows::UI::Notifications::ScheduledTileNotification & scheduledTile) const
{
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->abi_AddToSchedule(get(scheduledTile)));
}

template <typename D> void impl_ITileUpdater<D>::RemoveFromSchedule(const Windows::UI::Notifications::ScheduledTileNotification & scheduledTile) const
{
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->abi_RemoveFromSchedule(get(scheduledTile)));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ScheduledTileNotification> impl_ITileUpdater<D>::GetScheduledTileNotifications() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ScheduledTileNotification> scheduledTiles;
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->abi_GetScheduledTileNotifications(put(scheduledTiles)));
    return scheduledTiles;
}

template <typename D> void impl_ITileUpdater<D>::StartPeriodicUpdate(const Windows::Foundation::Uri & tileContent, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) const
{
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->abi_StartPeriodicUpdate(get(tileContent), requestedInterval));
}

template <typename D> void impl_ITileUpdater<D>::StartPeriodicUpdate(const Windows::Foundation::Uri & tileContent, const Windows::Foundation::DateTime & startTime, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) const
{
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->abi_StartPeriodicUpdateAtTime(get(tileContent), get(startTime), requestedInterval));
}

template <typename D> void impl_ITileUpdater<D>::StopPeriodicUpdate() const
{
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->abi_StopPeriodicUpdate());
}

template <typename D> void impl_ITileUpdater<D>::StartPeriodicUpdateBatch(const Windows::Foundation::Collections::IIterable<Windows::Foundation::Uri> & tileContents, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) const
{
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->abi_StartPeriodicUpdateBatch(get(tileContents), requestedInterval));
}

template <typename D> void impl_ITileUpdater<D>::StartPeriodicUpdateBatch(const Windows::Foundation::Collections::IIterable<Windows::Foundation::Uri> & tileContents, const Windows::Foundation::DateTime & startTime, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) const
{
    check_hresult(static_cast<const ITileUpdater &>(static_cast<const D &>(*this))->abi_StartPeriodicUpdateBatchAtTime(get(tileContents), get(startTime), requestedInterval));
}

template <typename D> void impl_ITileUpdater2<D>::EnableNotificationQueueForSquare150x150(bool enable) const
{
    check_hresult(static_cast<const ITileUpdater2 &>(static_cast<const D &>(*this))->abi_EnableNotificationQueueForSquare150x150(enable));
}

template <typename D> void impl_ITileUpdater2<D>::EnableNotificationQueueForWide310x150(bool enable) const
{
    check_hresult(static_cast<const ITileUpdater2 &>(static_cast<const D &>(*this))->abi_EnableNotificationQueueForWide310x150(enable));
}

template <typename D> void impl_ITileUpdater2<D>::EnableNotificationQueueForSquare310x310(bool enable) const
{
    check_hresult(static_cast<const ITileUpdater2 &>(static_cast<const D &>(*this))->abi_EnableNotificationQueueForSquare310x310(enable));
}

template <typename D> Windows::UI::Notifications::TileFlyoutUpdater impl_ITileFlyoutUpdateManagerStatics<D>::CreateTileFlyoutUpdaterForApplication() const
{
    Windows::UI::Notifications::TileFlyoutUpdater updater { nullptr };
    check_hresult(static_cast<const ITileFlyoutUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_CreateTileFlyoutUpdaterForApplication(put(updater)));
    return updater;
}

template <typename D> Windows::UI::Notifications::TileFlyoutUpdater impl_ITileFlyoutUpdateManagerStatics<D>::CreateTileFlyoutUpdaterForApplication(hstring_ref applicationId) const
{
    Windows::UI::Notifications::TileFlyoutUpdater updater { nullptr };
    check_hresult(static_cast<const ITileFlyoutUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_CreateTileFlyoutUpdaterForApplicationWithId(get(applicationId), put(updater)));
    return updater;
}

template <typename D> Windows::UI::Notifications::TileFlyoutUpdater impl_ITileFlyoutUpdateManagerStatics<D>::CreateTileFlyoutUpdaterForSecondaryTile(hstring_ref tileId) const
{
    Windows::UI::Notifications::TileFlyoutUpdater updater { nullptr };
    check_hresult(static_cast<const ITileFlyoutUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_CreateTileFlyoutUpdaterForSecondaryTile(get(tileId), put(updater)));
    return updater;
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_ITileFlyoutUpdateManagerStatics<D>::GetTemplateContent(Windows::UI::Notifications::TileFlyoutTemplateType type) const
{
    Windows::Data::Xml::Dom::XmlDocument content { nullptr };
    check_hresult(static_cast<const ITileFlyoutUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_GetTemplateContent(type, put(content)));
    return content;
}

template <typename D> void impl_ITileFlyoutUpdater<D>::Update(const Windows::UI::Notifications::TileFlyoutNotification & notification) const
{
    check_hresult(static_cast<const ITileFlyoutUpdater &>(static_cast<const D &>(*this))->abi_Update(get(notification)));
}

template <typename D> void impl_ITileFlyoutUpdater<D>::Clear() const
{
    check_hresult(static_cast<const ITileFlyoutUpdater &>(static_cast<const D &>(*this))->abi_Clear());
}

template <typename D> void impl_ITileFlyoutUpdater<D>::StartPeriodicUpdate(const Windows::Foundation::Uri & tileFlyoutContent, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) const
{
    check_hresult(static_cast<const ITileFlyoutUpdater &>(static_cast<const D &>(*this))->abi_StartPeriodicUpdate(get(tileFlyoutContent), requestedInterval));
}

template <typename D> void impl_ITileFlyoutUpdater<D>::StartPeriodicUpdate(const Windows::Foundation::Uri & tileFlyoutContent, const Windows::Foundation::DateTime & startTime, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) const
{
    check_hresult(static_cast<const ITileFlyoutUpdater &>(static_cast<const D &>(*this))->abi_StartPeriodicUpdateAtTime(get(tileFlyoutContent), get(startTime), requestedInterval));
}

template <typename D> void impl_ITileFlyoutUpdater<D>::StopPeriodicUpdate() const
{
    check_hresult(static_cast<const ITileFlyoutUpdater &>(static_cast<const D &>(*this))->abi_StopPeriodicUpdate());
}

template <typename D> Windows::UI::Notifications::NotificationSetting impl_ITileFlyoutUpdater<D>::Setting() const
{
    Windows::UI::Notifications::NotificationSetting value {};
    check_hresult(static_cast<const ITileFlyoutUpdater &>(static_cast<const D &>(*this))->get_Setting(&value));
    return value;
}

template <typename D> Windows::UI::Notifications::BadgeUpdater impl_IBadgeUpdateManagerStatics<D>::CreateBadgeUpdaterForApplication() const
{
    Windows::UI::Notifications::BadgeUpdater updater { nullptr };
    check_hresult(static_cast<const IBadgeUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_CreateBadgeUpdaterForApplication(put(updater)));
    return updater;
}

template <typename D> Windows::UI::Notifications::BadgeUpdater impl_IBadgeUpdateManagerStatics<D>::CreateBadgeUpdaterForApplication(hstring_ref applicationId) const
{
    Windows::UI::Notifications::BadgeUpdater updater { nullptr };
    check_hresult(static_cast<const IBadgeUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_CreateBadgeUpdaterForApplicationWithId(get(applicationId), put(updater)));
    return updater;
}

template <typename D> Windows::UI::Notifications::BadgeUpdater impl_IBadgeUpdateManagerStatics<D>::CreateBadgeUpdaterForSecondaryTile(hstring_ref tileId) const
{
    Windows::UI::Notifications::BadgeUpdater updater { nullptr };
    check_hresult(static_cast<const IBadgeUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_CreateBadgeUpdaterForSecondaryTile(get(tileId), put(updater)));
    return updater;
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_IBadgeUpdateManagerStatics<D>::GetTemplateContent(Windows::UI::Notifications::BadgeTemplateType type) const
{
    Windows::Data::Xml::Dom::XmlDocument content { nullptr };
    check_hresult(static_cast<const IBadgeUpdateManagerStatics &>(static_cast<const D &>(*this))->abi_GetTemplateContent(type, put(content)));
    return content;
}

template <typename D> Windows::UI::Notifications::BadgeUpdateManagerForUser impl_IBadgeUpdateManagerStatics2<D>::GetForUser(const Windows::System::User & user) const
{
    Windows::UI::Notifications::BadgeUpdateManagerForUser result { nullptr };
    check_hresult(static_cast<const IBadgeUpdateManagerStatics2 &>(static_cast<const D &>(*this))->abi_GetForUser(get(user), put(result)));
    return result;
}

template <typename D> Windows::UI::Notifications::BadgeUpdater impl_IBadgeUpdateManagerForUser<D>::CreateBadgeUpdaterForApplication() const
{
    Windows::UI::Notifications::BadgeUpdater result { nullptr };
    check_hresult(static_cast<const IBadgeUpdateManagerForUser &>(static_cast<const D &>(*this))->abi_CreateBadgeUpdaterForApplication(put(result)));
    return result;
}

template <typename D> Windows::UI::Notifications::BadgeUpdater impl_IBadgeUpdateManagerForUser<D>::CreateBadgeUpdaterForApplication(hstring_ref applicationId) const
{
    Windows::UI::Notifications::BadgeUpdater result { nullptr };
    check_hresult(static_cast<const IBadgeUpdateManagerForUser &>(static_cast<const D &>(*this))->abi_CreateBadgeUpdaterForApplicationWithId(get(applicationId), put(result)));
    return result;
}

template <typename D> Windows::UI::Notifications::BadgeUpdater impl_IBadgeUpdateManagerForUser<D>::CreateBadgeUpdaterForSecondaryTile(hstring_ref tileId) const
{
    Windows::UI::Notifications::BadgeUpdater result { nullptr };
    check_hresult(static_cast<const IBadgeUpdateManagerForUser &>(static_cast<const D &>(*this))->abi_CreateBadgeUpdaterForSecondaryTile(get(tileId), put(result)));
    return result;
}

template <typename D> Windows::System::User impl_IBadgeUpdateManagerForUser<D>::User() const
{
    Windows::System::User value { nullptr };
    check_hresult(static_cast<const IBadgeUpdateManagerForUser &>(static_cast<const D &>(*this))->get_User(put(value)));
    return value;
}

template <typename D> void impl_IBadgeUpdater<D>::Update(const Windows::UI::Notifications::BadgeNotification & notification) const
{
    check_hresult(static_cast<const IBadgeUpdater &>(static_cast<const D &>(*this))->abi_Update(get(notification)));
}

template <typename D> void impl_IBadgeUpdater<D>::Clear() const
{
    check_hresult(static_cast<const IBadgeUpdater &>(static_cast<const D &>(*this))->abi_Clear());
}

template <typename D> void impl_IBadgeUpdater<D>::StartPeriodicUpdate(const Windows::Foundation::Uri & badgeContent, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) const
{
    check_hresult(static_cast<const IBadgeUpdater &>(static_cast<const D &>(*this))->abi_StartPeriodicUpdate(get(badgeContent), requestedInterval));
}

template <typename D> void impl_IBadgeUpdater<D>::StartPeriodicUpdate(const Windows::Foundation::Uri & badgeContent, const Windows::Foundation::DateTime & startTime, Windows::UI::Notifications::PeriodicUpdateRecurrence requestedInterval) const
{
    check_hresult(static_cast<const IBadgeUpdater &>(static_cast<const D &>(*this))->abi_StartPeriodicUpdateAtTime(get(badgeContent), get(startTime), requestedInterval));
}

template <typename D> void impl_IBadgeUpdater<D>::StopPeriodicUpdate() const
{
    check_hresult(static_cast<const IBadgeUpdater &>(static_cast<const D &>(*this))->abi_StopPeriodicUpdate());
}

template <typename D> Windows::UI::Notifications::ToastNotifier impl_IToastNotificationManagerStatics<D>::CreateToastNotifier() const
{
    Windows::UI::Notifications::ToastNotifier notifier { nullptr };
    check_hresult(static_cast<const IToastNotificationManagerStatics &>(static_cast<const D &>(*this))->abi_CreateToastNotifier(put(notifier)));
    return notifier;
}

template <typename D> Windows::UI::Notifications::ToastNotifier impl_IToastNotificationManagerStatics<D>::CreateToastNotifier(hstring_ref applicationId) const
{
    Windows::UI::Notifications::ToastNotifier notifier { nullptr };
    check_hresult(static_cast<const IToastNotificationManagerStatics &>(static_cast<const D &>(*this))->abi_CreateToastNotifierWithId(get(applicationId), put(notifier)));
    return notifier;
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_IToastNotificationManagerStatics<D>::GetTemplateContent(Windows::UI::Notifications::ToastTemplateType type) const
{
    Windows::Data::Xml::Dom::XmlDocument content { nullptr };
    check_hresult(static_cast<const IToastNotificationManagerStatics &>(static_cast<const D &>(*this))->abi_GetTemplateContent(type, put(content)));
    return content;
}

template <typename D> void impl_IToastNotifier<D>::Show(const Windows::UI::Notifications::ToastNotification & notification) const
{
    check_hresult(static_cast<const IToastNotifier &>(static_cast<const D &>(*this))->abi_Show(get(notification)));
}

template <typename D> void impl_IToastNotifier<D>::Hide(const Windows::UI::Notifications::ToastNotification & notification) const
{
    check_hresult(static_cast<const IToastNotifier &>(static_cast<const D &>(*this))->abi_Hide(get(notification)));
}

template <typename D> Windows::UI::Notifications::NotificationSetting impl_IToastNotifier<D>::Setting() const
{
    Windows::UI::Notifications::NotificationSetting value {};
    check_hresult(static_cast<const IToastNotifier &>(static_cast<const D &>(*this))->get_Setting(&value));
    return value;
}

template <typename D> void impl_IToastNotifier<D>::AddToSchedule(const Windows::UI::Notifications::ScheduledToastNotification & scheduledToast) const
{
    check_hresult(static_cast<const IToastNotifier &>(static_cast<const D &>(*this))->abi_AddToSchedule(get(scheduledToast)));
}

template <typename D> void impl_IToastNotifier<D>::RemoveFromSchedule(const Windows::UI::Notifications::ScheduledToastNotification & scheduledToast) const
{
    check_hresult(static_cast<const IToastNotifier &>(static_cast<const D &>(*this))->abi_RemoveFromSchedule(get(scheduledToast)));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ScheduledToastNotification> impl_IToastNotifier<D>::GetScheduledToastNotifications() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ScheduledToastNotification> scheduledToasts;
    check_hresult(static_cast<const IToastNotifier &>(static_cast<const D &>(*this))->abi_GetScheduledToastNotifications(put(scheduledToasts)));
    return scheduledToasts;
}

template <typename D> Windows::UI::Notifications::TileNotification impl_ITileNotificationFactory<D>::CreateTileNotification(const Windows::Data::Xml::Dom::XmlDocument & content) const
{
    Windows::UI::Notifications::TileNotification notification { nullptr };
    check_hresult(static_cast<const ITileNotificationFactory &>(static_cast<const D &>(*this))->abi_CreateTileNotification(get(content), put(notification)));
    return notification;
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_ITileNotification<D>::Content() const
{
    Windows::Data::Xml::Dom::XmlDocument value { nullptr };
    check_hresult(static_cast<const ITileNotification &>(static_cast<const D &>(*this))->get_Content(put(value)));
    return value;
}

template <typename D> void impl_ITileNotification<D>::ExpirationTime(const Windows::Foundation::IReference<Windows::Foundation::DateTime> & value) const
{
    check_hresult(static_cast<const ITileNotification &>(static_cast<const D &>(*this))->put_ExpirationTime(get(value)));
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::DateTime> impl_ITileNotification<D>::ExpirationTime() const
{
    Windows::Foundation::IReference<Windows::Foundation::DateTime> value;
    check_hresult(static_cast<const ITileNotification &>(static_cast<const D &>(*this))->get_ExpirationTime(put(value)));
    return value;
}

template <typename D> void impl_ITileNotification<D>::Tag(hstring_ref value) const
{
    check_hresult(static_cast<const ITileNotification &>(static_cast<const D &>(*this))->put_Tag(get(value)));
}

template <typename D> hstring impl_ITileNotification<D>::Tag() const
{
    hstring value;
    check_hresult(static_cast<const ITileNotification &>(static_cast<const D &>(*this))->get_Tag(put(value)));
    return value;
}

template <typename D> Windows::UI::Notifications::TileFlyoutNotification impl_ITileFlyoutNotificationFactory<D>::CreateTileFlyoutNotification(const Windows::Data::Xml::Dom::XmlDocument & content) const
{
    Windows::UI::Notifications::TileFlyoutNotification notification { nullptr };
    check_hresult(static_cast<const ITileFlyoutNotificationFactory &>(static_cast<const D &>(*this))->abi_CreateTileFlyoutNotification(get(content), put(notification)));
    return notification;
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_ITileFlyoutNotification<D>::Content() const
{
    Windows::Data::Xml::Dom::XmlDocument value { nullptr };
    check_hresult(static_cast<const ITileFlyoutNotification &>(static_cast<const D &>(*this))->get_Content(put(value)));
    return value;
}

template <typename D> void impl_ITileFlyoutNotification<D>::ExpirationTime(const Windows::Foundation::IReference<Windows::Foundation::DateTime> & value) const
{
    check_hresult(static_cast<const ITileFlyoutNotification &>(static_cast<const D &>(*this))->put_ExpirationTime(get(value)));
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::DateTime> impl_ITileFlyoutNotification<D>::ExpirationTime() const
{
    Windows::Foundation::IReference<Windows::Foundation::DateTime> value;
    check_hresult(static_cast<const ITileFlyoutNotification &>(static_cast<const D &>(*this))->get_ExpirationTime(put(value)));
    return value;
}

template <typename D> Windows::UI::Notifications::BadgeNotification impl_IBadgeNotificationFactory<D>::CreateBadgeNotification(const Windows::Data::Xml::Dom::XmlDocument & content) const
{
    Windows::UI::Notifications::BadgeNotification notification { nullptr };
    check_hresult(static_cast<const IBadgeNotificationFactory &>(static_cast<const D &>(*this))->abi_CreateBadgeNotification(get(content), put(notification)));
    return notification;
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_IBadgeNotification<D>::Content() const
{
    Windows::Data::Xml::Dom::XmlDocument value { nullptr };
    check_hresult(static_cast<const IBadgeNotification &>(static_cast<const D &>(*this))->get_Content(put(value)));
    return value;
}

template <typename D> void impl_IBadgeNotification<D>::ExpirationTime(const Windows::Foundation::IReference<Windows::Foundation::DateTime> & value) const
{
    check_hresult(static_cast<const IBadgeNotification &>(static_cast<const D &>(*this))->put_ExpirationTime(get(value)));
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::DateTime> impl_IBadgeNotification<D>::ExpirationTime() const
{
    Windows::Foundation::IReference<Windows::Foundation::DateTime> value;
    check_hresult(static_cast<const IBadgeNotification &>(static_cast<const D &>(*this))->get_ExpirationTime(put(value)));
    return value;
}

template <typename D> Windows::UI::Notifications::ToastNotification impl_IToastNotificationFactory<D>::CreateToastNotification(const Windows::Data::Xml::Dom::XmlDocument & content) const
{
    Windows::UI::Notifications::ToastNotification notification { nullptr };
    check_hresult(static_cast<const IToastNotificationFactory &>(static_cast<const D &>(*this))->abi_CreateToastNotification(get(content), put(notification)));
    return notification;
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_IToastNotification<D>::Content() const
{
    Windows::Data::Xml::Dom::XmlDocument value { nullptr };
    check_hresult(static_cast<const IToastNotification &>(static_cast<const D &>(*this))->get_Content(put(value)));
    return value;
}

template <typename D> void impl_IToastNotification<D>::ExpirationTime(const Windows::Foundation::IReference<Windows::Foundation::DateTime> & value) const
{
    check_hresult(static_cast<const IToastNotification &>(static_cast<const D &>(*this))->put_ExpirationTime(get(value)));
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::DateTime> impl_IToastNotification<D>::ExpirationTime() const
{
    Windows::Foundation::IReference<Windows::Foundation::DateTime> value;
    check_hresult(static_cast<const IToastNotification &>(static_cast<const D &>(*this))->get_ExpirationTime(put(value)));
    return value;
}

template <typename D> event_token impl_IToastNotification<D>::Dismissed(const Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::UI::Notifications::ToastDismissedEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IToastNotification &>(static_cast<const D &>(*this))->add_Dismissed(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IToastNotification> impl_IToastNotification<D>::Dismissed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::UI::Notifications::ToastDismissedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IToastNotification>(this, &ABI::Windows::UI::Notifications::IToastNotification::remove_Dismissed, Dismissed(handler));
}

template <typename D> void impl_IToastNotification<D>::Dismissed(event_token cookie) const
{
    check_hresult(static_cast<const IToastNotification &>(static_cast<const D &>(*this))->remove_Dismissed(cookie));
}

template <typename D> event_token impl_IToastNotification<D>::Activated(const Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::IInspectable> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IToastNotification &>(static_cast<const D &>(*this))->add_Activated(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IToastNotification> impl_IToastNotification<D>::Activated(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IToastNotification>(this, &ABI::Windows::UI::Notifications::IToastNotification::remove_Activated, Activated(handler));
}

template <typename D> void impl_IToastNotification<D>::Activated(event_token cookie) const
{
    check_hresult(static_cast<const IToastNotification &>(static_cast<const D &>(*this))->remove_Activated(cookie));
}

template <typename D> event_token impl_IToastNotification<D>::Failed(const Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::UI::Notifications::ToastFailedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IToastNotification &>(static_cast<const D &>(*this))->add_Failed(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IToastNotification> impl_IToastNotification<D>::Failed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Notifications::ToastNotification, Windows::UI::Notifications::ToastFailedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IToastNotification>(this, &ABI::Windows::UI::Notifications::IToastNotification::remove_Failed, Failed(handler));
}

template <typename D> void impl_IToastNotification<D>::Failed(event_token token) const
{
    check_hresult(static_cast<const IToastNotification &>(static_cast<const D &>(*this))->remove_Failed(token));
}

template <typename D> void impl_IToastNotification2<D>::Tag(hstring_ref value) const
{
    check_hresult(static_cast<const IToastNotification2 &>(static_cast<const D &>(*this))->put_Tag(get(value)));
}

template <typename D> hstring impl_IToastNotification2<D>::Tag() const
{
    hstring value;
    check_hresult(static_cast<const IToastNotification2 &>(static_cast<const D &>(*this))->get_Tag(put(value)));
    return value;
}

template <typename D> void impl_IToastNotification2<D>::Group(hstring_ref value) const
{
    check_hresult(static_cast<const IToastNotification2 &>(static_cast<const D &>(*this))->put_Group(get(value)));
}

template <typename D> hstring impl_IToastNotification2<D>::Group() const
{
    hstring value;
    check_hresult(static_cast<const IToastNotification2 &>(static_cast<const D &>(*this))->get_Group(put(value)));
    return value;
}

template <typename D> void impl_IToastNotification2<D>::SuppressPopup(bool value) const
{
    check_hresult(static_cast<const IToastNotification2 &>(static_cast<const D &>(*this))->put_SuppressPopup(value));
}

template <typename D> bool impl_IToastNotification2<D>::SuppressPopup() const
{
    bool value {};
    check_hresult(static_cast<const IToastNotification2 &>(static_cast<const D &>(*this))->get_SuppressPopup(&value));
    return value;
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::DateTime> impl_INotification<D>::ExpirationTime() const
{
    Windows::Foundation::IReference<Windows::Foundation::DateTime> value;
    check_hresult(static_cast<const INotification &>(static_cast<const D &>(*this))->get_ExpirationTime(put(value)));
    return value;
}

template <typename D> void impl_INotification<D>::ExpirationTime(const Windows::Foundation::IReference<Windows::Foundation::DateTime> & value) const
{
    check_hresult(static_cast<const INotification &>(static_cast<const D &>(*this))->put_ExpirationTime(get(value)));
}

template <typename D> Windows::UI::Notifications::NotificationVisual impl_INotification<D>::Visual() const
{
    Windows::UI::Notifications::NotificationVisual value { nullptr };
    check_hresult(static_cast<const INotification &>(static_cast<const D &>(*this))->get_Visual(put(value)));
    return value;
}

template <typename D> void impl_INotification<D>::Visual(const Windows::UI::Notifications::NotificationVisual & value) const
{
    check_hresult(static_cast<const INotification &>(static_cast<const D &>(*this))->put_Visual(get(value)));
}

template <typename D> Windows::UI::Notifications::NotificationMirroring impl_IToastNotification3<D>::NotificationMirroring() const
{
    Windows::UI::Notifications::NotificationMirroring value {};
    check_hresult(static_cast<const IToastNotification3 &>(static_cast<const D &>(*this))->get_NotificationMirroring(&value));
    return value;
}

template <typename D> void impl_IToastNotification3<D>::NotificationMirroring(Windows::UI::Notifications::NotificationMirroring value) const
{
    check_hresult(static_cast<const IToastNotification3 &>(static_cast<const D &>(*this))->put_NotificationMirroring(value));
}

template <typename D> hstring impl_IToastNotification3<D>::RemoteId() const
{
    hstring value;
    check_hresult(static_cast<const IToastNotification3 &>(static_cast<const D &>(*this))->get_RemoteId(put(value)));
    return value;
}

template <typename D> void impl_IToastNotification3<D>::RemoteId(hstring_ref value) const
{
    check_hresult(static_cast<const IToastNotification3 &>(static_cast<const D &>(*this))->put_RemoteId(get(value)));
}

template <typename D> Windows::UI::Notifications::ScheduledToastNotification impl_IScheduledToastNotificationFactory<D>::CreateScheduledToastNotification(const Windows::Data::Xml::Dom::XmlDocument & content, const Windows::Foundation::DateTime & deliveryTime) const
{
    Windows::UI::Notifications::ScheduledToastNotification notification { nullptr };
    check_hresult(static_cast<const IScheduledToastNotificationFactory &>(static_cast<const D &>(*this))->abi_CreateScheduledToastNotification(get(content), get(deliveryTime), put(notification)));
    return notification;
}

template <typename D> Windows::UI::Notifications::ScheduledToastNotification impl_IScheduledToastNotificationFactory<D>::CreateScheduledToastNotificationRecurring(const Windows::Data::Xml::Dom::XmlDocument & content, const Windows::Foundation::DateTime & deliveryTime, const Windows::Foundation::TimeSpan & snoozeInterval, uint32_t maximumSnoozeCount) const
{
    Windows::UI::Notifications::ScheduledToastNotification notification { nullptr };
    check_hresult(static_cast<const IScheduledToastNotificationFactory &>(static_cast<const D &>(*this))->abi_CreateScheduledToastNotificationRecurring(get(content), get(deliveryTime), get(snoozeInterval), maximumSnoozeCount, put(notification)));
    return notification;
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_IScheduledToastNotification<D>::Content() const
{
    Windows::Data::Xml::Dom::XmlDocument value { nullptr };
    check_hresult(static_cast<const IScheduledToastNotification &>(static_cast<const D &>(*this))->get_Content(put(value)));
    return value;
}

template <typename D> Windows::Foundation::DateTime impl_IScheduledToastNotification<D>::DeliveryTime() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const IScheduledToastNotification &>(static_cast<const D &>(*this))->get_DeliveryTime(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::TimeSpan> impl_IScheduledToastNotification<D>::SnoozeInterval() const
{
    Windows::Foundation::IReference<Windows::Foundation::TimeSpan> value;
    check_hresult(static_cast<const IScheduledToastNotification &>(static_cast<const D &>(*this))->get_SnoozeInterval(put(value)));
    return value;
}

template <typename D> uint32_t impl_IScheduledToastNotification<D>::MaximumSnoozeCount() const
{
    uint32_t value {};
    check_hresult(static_cast<const IScheduledToastNotification &>(static_cast<const D &>(*this))->get_MaximumSnoozeCount(&value));
    return value;
}

template <typename D> void impl_IScheduledToastNotification<D>::Id(hstring_ref value) const
{
    check_hresult(static_cast<const IScheduledToastNotification &>(static_cast<const D &>(*this))->put_Id(get(value)));
}

template <typename D> hstring impl_IScheduledToastNotification<D>::Id() const
{
    hstring value;
    check_hresult(static_cast<const IScheduledToastNotification &>(static_cast<const D &>(*this))->get_Id(put(value)));
    return value;
}

template <typename D> void impl_IScheduledToastNotification2<D>::Tag(hstring_ref value) const
{
    check_hresult(static_cast<const IScheduledToastNotification2 &>(static_cast<const D &>(*this))->put_Tag(get(value)));
}

template <typename D> hstring impl_IScheduledToastNotification2<D>::Tag() const
{
    hstring value;
    check_hresult(static_cast<const IScheduledToastNotification2 &>(static_cast<const D &>(*this))->get_Tag(put(value)));
    return value;
}

template <typename D> void impl_IScheduledToastNotification2<D>::Group(hstring_ref value) const
{
    check_hresult(static_cast<const IScheduledToastNotification2 &>(static_cast<const D &>(*this))->put_Group(get(value)));
}

template <typename D> hstring impl_IScheduledToastNotification2<D>::Group() const
{
    hstring value;
    check_hresult(static_cast<const IScheduledToastNotification2 &>(static_cast<const D &>(*this))->get_Group(put(value)));
    return value;
}

template <typename D> void impl_IScheduledToastNotification2<D>::SuppressPopup(bool value) const
{
    check_hresult(static_cast<const IScheduledToastNotification2 &>(static_cast<const D &>(*this))->put_SuppressPopup(value));
}

template <typename D> bool impl_IScheduledToastNotification2<D>::SuppressPopup() const
{
    bool value {};
    check_hresult(static_cast<const IScheduledToastNotification2 &>(static_cast<const D &>(*this))->get_SuppressPopup(&value));
    return value;
}

template <typename D> Windows::UI::Notifications::NotificationMirroring impl_IScheduledToastNotification3<D>::NotificationMirroring() const
{
    Windows::UI::Notifications::NotificationMirroring value {};
    check_hresult(static_cast<const IScheduledToastNotification3 &>(static_cast<const D &>(*this))->get_NotificationMirroring(&value));
    return value;
}

template <typename D> void impl_IScheduledToastNotification3<D>::NotificationMirroring(Windows::UI::Notifications::NotificationMirroring value) const
{
    check_hresult(static_cast<const IScheduledToastNotification3 &>(static_cast<const D &>(*this))->put_NotificationMirroring(value));
}

template <typename D> hstring impl_IScheduledToastNotification3<D>::RemoteId() const
{
    hstring value;
    check_hresult(static_cast<const IScheduledToastNotification3 &>(static_cast<const D &>(*this))->get_RemoteId(put(value)));
    return value;
}

template <typename D> void impl_IScheduledToastNotification3<D>::RemoteId(hstring_ref value) const
{
    check_hresult(static_cast<const IScheduledToastNotification3 &>(static_cast<const D &>(*this))->put_RemoteId(get(value)));
}

template <typename D> Windows::UI::Notifications::ScheduledTileNotification impl_IScheduledTileNotificationFactory<D>::CreateScheduledTileNotification(const Windows::Data::Xml::Dom::XmlDocument & content, const Windows::Foundation::DateTime & deliveryTime) const
{
    Windows::UI::Notifications::ScheduledTileNotification notification { nullptr };
    check_hresult(static_cast<const IScheduledTileNotificationFactory &>(static_cast<const D &>(*this))->abi_CreateScheduledTileNotification(get(content), get(deliveryTime), put(notification)));
    return notification;
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_IScheduledTileNotification<D>::Content() const
{
    Windows::Data::Xml::Dom::XmlDocument value { nullptr };
    check_hresult(static_cast<const IScheduledTileNotification &>(static_cast<const D &>(*this))->get_Content(put(value)));
    return value;
}

template <typename D> Windows::Foundation::DateTime impl_IScheduledTileNotification<D>::DeliveryTime() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const IScheduledTileNotification &>(static_cast<const D &>(*this))->get_DeliveryTime(put(value)));
    return value;
}

template <typename D> void impl_IScheduledTileNotification<D>::ExpirationTime(const Windows::Foundation::IReference<Windows::Foundation::DateTime> & value) const
{
    check_hresult(static_cast<const IScheduledTileNotification &>(static_cast<const D &>(*this))->put_ExpirationTime(get(value)));
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::DateTime> impl_IScheduledTileNotification<D>::ExpirationTime() const
{
    Windows::Foundation::IReference<Windows::Foundation::DateTime> value;
    check_hresult(static_cast<const IScheduledTileNotification &>(static_cast<const D &>(*this))->get_ExpirationTime(put(value)));
    return value;
}

template <typename D> void impl_IScheduledTileNotification<D>::Tag(hstring_ref value) const
{
    check_hresult(static_cast<const IScheduledTileNotification &>(static_cast<const D &>(*this))->put_Tag(get(value)));
}

template <typename D> hstring impl_IScheduledTileNotification<D>::Tag() const
{
    hstring value;
    check_hresult(static_cast<const IScheduledTileNotification &>(static_cast<const D &>(*this))->get_Tag(put(value)));
    return value;
}

template <typename D> void impl_IScheduledTileNotification<D>::Id(hstring_ref value) const
{
    check_hresult(static_cast<const IScheduledTileNotification &>(static_cast<const D &>(*this))->put_Id(get(value)));
}

template <typename D> hstring impl_IScheduledTileNotification<D>::Id() const
{
    hstring value;
    check_hresult(static_cast<const IScheduledTileNotification &>(static_cast<const D &>(*this))->get_Id(put(value)));
    return value;
}

template <typename D> Windows::UI::Notifications::ToastNotificationHistory impl_IToastNotificationManagerStatics2<D>::History() const
{
    Windows::UI::Notifications::ToastNotificationHistory value { nullptr };
    check_hresult(static_cast<const IToastNotificationManagerStatics2 &>(static_cast<const D &>(*this))->get_History(put(value)));
    return value;
}

template <typename D> Windows::UI::Notifications::ToastNotificationManagerForUser impl_IToastNotificationManagerStatics4<D>::GetForUser(const Windows::System::User & user) const
{
    Windows::UI::Notifications::ToastNotificationManagerForUser result { nullptr };
    check_hresult(static_cast<const IToastNotificationManagerStatics4 &>(static_cast<const D &>(*this))->abi_GetForUser(get(user), put(result)));
    return result;
}

template <typename D> void impl_IToastNotificationManagerStatics4<D>::ConfigureNotificationMirroring(Windows::UI::Notifications::NotificationMirroring value) const
{
    check_hresult(static_cast<const IToastNotificationManagerStatics4 &>(static_cast<const D &>(*this))->abi_ConfigureNotificationMirroring(value));
}

template <typename D> Windows::UI::Notifications::ToastNotifier impl_IToastNotificationManagerForUser<D>::CreateToastNotifier() const
{
    Windows::UI::Notifications::ToastNotifier result { nullptr };
    check_hresult(static_cast<const IToastNotificationManagerForUser &>(static_cast<const D &>(*this))->abi_CreateToastNotifier(put(result)));
    return result;
}

template <typename D> Windows::UI::Notifications::ToastNotifier impl_IToastNotificationManagerForUser<D>::CreateToastNotifier(hstring_ref applicationId) const
{
    Windows::UI::Notifications::ToastNotifier result { nullptr };
    check_hresult(static_cast<const IToastNotificationManagerForUser &>(static_cast<const D &>(*this))->abi_CreateToastNotifierWithId(get(applicationId), put(result)));
    return result;
}

template <typename D> Windows::UI::Notifications::ToastNotificationHistory impl_IToastNotificationManagerForUser<D>::History() const
{
    Windows::UI::Notifications::ToastNotificationHistory value { nullptr };
    check_hresult(static_cast<const IToastNotificationManagerForUser &>(static_cast<const D &>(*this))->get_History(put(value)));
    return value;
}

template <typename D> Windows::System::User impl_IToastNotificationManagerForUser<D>::User() const
{
    Windows::System::User value { nullptr };
    check_hresult(static_cast<const IToastNotificationManagerForUser &>(static_cast<const D &>(*this))->get_User(put(value)));
    return value;
}

template <typename D> void impl_IToastNotificationHistory<D>::RemoveGroup(hstring_ref group) const
{
    check_hresult(static_cast<const IToastNotificationHistory &>(static_cast<const D &>(*this))->abi_RemoveGroup(get(group)));
}

template <typename D> void impl_IToastNotificationHistory<D>::RemoveGroup(hstring_ref group, hstring_ref applicationId) const
{
    check_hresult(static_cast<const IToastNotificationHistory &>(static_cast<const D &>(*this))->abi_RemoveGroupWithId(get(group), get(applicationId)));
}

template <typename D> void impl_IToastNotificationHistory<D>::Remove(hstring_ref tag, hstring_ref group, hstring_ref applicationId) const
{
    check_hresult(static_cast<const IToastNotificationHistory &>(static_cast<const D &>(*this))->abi_RemoveGroupedTagWithId(get(tag), get(group), get(applicationId)));
}

template <typename D> void impl_IToastNotificationHistory<D>::Remove(hstring_ref tag, hstring_ref group) const
{
    check_hresult(static_cast<const IToastNotificationHistory &>(static_cast<const D &>(*this))->abi_RemoveGroupedTag(get(tag), get(group)));
}

template <typename D> void impl_IToastNotificationHistory<D>::Remove(hstring_ref tag) const
{
    check_hresult(static_cast<const IToastNotificationHistory &>(static_cast<const D &>(*this))->abi_Remove(get(tag)));
}

template <typename D> void impl_IToastNotificationHistory<D>::Clear() const
{
    check_hresult(static_cast<const IToastNotificationHistory &>(static_cast<const D &>(*this))->abi_Clear());
}

template <typename D> void impl_IToastNotificationHistory<D>::Clear(hstring_ref applicationId) const
{
    check_hresult(static_cast<const IToastNotificationHistory &>(static_cast<const D &>(*this))->abi_ClearWithId(get(applicationId)));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ToastNotification> impl_IToastNotificationHistory2<D>::GetHistory() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ToastNotification> toasts;
    check_hresult(static_cast<const IToastNotificationHistory2 &>(static_cast<const D &>(*this))->abi_GetHistory(put(toasts)));
    return toasts;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ToastNotification> impl_IToastNotificationHistory2<D>::GetHistory(hstring_ref applicationId) const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ToastNotification> toasts;
    check_hresult(static_cast<const IToastNotificationHistory2 &>(static_cast<const D &>(*this))->abi_GetHistoryWithId(get(applicationId), put(toasts)));
    return toasts;
}

template <typename D> Windows::UI::Notifications::ToastHistoryChangedType impl_IToastNotificationHistoryChangedTriggerDetail<D>::ChangeType() const
{
    Windows::UI::Notifications::ToastHistoryChangedType value {};
    check_hresult(static_cast<const IToastNotificationHistoryChangedTriggerDetail &>(static_cast<const D &>(*this))->get_ChangeType(&value));
    return value;
}

template <typename D> hstring impl_IToastNotificationActionTriggerDetail<D>::Argument() const
{
    hstring argument;
    check_hresult(static_cast<const IToastNotificationActionTriggerDetail &>(static_cast<const D &>(*this))->get_Argument(put(argument)));
    return argument;
}

template <typename D> Windows::Foundation::Collections::ValueSet impl_IToastNotificationActionTriggerDetail<D>::UserInput() const
{
    Windows::Foundation::Collections::ValueSet inputs { nullptr };
    check_hresult(static_cast<const IToastNotificationActionTriggerDetail &>(static_cast<const D &>(*this))->get_UserInput(put(inputs)));
    return inputs;
}

inline AdaptiveNotificationText::AdaptiveNotificationText() :
    AdaptiveNotificationText(activate_instance<AdaptiveNotificationText>())
{}

inline BadgeNotification::BadgeNotification(const Windows::Data::Xml::Dom::XmlDocument & content) :
    BadgeNotification(get_activation_factory<BadgeNotification, IBadgeNotificationFactory>().CreateBadgeNotification(content))
{}

inline Windows::UI::Notifications::BadgeUpdater BadgeUpdateManager::CreateBadgeUpdaterForApplication()
{
    return get_activation_factory<BadgeUpdateManager, IBadgeUpdateManagerStatics>().CreateBadgeUpdaterForApplication();
}

inline Windows::UI::Notifications::BadgeUpdater BadgeUpdateManager::CreateBadgeUpdaterForApplication(hstring_ref applicationId)
{
    return get_activation_factory<BadgeUpdateManager, IBadgeUpdateManagerStatics>().CreateBadgeUpdaterForApplication(applicationId);
}

inline Windows::UI::Notifications::BadgeUpdater BadgeUpdateManager::CreateBadgeUpdaterForSecondaryTile(hstring_ref tileId)
{
    return get_activation_factory<BadgeUpdateManager, IBadgeUpdateManagerStatics>().CreateBadgeUpdaterForSecondaryTile(tileId);
}

inline Windows::Data::Xml::Dom::XmlDocument BadgeUpdateManager::GetTemplateContent(Windows::UI::Notifications::BadgeTemplateType type)
{
    return get_activation_factory<BadgeUpdateManager, IBadgeUpdateManagerStatics>().GetTemplateContent(type);
}

inline Windows::UI::Notifications::BadgeUpdateManagerForUser BadgeUpdateManager::GetForUser(const Windows::System::User & user)
{
    return get_activation_factory<BadgeUpdateManager, IBadgeUpdateManagerStatics2>().GetForUser(user);
}

inline hstring KnownAdaptiveNotificationHints::Style()
{
    return get_activation_factory<KnownAdaptiveNotificationHints, IKnownAdaptiveNotificationHintsStatics>().Style();
}

inline hstring KnownAdaptiveNotificationHints::Wrap()
{
    return get_activation_factory<KnownAdaptiveNotificationHints, IKnownAdaptiveNotificationHintsStatics>().Wrap();
}

inline hstring KnownAdaptiveNotificationHints::MaxLines()
{
    return get_activation_factory<KnownAdaptiveNotificationHints, IKnownAdaptiveNotificationHintsStatics>().MaxLines();
}

inline hstring KnownAdaptiveNotificationHints::MinLines()
{
    return get_activation_factory<KnownAdaptiveNotificationHints, IKnownAdaptiveNotificationHintsStatics>().MinLines();
}

inline hstring KnownAdaptiveNotificationHints::TextStacking()
{
    return get_activation_factory<KnownAdaptiveNotificationHints, IKnownAdaptiveNotificationHintsStatics>().TextStacking();
}

inline hstring KnownAdaptiveNotificationHints::Align()
{
    return get_activation_factory<KnownAdaptiveNotificationHints, IKnownAdaptiveNotificationHintsStatics>().Align();
}

inline hstring KnownAdaptiveNotificationTextStyles::Caption()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().Caption();
}

inline hstring KnownAdaptiveNotificationTextStyles::Body()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().Body();
}

inline hstring KnownAdaptiveNotificationTextStyles::Base()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().Base();
}

inline hstring KnownAdaptiveNotificationTextStyles::Subtitle()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().Subtitle();
}

inline hstring KnownAdaptiveNotificationTextStyles::Title()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().Title();
}

inline hstring KnownAdaptiveNotificationTextStyles::Subheader()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().Subheader();
}

inline hstring KnownAdaptiveNotificationTextStyles::Header()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().Header();
}

inline hstring KnownAdaptiveNotificationTextStyles::TitleNumeral()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().TitleNumeral();
}

inline hstring KnownAdaptiveNotificationTextStyles::SubheaderNumeral()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().SubheaderNumeral();
}

inline hstring KnownAdaptiveNotificationTextStyles::HeaderNumeral()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().HeaderNumeral();
}

inline hstring KnownAdaptiveNotificationTextStyles::CaptionSubtle()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().CaptionSubtle();
}

inline hstring KnownAdaptiveNotificationTextStyles::BodySubtle()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().BodySubtle();
}

inline hstring KnownAdaptiveNotificationTextStyles::BaseSubtle()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().BaseSubtle();
}

inline hstring KnownAdaptiveNotificationTextStyles::SubtitleSubtle()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().SubtitleSubtle();
}

inline hstring KnownAdaptiveNotificationTextStyles::TitleSubtle()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().TitleSubtle();
}

inline hstring KnownAdaptiveNotificationTextStyles::SubheaderSubtle()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().SubheaderSubtle();
}

inline hstring KnownAdaptiveNotificationTextStyles::SubheaderNumeralSubtle()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().SubheaderNumeralSubtle();
}

inline hstring KnownAdaptiveNotificationTextStyles::HeaderSubtle()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().HeaderSubtle();
}

inline hstring KnownAdaptiveNotificationTextStyles::HeaderNumeralSubtle()
{
    return get_activation_factory<KnownAdaptiveNotificationTextStyles, IKnownAdaptiveNotificationTextStylesStatics>().HeaderNumeralSubtle();
}

inline hstring KnownNotificationBindings::ToastGeneric()
{
    return get_activation_factory<KnownNotificationBindings, IKnownNotificationBindingsStatics>().ToastGeneric();
}

inline Notification::Notification() :
    Notification(activate_instance<Notification>())
{}

inline ScheduledTileNotification::ScheduledTileNotification(const Windows::Data::Xml::Dom::XmlDocument & content, const Windows::Foundation::DateTime & deliveryTime) :
    ScheduledTileNotification(get_activation_factory<ScheduledTileNotification, IScheduledTileNotificationFactory>().CreateScheduledTileNotification(content, deliveryTime))
{}

inline ScheduledToastNotification::ScheduledToastNotification(const Windows::Data::Xml::Dom::XmlDocument & content, const Windows::Foundation::DateTime & deliveryTime) :
    ScheduledToastNotification(get_activation_factory<ScheduledToastNotification, IScheduledToastNotificationFactory>().CreateScheduledToastNotification(content, deliveryTime))
{}

inline ScheduledToastNotification::ScheduledToastNotification(const Windows::Data::Xml::Dom::XmlDocument & content, const Windows::Foundation::DateTime & deliveryTime, const Windows::Foundation::TimeSpan & snoozeInterval, uint32_t maximumSnoozeCount) :
    ScheduledToastNotification(get_activation_factory<ScheduledToastNotification, IScheduledToastNotificationFactory>().CreateScheduledToastNotificationRecurring(content, deliveryTime, snoozeInterval, maximumSnoozeCount))
{}

inline TileFlyoutNotification::TileFlyoutNotification(const Windows::Data::Xml::Dom::XmlDocument & content) :
    TileFlyoutNotification(get_activation_factory<TileFlyoutNotification, ITileFlyoutNotificationFactory>().CreateTileFlyoutNotification(content))
{}

inline Windows::UI::Notifications::TileFlyoutUpdater TileFlyoutUpdateManager::CreateTileFlyoutUpdaterForApplication()
{
    return get_activation_factory<TileFlyoutUpdateManager, ITileFlyoutUpdateManagerStatics>().CreateTileFlyoutUpdaterForApplication();
}

inline Windows::UI::Notifications::TileFlyoutUpdater TileFlyoutUpdateManager::CreateTileFlyoutUpdaterForApplication(hstring_ref applicationId)
{
    return get_activation_factory<TileFlyoutUpdateManager, ITileFlyoutUpdateManagerStatics>().CreateTileFlyoutUpdaterForApplication(applicationId);
}

inline Windows::UI::Notifications::TileFlyoutUpdater TileFlyoutUpdateManager::CreateTileFlyoutUpdaterForSecondaryTile(hstring_ref tileId)
{
    return get_activation_factory<TileFlyoutUpdateManager, ITileFlyoutUpdateManagerStatics>().CreateTileFlyoutUpdaterForSecondaryTile(tileId);
}

inline Windows::Data::Xml::Dom::XmlDocument TileFlyoutUpdateManager::GetTemplateContent(Windows::UI::Notifications::TileFlyoutTemplateType type)
{
    return get_activation_factory<TileFlyoutUpdateManager, ITileFlyoutUpdateManagerStatics>().GetTemplateContent(type);
}

inline TileNotification::TileNotification(const Windows::Data::Xml::Dom::XmlDocument & content) :
    TileNotification(get_activation_factory<TileNotification, ITileNotificationFactory>().CreateTileNotification(content))
{}

inline Windows::UI::Notifications::TileUpdater TileUpdateManager::CreateTileUpdaterForApplication()
{
    return get_activation_factory<TileUpdateManager, ITileUpdateManagerStatics>().CreateTileUpdaterForApplication();
}

inline Windows::UI::Notifications::TileUpdater TileUpdateManager::CreateTileUpdaterForApplication(hstring_ref applicationId)
{
    return get_activation_factory<TileUpdateManager, ITileUpdateManagerStatics>().CreateTileUpdaterForApplication(applicationId);
}

inline Windows::UI::Notifications::TileUpdater TileUpdateManager::CreateTileUpdaterForSecondaryTile(hstring_ref tileId)
{
    return get_activation_factory<TileUpdateManager, ITileUpdateManagerStatics>().CreateTileUpdaterForSecondaryTile(tileId);
}

inline Windows::Data::Xml::Dom::XmlDocument TileUpdateManager::GetTemplateContent(Windows::UI::Notifications::TileTemplateType type)
{
    return get_activation_factory<TileUpdateManager, ITileUpdateManagerStatics>().GetTemplateContent(type);
}

inline Windows::UI::Notifications::TileUpdateManagerForUser TileUpdateManager::GetForUser(const Windows::System::User & user)
{
    return get_activation_factory<TileUpdateManager, ITileUpdateManagerStatics2>().GetForUser(user);
}

inline ToastNotification::ToastNotification(const Windows::Data::Xml::Dom::XmlDocument & content) :
    ToastNotification(get_activation_factory<ToastNotification, IToastNotificationFactory>().CreateToastNotification(content))
{}

inline Windows::UI::Notifications::ToastNotifier ToastNotificationManager::CreateToastNotifier()
{
    return get_activation_factory<ToastNotificationManager, IToastNotificationManagerStatics>().CreateToastNotifier();
}

inline Windows::UI::Notifications::ToastNotifier ToastNotificationManager::CreateToastNotifier(hstring_ref applicationId)
{
    return get_activation_factory<ToastNotificationManager, IToastNotificationManagerStatics>().CreateToastNotifier(applicationId);
}

inline Windows::Data::Xml::Dom::XmlDocument ToastNotificationManager::GetTemplateContent(Windows::UI::Notifications::ToastTemplateType type)
{
    return get_activation_factory<ToastNotificationManager, IToastNotificationManagerStatics>().GetTemplateContent(type);
}

inline Windows::UI::Notifications::ToastNotificationHistory ToastNotificationManager::History()
{
    return get_activation_factory<ToastNotificationManager, IToastNotificationManagerStatics2>().History();
}

inline Windows::UI::Notifications::ToastNotificationManagerForUser ToastNotificationManager::GetForUser(const Windows::System::User & user)
{
    return get_activation_factory<ToastNotificationManager, IToastNotificationManagerStatics4>().GetForUser(user);
}

inline void ToastNotificationManager::ConfigureNotificationMirroring(Windows::UI::Notifications::NotificationMirroring value)
{
    get_activation_factory<ToastNotificationManager, IToastNotificationManagerStatics4>().ConfigureNotificationMirroring(value);
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Media.Imaging.4.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace Windows::UI::Xaml::Media::Imaging {

template <typename D, typename A = ABI::Windows::UI::Xaml::Media::Imaging::IXamlRenderingBackgroundTaskOverrides>
class IXamlRenderingBackgroundTaskOverridesT : public A
{
    D & shim() noexcept { return *static_cast<D *>(this); }

public:

    using IXamlRenderingBackgroundTaskOverrides = winrt::Windows::UI::Xaml::Media::Imaging::IXamlRenderingBackgroundTaskOverrides;

    void OnRun(const Windows::ApplicationModel::Background::IBackgroundTaskInstance & taskInstance)
    {
        shim().as<IXamlRenderingBackgroundTaskOverrides>().OnRun(taskInstance);
    }

    HRESULT __stdcall abi_OnRun(abi_arg_in<Windows::ApplicationModel::Background::IBackgroundTaskInstance> taskInstance) noexcept override
    {
        try
        {
            this->shim().OnRun(*reinterpret_cast<const Windows::ApplicationModel::Background::IBackgroundTaskInstance *>(&taskInstance));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Phone.Notification.Management.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Phone::Notification::Management {

struct IAccessoryManager;
struct IAccessoryManager2;
struct IAccessoryManager3;
struct IAccessoryNotificationTriggerDetails;
struct IAlarmNotificationTriggerDetails;
struct IAlarmNotificationTriggerDetails2;
struct IAppNotificationInfo;
struct IBinaryId;
struct ICalendarChangedNotificationTriggerDetails;
struct ICortanaTileNotificationTriggerDetails;
struct IEmailAccountInfo;
struct IEmailFolderInfo;
struct IEmailNotificationTriggerDetails;
struct IEmailNotificationTriggerDetails2;
struct IEmailReadNotificationTriggerDetails;
struct IMediaControlsTriggerDetails;
struct IMediaMetadata;
struct IPhoneCallDetails;
struct IPhoneLineDetails;
struct IPhoneLineDetails2;
struct IPhoneNotificationTriggerDetails;
struct IReminderNotificationTriggerDetails;
struct IReminderNotificationTriggerDetails2;
struct ISpeedDialEntry;
struct ITextResponse;
struct IToastNotificationTriggerDetails;
struct IToastNotificationTriggerDetails2;
struct IVolumeInfo;
struct AlarmNotificationTriggerDetails;
struct AppNotificationInfo;
struct BinaryId;
struct CalendarChangedNotificationTriggerDetails;
struct CortanaTileNotificationTriggerDetails;
struct EmailAccountInfo;
struct EmailFolderInfo;
struct EmailNotificationTriggerDetails;
struct EmailReadNotificationTriggerDetails;
struct MediaControlsTriggerDetails;
struct MediaMetadata;
struct PhoneCallDetails;
struct PhoneLineDetails;
struct PhoneNotificationTriggerDetails;
struct ReminderNotificationTriggerDetails;
struct SpeedDialEntry;
struct TextResponse;
struct ToastNotificationTriggerDetails;
struct VolumeInfo;

}

namespace Windows::Phone::Notification::Management {

struct IAccessoryManager;
struct IAccessoryManager2;
struct IAccessoryManager3;
struct IAccessoryNotificationTriggerDetails;
struct IAlarmNotificationTriggerDetails;
struct IAlarmNotificationTriggerDetails2;
struct IAppNotificationInfo;
struct IBinaryId;
struct ICalendarChangedNotificationTriggerDetails;
struct ICortanaTileNotificationTriggerDetails;
struct IEmailAccountInfo;
struct IEmailFolderInfo;
struct IEmailNotificationTriggerDetails;
struct IEmailNotificationTriggerDetails2;
struct IEmailReadNotificationTriggerDetails;
struct IMediaControlsTriggerDetails;
struct IMediaMetadata;
struct IPhoneCallDetails;
struct IPhoneLineDetails;
struct IPhoneLineDetails2;
struct IPhoneNotificationTriggerDetails;
struct IReminderNotificationTriggerDetails;
struct IReminderNotificationTriggerDetails2;
struct ISpeedDialEntry;
struct ITextResponse;
struct IToastNotificationTriggerDetails;
struct IToastNotificationTriggerDetails2;
struct IVolumeInfo;
struct AccessoryManager;
struct AlarmNotificationTriggerDetails;
struct AppNotificationInfo;
struct BinaryId;
struct CalendarChangedNotificationTriggerDetails;
struct CortanaTileNotificationTriggerDetails;
struct EmailAccountInfo;
struct EmailFolderInfo;
struct EmailNotificationTriggerDetails;
struct EmailReadNotificationTriggerDetails;
struct MediaControlsTriggerDetails;
struct MediaMetadata;
struct PhoneCallDetails;
struct PhoneLineDetails;
struct PhoneNotificationTriggerDetails;
struct ReminderNotificationTriggerDetails;
struct SpeedDialEntry;
struct TextResponse;
struct ToastNotificationTriggerDetails;
struct VolumeInfo;

}

namespace Windows::Phone::Notification::Management {

enum class AccessoryNotificationType : unsigned
{
    None = 0x0,
    Phone = 0x1,
    Email = 0x2,
    Reminder = 0x4,
    Alarm = 0x8,
    Toast = 0x10,
    AppUninstalled = 0x20,
    Dnd = 0x40,
    DrivingMode = 0x80,
    BatterySaver = 0x100,
    Media = 0x200,
    CortanaTile = 0x400,
    ToastCleared = 0x800,
    CalendarChanged = 0x1000,
    VolumeChanged = 0x2000,
    EmailReadStatusChanged = 0x4000,
};

DEFINE_ENUM_FLAG_OPERATORS(AccessoryNotificationType)

enum class CalendarChangedEvent
{
    LostEvents = 0,
    AppointmentAdded = 1,
    AppointmentChanged = 2,
    AppointmentDeleted = 3,
    CalendarAdded = 4,
    CalendarChanged = 5,
    CalendarDeleted = 6,
};

enum class PhoneCallAudioEndpoint
{
    Default = 0,
    Speaker = 1,
    Handsfree = 2,
};

enum class PhoneCallDirection
{
    Incoming = 0,
    Outgoing = 1,
};

enum class PhoneCallState
{
    Unknown = 0,
    Ringing = 1,
    Talking = 2,
    Held = 3,
    Ended = 4,
};

enum class PhoneCallTransport
{
    Cellular = 0,
    Voip = 1,
};

enum class PhoneLineRegistrationState
{
    Disconnected = 0,
    Home = 1,
    Roaming = 2,
};

enum class PhoneMediaType
{
    AudioOnly = 0,
    AudioVideo = 1,
};

enum class PhoneNotificationType
{
    NewCall = 0,
    CallChanged = 1,
    LineChanged = 2,
    PhoneCallAudioEndpointChanged = 3,
    PhoneMuteChanged = 4,
};

enum class PlaybackCapability : unsigned
{
    None = 0x0,
    Play = 0x1,
    Pause = 0x2,
    Stop = 0x4,
    Record = 0x8,
    FastForward = 0x10,
    Rewind = 0x20,
    Next = 0x40,
    Previous = 0x80,
    ChannelUp = 0x100,
    ChannelDown = 0x200,
};

DEFINE_ENUM_FLAG_OPERATORS(PlaybackCapability)

enum class PlaybackCommand
{
    Play = 0,
    Pause = 1,
    Stop = 2,
    Record = 3,
    FastForward = 4,
    Rewind = 5,
    Next = 6,
    Previous = 7,
    ChannelUp = 8,
    ChannelDown = 9,
};

enum class PlaybackStatus
{
    None = 0,
    TrackChanged = 1,
    Stopped = 2,
    Playing = 3,
    Paused = 4,
};

enum class ReminderState
{
    Active = 0,
    Snoozed = 1,
    Dismissed = 2,
};

enum class VibrateState
{
    RingerOffVibrateOff = 0,
    RingerOffVibrateOn = 1,
    RingerOnVibrateOff = 2,
    RingerOnVibrateOn = 3,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.ContentRestrictions.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Media.ContentRestrictions.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Media::ContentRestrictions {

struct __declspec(uuid("8c0133a4-442e-461a-8757-fad2f5bd37e4")) __declspec(novtable) IContentRestrictionsBrowsePolicy : Windows::IInspectable
{
    virtual HRESULT __stdcall get_GeographicRegion(hstring * value) = 0;
    virtual HRESULT __stdcall get_MaxBrowsableAgeRating(Windows::Foundation::IReference<uint32_t> ** value) = 0;
    virtual HRESULT __stdcall get_PreferredAgeRating(Windows::Foundation::IReference<uint32_t> ** value) = 0;
};

struct __declspec(uuid("694866df-66b2-4dc3-96b1-f090eedee255")) __declspec(novtable) IRatedContentDescription : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Id(hstring * value) = 0;
    virtual HRESULT __stdcall put_Id(hstring value) = 0;
    virtual HRESULT __stdcall get_Title(hstring * value) = 0;
    virtual HRESULT __stdcall put_Title(hstring value) = 0;
    virtual HRESULT __stdcall get_Image(Windows::Storage::Streams::IRandomAccessStreamReference ** value) = 0;
    virtual HRESULT __stdcall put_Image(Windows::Storage::Streams::IRandomAccessStreamReference * value) = 0;
    virtual HRESULT __stdcall get_Category(winrt::Windows::Media::ContentRestrictions::RatedContentCategory * value) = 0;
    virtual HRESULT __stdcall put_Category(winrt::Windows::Media::ContentRestrictions::RatedContentCategory value) = 0;
    virtual HRESULT __stdcall get_Ratings(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
    virtual HRESULT __stdcall put_Ratings(Windows::Foundation::Collections::IVector<hstring> * value) = 0;
};

struct __declspec(uuid("2e38df62-9b90-4fa6-89c1-4b8d2ffb3573")) __declspec(novtable) IRatedContentDescriptionFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(hstring id, hstring title, winrt::Windows::Media::ContentRestrictions::RatedContentCategory category, Windows::Media::ContentRestrictions::IRatedContentDescription ** RatedContentDescription) = 0;
};

struct __declspec(uuid("3f7f23cb-ba07-4401-a49d-8b9222205723")) __declspec(novtable) IRatedContentRestrictions : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetBrowsePolicyAsync(Windows::Foundation::IAsyncOperation<Windows::Media::ContentRestrictions::ContentRestrictionsBrowsePolicy> ** operation) = 0;
    virtual HRESULT __stdcall abi_GetRestrictionLevelAsync(Windows::Media::ContentRestrictions::IRatedContentDescription * RatedContentDescription, Windows::Foundation::IAsyncOperation<winrt::Windows::Media::ContentRestrictions::ContentAccessRestrictionLevel> ** operation) = 0;
    virtual HRESULT __stdcall abi_RequestContentAccessAsync(Windows::Media::ContentRestrictions::IRatedContentDescription * RatedContentDescription, Windows::Foundation::IAsyncOperation<bool> ** operation) = 0;
    virtual HRESULT __stdcall add_RestrictionsChanged(Windows::Foundation::EventHandler<Windows::IInspectable> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_RestrictionsChanged(event_token token) = 0;
};

struct __declspec(uuid("fb4b2996-c3bd-4910-9619-97cfd0694d56")) __declspec(novtable) IRatedContentRestrictionsFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateWithMaxAgeRating(uint32_t maxAgeRating, Windows::Media::ContentRestrictions::IRatedContentRestrictions ** ratedContentRestrictions) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Media::ContentRestrictions::ContentRestrictionsBrowsePolicy> { using default_interface = Windows::Media::ContentRestrictions::IContentRestrictionsBrowsePolicy; };
template <> struct traits<Windows::Media::ContentRestrictions::RatedContentDescription> { using default_interface = Windows::Media::ContentRestrictions::IRatedContentDescription; };
template <> struct traits<Windows::Media::ContentRestrictions::RatedContentRestrictions> { using default_interface = Windows::Media::ContentRestrictions::IRatedContentRestrictions; };

}

namespace Windows::Media::ContentRestrictions {

template <typename T> struct impl_IContentRestrictionsBrowsePolicy;
template <typename T> struct impl_IRatedContentDescription;
template <typename T> struct impl_IRatedContentDescriptionFactory;
template <typename T> struct impl_IRatedContentRestrictions;
template <typename T> struct impl_IRatedContentRestrictionsFactory;

}

namespace impl {

template <> struct traits<Windows::Media::ContentRestrictions::IContentRestrictionsBrowsePolicy>
{
    using abi = ABI::Windows::Media::ContentRestrictions::IContentRestrictionsBrowsePolicy;
    template <typename D> using consume = Windows::Media::ContentRestrictions::impl_IContentRestrictionsBrowsePolicy<D>;
};

template <> struct traits<Windows::Media::ContentRestrictions::IRatedContentDescription>
{
    using abi = ABI::Windows::Media::ContentRestrictions::IRatedContentDescription;
    template <typename D> using consume = Windows::Media::ContentRestrictions::impl_IRatedContentDescription<D>;
};

template <> struct traits<Windows::Media::ContentRestrictions::IRatedContentDescriptionFactory>
{
    using abi = ABI::Windows::Media::ContentRestrictions::IRatedContentDescriptionFactory;
    template <typename D> using consume = Windows::Media::ContentRestrictions::impl_IRatedContentDescriptionFactory<D>;
};

template <> struct traits<Windows::Media::ContentRestrictions::IRatedContentRestrictions>
{
    using abi = ABI::Windows::Media::ContentRestrictions::IRatedContentRestrictions;
    template <typename D> using consume = Windows::Media::ContentRestrictions::impl_IRatedContentRestrictions<D>;
};

template <> struct traits<Windows::Media::ContentRestrictions::IRatedContentRestrictionsFactory>
{
    using abi = ABI::Windows::Media::ContentRestrictions::IRatedContentRestrictionsFactory;
    template <typename D> using consume = Windows::Media::ContentRestrictions::impl_IRatedContentRestrictionsFactory<D>;
};

template <> struct traits<Windows::Media::ContentRestrictions::ContentRestrictionsBrowsePolicy>
{
    using abi = ABI::Windows::Media::ContentRestrictions::ContentRestrictionsBrowsePolicy;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.ContentRestrictions.ContentRestrictionsBrowsePolicy"; }
};

template <> struct traits<Windows::Media::ContentRestrictions::RatedContentDescription>
{
    using abi = ABI::Windows::Media::ContentRestrictions::RatedContentDescription;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.ContentRestrictions.RatedContentDescription"; }
};

template <> struct traits<Windows::Media::ContentRestrictions::RatedContentRestrictions>
{
    using abi = ABI::Windows::Media::ContentRestrictions::RatedContentRestrictions;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.ContentRestrictions.RatedContentRestrictions"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.UI.Input.Inking.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.UI.Core.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.UI.3.h"
#include "internal/Windows.UI.Input.3.h"
#include "internal/Windows.Storage.Streams.3.h"
#include "internal/Windows.UI.Input.Inking.3.h"
#include "Windows.UI.Input.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkDrawingAttributes> : produce_base<D, Windows::UI::Input::Inking::IInkDrawingAttributes>
{
    HRESULT __stdcall get_Color(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Color());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Color(abi_arg_in<Windows::UI::Color> value) noexcept override
    {
        try
        {
            this->shim().Color(*reinterpret_cast<const Windows::UI::Color *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PenTip(Windows::UI::Input::Inking::PenTipShape * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PenTip());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PenTip(Windows::UI::Input::Inking::PenTipShape value) noexcept override
    {
        try
        {
            this->shim().PenTip(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Size(abi_arg_out<Windows::Foundation::Size> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Size());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Size(abi_arg_in<Windows::Foundation::Size> value) noexcept override
    {
        try
        {
            this->shim().Size(*reinterpret_cast<const Windows::Foundation::Size *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IgnorePressure(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IgnorePressure());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IgnorePressure(bool value) noexcept override
    {
        try
        {
            this->shim().IgnorePressure(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FitToCurve(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FitToCurve());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FitToCurve(bool value) noexcept override
    {
        try
        {
            this->shim().FitToCurve(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkDrawingAttributes2> : produce_base<D, Windows::UI::Input::Inking::IInkDrawingAttributes2>
{
    HRESULT __stdcall get_PenTipTransform(abi_arg_out<Windows::Foundation::Numerics::float3x2> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PenTipTransform());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PenTipTransform(abi_arg_in<Windows::Foundation::Numerics::float3x2> value) noexcept override
    {
        try
        {
            this->shim().PenTipTransform(*reinterpret_cast<const Windows::Foundation::Numerics::float3x2 *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DrawAsHighlighter(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DrawAsHighlighter());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DrawAsHighlighter(bool value) noexcept override
    {
        try
        {
            this->shim().DrawAsHighlighter(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkDrawingAttributes3> : produce_base<D, Windows::UI::Input::Inking::IInkDrawingAttributes3>
{
    HRESULT __stdcall get_Kind(Windows::UI::Input::Inking::InkDrawingAttributesKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Kind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PencilProperties(abi_arg_out<Windows::UI::Input::Inking::IInkDrawingAttributesPencilProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PencilProperties());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkDrawingAttributesPencilProperties> : produce_base<D, Windows::UI::Input::Inking::IInkDrawingAttributesPencilProperties>
{
    HRESULT __stdcall get_Opacity(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Opacity());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Opacity(double value) noexcept override
    {
        try
        {
            this->shim().Opacity(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkDrawingAttributesStatics> : produce_base<D, Windows::UI::Input::Inking::IInkDrawingAttributesStatics>
{
    HRESULT __stdcall abi_CreateForPencil(abi_arg_out<Windows::UI::Input::Inking::IInkDrawingAttributes> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateForPencil());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkInputProcessingConfiguration> : produce_base<D, Windows::UI::Input::Inking::IInkInputProcessingConfiguration>
{
    HRESULT __stdcall get_Mode(Windows::UI::Input::Inking::InkInputProcessingMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Mode(Windows::UI::Input::Inking::InkInputProcessingMode value) noexcept override
    {
        try
        {
            this->shim().Mode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RightDragAction(Windows::UI::Input::Inking::InkInputRightDragAction * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RightDragAction());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_RightDragAction(Windows::UI::Input::Inking::InkInputRightDragAction value) noexcept override
    {
        try
        {
            this->shim().RightDragAction(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkManager> : produce_base<D, Windows::UI::Input::Inking::IInkManager>
{
    HRESULT __stdcall get_Mode(Windows::UI::Input::Inking::InkManipulationMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Mode(Windows::UI::Input::Inking::InkManipulationMode value) noexcept override
    {
        try
        {
            this->shim().Mode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ProcessPointerDown(abi_arg_in<Windows::UI::Input::IPointerPoint> pointerPoint) noexcept override
    {
        try
        {
            this->shim().ProcessPointerDown(*reinterpret_cast<const Windows::UI::Input::PointerPoint *>(&pointerPoint));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ProcessPointerUpdate(abi_arg_in<Windows::UI::Input::IPointerPoint> pointerPoint, abi_arg_out<Windows::IInspectable> updateInformation) noexcept override
    {
        try
        {
            *updateInformation = detach(this->shim().ProcessPointerUpdate(*reinterpret_cast<const Windows::UI::Input::PointerPoint *>(&pointerPoint)));
            return S_OK;
        }
        catch (...)
        {
            *updateInformation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ProcessPointerUp(abi_arg_in<Windows::UI::Input::IPointerPoint> pointerPoint, abi_arg_out<Windows::Foundation::Rect> updateRectangle) noexcept override
    {
        try
        {
            *updateRectangle = detach(this->shim().ProcessPointerUp(*reinterpret_cast<const Windows::UI::Input::PointerPoint *>(&pointerPoint)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetDefaultDrawingAttributes(abi_arg_in<Windows::UI::Input::Inking::IInkDrawingAttributes> drawingAttributes) noexcept override
    {
        try
        {
            this->shim().SetDefaultDrawingAttributes(*reinterpret_cast<const Windows::UI::Input::Inking::InkDrawingAttributes *>(&drawingAttributes));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RecognizeAsync2(Windows::UI::Input::Inking::InkRecognitionTarget recognitionTarget, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult>>> recognitionResults) noexcept override
    {
        try
        {
            *recognitionResults = detach(this->shim().RecognizeAsync(recognitionTarget));
            return S_OK;
        }
        catch (...)
        {
            *recognitionResults = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkPoint> : produce_base<D, Windows::UI::Input::Inking::IInkPoint>
{
    HRESULT __stdcall get_Position(abi_arg_out<Windows::Foundation::Point> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Position());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Pressure(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Pressure());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkPointFactory> : produce_base<D, Windows::UI::Input::Inking::IInkPointFactory>
{
    HRESULT __stdcall abi_CreateInkPoint(abi_arg_in<Windows::Foundation::Point> position, float pressure, abi_arg_out<Windows::UI::Input::Inking::IInkPoint> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateInkPoint(*reinterpret_cast<const Windows::Foundation::Point *>(&position), pressure));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkPresenter> : produce_base<D, Windows::UI::Input::Inking::IInkPresenter>
{
    HRESULT __stdcall get_IsInputEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsInputEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IsInputEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().IsInputEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InputDeviceTypes(Windows::UI::Core::CoreInputDeviceTypes * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InputDeviceTypes());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_InputDeviceTypes(Windows::UI::Core::CoreInputDeviceTypes value) noexcept override
    {
        try
        {
            this->shim().InputDeviceTypes(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_UnprocessedInput(abi_arg_out<Windows::UI::Input::Inking::IInkUnprocessedInput> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UnprocessedInput());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_StrokeInput(abi_arg_out<Windows::UI::Input::Inking::IInkStrokeInput> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().StrokeInput());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InputProcessingConfiguration(abi_arg_out<Windows::UI::Input::Inking::IInkInputProcessingConfiguration> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InputProcessingConfiguration());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_StrokeContainer(abi_arg_out<Windows::UI::Input::Inking::IInkStrokeContainer> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().StrokeContainer());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_StrokeContainer(abi_arg_in<Windows::UI::Input::Inking::IInkStrokeContainer> value) noexcept override
    {
        try
        {
            this->shim().StrokeContainer(*reinterpret_cast<const Windows::UI::Input::Inking::InkStrokeContainer *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CopyDefaultDrawingAttributes(abi_arg_out<Windows::UI::Input::Inking::IInkDrawingAttributes> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CopyDefaultDrawingAttributes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UpdateDefaultDrawingAttributes(abi_arg_in<Windows::UI::Input::Inking::IInkDrawingAttributes> value) noexcept override
    {
        try
        {
            this->shim().UpdateDefaultDrawingAttributes(*reinterpret_cast<const Windows::UI::Input::Inking::InkDrawingAttributes *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ActivateCustomDrying(abi_arg_out<Windows::UI::Input::Inking::IInkSynchronizer> inkSynchronizer) noexcept override
    {
        try
        {
            *inkSynchronizer = detach(this->shim().ActivateCustomDrying());
            return S_OK;
        }
        catch (...)
        {
            *inkSynchronizer = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetPredefinedConfiguration(Windows::UI::Input::Inking::InkPresenterPredefinedConfiguration value) noexcept override
    {
        try
        {
            this->shim().SetPredefinedConfiguration(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_StrokesCollected(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkPresenter, Windows::UI::Input::Inking::InkStrokesCollectedEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().StrokesCollected(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkPresenter, Windows::UI::Input::Inking::InkStrokesCollectedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_StrokesCollected(event_token cookie) noexcept override
    {
        try
        {
            this->shim().StrokesCollected(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_StrokesErased(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkPresenter, Windows::UI::Input::Inking::InkStrokesErasedEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().StrokesErased(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkPresenter, Windows::UI::Input::Inking::InkStrokesErasedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_StrokesErased(event_token cookie) noexcept override
    {
        try
        {
            this->shim().StrokesErased(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkPresenterRuler> : produce_base<D, Windows::UI::Input::Inking::IInkPresenterRuler>
{
    HRESULT __stdcall get_Length(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Length());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Length(double value) noexcept override
    {
        try
        {
            this->shim().Length(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Width(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Width());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Width(double value) noexcept override
    {
        try
        {
            this->shim().Width(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkPresenterRulerFactory> : produce_base<D, Windows::UI::Input::Inking::IInkPresenterRulerFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<Windows::UI::Input::Inking::IInkPresenter> inkPresenter, abi_arg_out<Windows::UI::Input::Inking::IInkPresenterRuler> inkPresenterRuler) noexcept override
    {
        try
        {
            *inkPresenterRuler = detach(this->shim().Create(*reinterpret_cast<const Windows::UI::Input::Inking::InkPresenter *>(&inkPresenter)));
            return S_OK;
        }
        catch (...)
        {
            *inkPresenterRuler = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkPresenterStencil> : produce_base<D, Windows::UI::Input::Inking::IInkPresenterStencil>
{
    HRESULT __stdcall get_Kind(Windows::UI::Input::Inking::InkPresenterStencilKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Kind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsVisible(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsVisible());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IsVisible(bool value) noexcept override
    {
        try
        {
            this->shim().IsVisible(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BackgroundColor(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BackgroundColor());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_BackgroundColor(abi_arg_in<Windows::UI::Color> value) noexcept override
    {
        try
        {
            this->shim().BackgroundColor(*reinterpret_cast<const Windows::UI::Color *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ForegroundColor(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ForegroundColor());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ForegroundColor(abi_arg_in<Windows::UI::Color> value) noexcept override
    {
        try
        {
            this->shim().ForegroundColor(*reinterpret_cast<const Windows::UI::Color *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Transform(abi_arg_out<Windows::Foundation::Numerics::float3x2> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Transform());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Transform(abi_arg_in<Windows::Foundation::Numerics::float3x2> value) noexcept override
    {
        try
        {
            this->shim().Transform(*reinterpret_cast<const Windows::Foundation::Numerics::float3x2 *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkRecognitionResult> : produce_base<D, Windows::UI::Input::Inking::IInkRecognitionResult>
{
    HRESULT __stdcall get_BoundingRect(abi_arg_out<Windows::Foundation::Rect> boundingRect) noexcept override
    {
        try
        {
            *boundingRect = detach(this->shim().BoundingRect());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetTextCandidates(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> textCandidates) noexcept override
    {
        try
        {
            *textCandidates = detach(this->shim().GetTextCandidates());
            return S_OK;
        }
        catch (...)
        {
            *textCandidates = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetStrokes(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke>> strokes) noexcept override
    {
        try
        {
            *strokes = detach(this->shim().GetStrokes());
            return S_OK;
        }
        catch (...)
        {
            *strokes = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkRecognizer> : produce_base<D, Windows::UI::Input::Inking::IInkRecognizer>
{
    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkRecognizerContainer> : produce_base<D, Windows::UI::Input::Inking::IInkRecognizerContainer>
{
    HRESULT __stdcall abi_SetDefaultRecognizer(abi_arg_in<Windows::UI::Input::Inking::IInkRecognizer> recognizer) noexcept override
    {
        try
        {
            this->shim().SetDefaultRecognizer(*reinterpret_cast<const Windows::UI::Input::Inking::InkRecognizer *>(&recognizer));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RecognizeAsync(abi_arg_in<Windows::UI::Input::Inking::IInkStrokeContainer> strokeCollection, Windows::UI::Input::Inking::InkRecognitionTarget recognitionTarget, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult>>> recognitionResults) noexcept override
    {
        try
        {
            *recognitionResults = detach(this->shim().RecognizeAsync(*reinterpret_cast<const Windows::UI::Input::Inking::InkStrokeContainer *>(&strokeCollection), recognitionTarget));
            return S_OK;
        }
        catch (...)
        {
            *recognitionResults = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetRecognizers(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognizer>> recognizerView) noexcept override
    {
        try
        {
            *recognizerView = detach(this->shim().GetRecognizers());
            return S_OK;
        }
        catch (...)
        {
            *recognizerView = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkStroke> : produce_base<D, Windows::UI::Input::Inking::IInkStroke>
{
    HRESULT __stdcall get_DrawingAttributes(abi_arg_out<Windows::UI::Input::Inking::IInkDrawingAttributes> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DrawingAttributes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DrawingAttributes(abi_arg_in<Windows::UI::Input::Inking::IInkDrawingAttributes> value) noexcept override
    {
        try
        {
            this->shim().DrawingAttributes(*reinterpret_cast<const Windows::UI::Input::Inking::InkDrawingAttributes *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BoundingRect(abi_arg_out<Windows::Foundation::Rect> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BoundingRect());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Selected(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Selected());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Selected(bool value) noexcept override
    {
        try
        {
            this->shim().Selected(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Recognized(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Recognized());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetRenderingSegments(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStrokeRenderingSegment>> renderingSegments) noexcept override
    {
        try
        {
            *renderingSegments = detach(this->shim().GetRenderingSegments());
            return S_OK;
        }
        catch (...)
        {
            *renderingSegments = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Clone(abi_arg_out<Windows::UI::Input::Inking::IInkStroke> clonedStroke) noexcept override
    {
        try
        {
            *clonedStroke = detach(this->shim().Clone());
            return S_OK;
        }
        catch (...)
        {
            *clonedStroke = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkStroke2> : produce_base<D, Windows::UI::Input::Inking::IInkStroke2>
{
    HRESULT __stdcall get_PointTransform(abi_arg_out<Windows::Foundation::Numerics::float3x2> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PointTransform());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PointTransform(abi_arg_in<Windows::Foundation::Numerics::float3x2> value) noexcept override
    {
        try
        {
            this->shim().PointTransform(*reinterpret_cast<const Windows::Foundation::Numerics::float3x2 *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetInkPoints(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkPoint>> inkPoints) noexcept override
    {
        try
        {
            *inkPoints = detach(this->shim().GetInkPoints());
            return S_OK;
        }
        catch (...)
        {
            *inkPoints = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkStrokeBuilder> : produce_base<D, Windows::UI::Input::Inking::IInkStrokeBuilder>
{
    HRESULT __stdcall abi_BeginStroke(abi_arg_in<Windows::UI::Input::IPointerPoint> pointerPoint) noexcept override
    {
        try
        {
            this->shim().BeginStroke(*reinterpret_cast<const Windows::UI::Input::PointerPoint *>(&pointerPoint));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendToStroke(abi_arg_in<Windows::UI::Input::IPointerPoint> pointerPoint, abi_arg_out<Windows::UI::Input::IPointerPoint> previousPointerPoint) noexcept override
    {
        try
        {
            *previousPointerPoint = detach(this->shim().AppendToStroke(*reinterpret_cast<const Windows::UI::Input::PointerPoint *>(&pointerPoint)));
            return S_OK;
        }
        catch (...)
        {
            *previousPointerPoint = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EndStroke(abi_arg_in<Windows::UI::Input::IPointerPoint> pointerPoint, abi_arg_out<Windows::UI::Input::Inking::IInkStroke> stroke) noexcept override
    {
        try
        {
            *stroke = detach(this->shim().EndStroke(*reinterpret_cast<const Windows::UI::Input::PointerPoint *>(&pointerPoint)));
            return S_OK;
        }
        catch (...)
        {
            *stroke = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateStroke(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Foundation::Point>> points, abi_arg_out<Windows::UI::Input::Inking::IInkStroke> stroke) noexcept override
    {
        try
        {
            *stroke = detach(this->shim().CreateStroke(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Foundation::Point> *>(&points)));
            return S_OK;
        }
        catch (...)
        {
            *stroke = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetDefaultDrawingAttributes(abi_arg_in<Windows::UI::Input::Inking::IInkDrawingAttributes> drawingAttributes) noexcept override
    {
        try
        {
            this->shim().SetDefaultDrawingAttributes(*reinterpret_cast<const Windows::UI::Input::Inking::InkDrawingAttributes *>(&drawingAttributes));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkStrokeBuilder2> : produce_base<D, Windows::UI::Input::Inking::IInkStrokeBuilder2>
{
    HRESULT __stdcall abi_CreateStrokeFromInkPoints(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::UI::Input::Inking::InkPoint>> inkPoints, abi_arg_in<Windows::Foundation::Numerics::float3x2> transform, abi_arg_out<Windows::UI::Input::Inking::IInkStroke> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateStrokeFromInkPoints(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::UI::Input::Inking::InkPoint> *>(&inkPoints), *reinterpret_cast<const Windows::Foundation::Numerics::float3x2 *>(&transform)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkStrokeContainer> : produce_base<D, Windows::UI::Input::Inking::IInkStrokeContainer>
{
    HRESULT __stdcall get_BoundingRect(abi_arg_out<Windows::Foundation::Rect> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BoundingRect());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddStroke(abi_arg_in<Windows::UI::Input::Inking::IInkStroke> stroke) noexcept override
    {
        try
        {
            this->shim().AddStroke(*reinterpret_cast<const Windows::UI::Input::Inking::InkStroke *>(&stroke));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_DeleteSelected(abi_arg_out<Windows::Foundation::Rect> invalidatedRect) noexcept override
    {
        try
        {
            *invalidatedRect = detach(this->shim().DeleteSelected());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MoveSelected(abi_arg_in<Windows::Foundation::Point> translation, abi_arg_out<Windows::Foundation::Rect> invalidatedRectangle) noexcept override
    {
        try
        {
            *invalidatedRectangle = detach(this->shim().MoveSelected(*reinterpret_cast<const Windows::Foundation::Point *>(&translation)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SelectWithPolyLine(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Foundation::Point>> polyline, abi_arg_out<Windows::Foundation::Rect> invalidatedRectangle) noexcept override
    {
        try
        {
            *invalidatedRectangle = detach(this->shim().SelectWithPolyLine(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Foundation::Point> *>(&polyline)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SelectWithLine(abi_arg_in<Windows::Foundation::Point> from, abi_arg_in<Windows::Foundation::Point> to, abi_arg_out<Windows::Foundation::Rect> invalidatedRectangle) noexcept override
    {
        try
        {
            *invalidatedRectangle = detach(this->shim().SelectWithLine(*reinterpret_cast<const Windows::Foundation::Point *>(&from), *reinterpret_cast<const Windows::Foundation::Point *>(&to)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CopySelectedToClipboard() noexcept override
    {
        try
        {
            this->shim().CopySelectedToClipboard();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_PasteFromClipboard(abi_arg_in<Windows::Foundation::Point> position, abi_arg_out<Windows::Foundation::Rect> invalidatedRectangle) noexcept override
    {
        try
        {
            *invalidatedRectangle = detach(this->shim().PasteFromClipboard(*reinterpret_cast<const Windows::Foundation::Point *>(&position)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CanPasteFromClipboard(bool * canPaste) noexcept override
    {
        try
        {
            *canPaste = detach(this->shim().CanPasteFromClipboard());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_LoadAsync(abi_arg_in<Windows::Storage::Streams::IInputStream> inputStream, abi_arg_out<Windows::Foundation::IAsyncActionWithProgress<uint64_t>> loadAction) noexcept override
    {
        try
        {
            *loadAction = detach(this->shim().LoadAsync(*reinterpret_cast<const Windows::Storage::Streams::IInputStream *>(&inputStream)));
            return S_OK;
        }
        catch (...)
        {
            *loadAction = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SaveAsync(abi_arg_in<Windows::Storage::Streams::IOutputStream> outputStream, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<uint32_t, uint32_t>> outputStreamOperation) noexcept override
    {
        try
        {
            *outputStreamOperation = detach(this->shim().SaveAsync(*reinterpret_cast<const Windows::Storage::Streams::IOutputStream *>(&outputStream)));
            return S_OK;
        }
        catch (...)
        {
            *outputStreamOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UpdateRecognitionResults(abi_arg_in<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult>> recognitionResults) noexcept override
    {
        try
        {
            this->shim().UpdateRecognitionResults(*reinterpret_cast<const Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult> *>(&recognitionResults));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetStrokes(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke>> strokeView) noexcept override
    {
        try
        {
            *strokeView = detach(this->shim().GetStrokes());
            return S_OK;
        }
        catch (...)
        {
            *strokeView = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetRecognitionResults(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult>> recognitionResults) noexcept override
    {
        try
        {
            *recognitionResults = detach(this->shim().GetRecognitionResults());
            return S_OK;
        }
        catch (...)
        {
            *recognitionResults = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkStrokeContainer2> : produce_base<D, Windows::UI::Input::Inking::IInkStrokeContainer2>
{
    HRESULT __stdcall abi_AddStrokes(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::UI::Input::Inking::InkStroke>> strokes) noexcept override
    {
        try
        {
            this->shim().AddStrokes(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::UI::Input::Inking::InkStroke> *>(&strokes));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Clear() noexcept override
    {
        try
        {
            this->shim().Clear();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkStrokeInput> : produce_base<D, Windows::UI::Input::Inking::IInkStrokeInput>
{
    HRESULT __stdcall add_StrokeStarted(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().StrokeStarted(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_StrokeStarted(event_token cookie) noexcept override
    {
        try
        {
            this->shim().StrokeStarted(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_StrokeContinued(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().StrokeContinued(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_StrokeContinued(event_token cookie) noexcept override
    {
        try
        {
            this->shim().StrokeContinued(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_StrokeEnded(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().StrokeEnded(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_StrokeEnded(event_token cookie) noexcept override
    {
        try
        {
            this->shim().StrokeEnded(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_StrokeCanceled(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().StrokeCanceled(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_StrokeCanceled(event_token cookie) noexcept override
    {
        try
        {
            this->shim().StrokeCanceled(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InkPresenter(abi_arg_out<Windows::UI::Input::Inking::IInkPresenter> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InkPresenter());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkStrokeRenderingSegment> : produce_base<D, Windows::UI::Input::Inking::IInkStrokeRenderingSegment>
{
    HRESULT __stdcall get_Position(abi_arg_out<Windows::Foundation::Point> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Position());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BezierControlPoint1(abi_arg_out<Windows::Foundation::Point> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BezierControlPoint1());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BezierControlPoint2(abi_arg_out<Windows::Foundation::Point> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BezierControlPoint2());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Pressure(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Pressure());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TiltX(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TiltX());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TiltY(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TiltY());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Twist(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Twist());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkStrokesCollectedEventArgs> : produce_base<D, Windows::UI::Input::Inking::IInkStrokesCollectedEventArgs>
{
    HRESULT __stdcall get_Strokes(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Strokes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkStrokesErasedEventArgs> : produce_base<D, Windows::UI::Input::Inking::IInkStrokesErasedEventArgs>
{
    HRESULT __stdcall get_Strokes(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Strokes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkSynchronizer> : produce_base<D, Windows::UI::Input::Inking::IInkSynchronizer>
{
    HRESULT __stdcall abi_BeginDry(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke>> inkStrokes) noexcept override
    {
        try
        {
            *inkStrokes = detach(this->shim().BeginDry());
            return S_OK;
        }
        catch (...)
        {
            *inkStrokes = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EndDry() noexcept override
    {
        try
        {
            this->shim().EndDry();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Input::Inking::IInkUnprocessedInput> : produce_base<D, Windows::UI::Input::Inking::IInkUnprocessedInput>
{
    HRESULT __stdcall add_PointerEntered(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().PointerEntered(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_PointerEntered(event_token cookie) noexcept override
    {
        try
        {
            this->shim().PointerEntered(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_PointerHovered(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().PointerHovered(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_PointerHovered(event_token cookie) noexcept override
    {
        try
        {
            this->shim().PointerHovered(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_PointerExited(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().PointerExited(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_PointerExited(event_token cookie) noexcept override
    {
        try
        {
            this->shim().PointerExited(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_PointerPressed(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().PointerPressed(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_PointerPressed(event_token cookie) noexcept override
    {
        try
        {
            this->shim().PointerPressed(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_PointerMoved(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().PointerMoved(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_PointerMoved(event_token cookie) noexcept override
    {
        try
        {
            this->shim().PointerMoved(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_PointerReleased(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().PointerReleased(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_PointerReleased(event_token cookie) noexcept override
    {
        try
        {
            this->shim().PointerReleased(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_PointerLost(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().PointerLost(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_PointerLost(event_token cookie) noexcept override
    {
        try
        {
            this->shim().PointerLost(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InkPresenter(abi_arg_out<Windows::UI::Input::Inking::IInkPresenter> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InkPresenter());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::UI::Input::Inking {

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke> impl_IInkStrokesCollectedEventArgs<D>::Strokes() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke> value;
    check_hresult(static_cast<const IInkStrokesCollectedEventArgs &>(static_cast<const D &>(*this))->get_Strokes(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke> impl_IInkStrokesErasedEventArgs<D>::Strokes() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke> value;
    check_hresult(static_cast<const IInkStrokesErasedEventArgs &>(static_cast<const D &>(*this))->get_Strokes(put(value)));
    return value;
}

template <typename D> bool impl_IInkPresenter<D>::IsInputEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->get_IsInputEnabled(&value));
    return value;
}

template <typename D> void impl_IInkPresenter<D>::IsInputEnabled(bool value) const
{
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->put_IsInputEnabled(value));
}

template <typename D> Windows::UI::Core::CoreInputDeviceTypes impl_IInkPresenter<D>::InputDeviceTypes() const
{
    Windows::UI::Core::CoreInputDeviceTypes value {};
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->get_InputDeviceTypes(&value));
    return value;
}

template <typename D> void impl_IInkPresenter<D>::InputDeviceTypes(Windows::UI::Core::CoreInputDeviceTypes value) const
{
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->put_InputDeviceTypes(value));
}

template <typename D> Windows::UI::Input::Inking::InkUnprocessedInput impl_IInkPresenter<D>::UnprocessedInput() const
{
    Windows::UI::Input::Inking::InkUnprocessedInput value { nullptr };
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->get_UnprocessedInput(put(value)));
    return value;
}

template <typename D> Windows::UI::Input::Inking::InkStrokeInput impl_IInkPresenter<D>::StrokeInput() const
{
    Windows::UI::Input::Inking::InkStrokeInput value { nullptr };
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->get_StrokeInput(put(value)));
    return value;
}

template <typename D> Windows::UI::Input::Inking::InkInputProcessingConfiguration impl_IInkPresenter<D>::InputProcessingConfiguration() const
{
    Windows::UI::Input::Inking::InkInputProcessingConfiguration value { nullptr };
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->get_InputProcessingConfiguration(put(value)));
    return value;
}

template <typename D> Windows::UI::Input::Inking::InkStrokeContainer impl_IInkPresenter<D>::StrokeContainer() const
{
    Windows::UI::Input::Inking::InkStrokeContainer value { nullptr };
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->get_StrokeContainer(put(value)));
    return value;
}

template <typename D> void impl_IInkPresenter<D>::StrokeContainer(const Windows::UI::Input::Inking::InkStrokeContainer & value) const
{
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->put_StrokeContainer(get(value)));
}

template <typename D> Windows::UI::Input::Inking::InkDrawingAttributes impl_IInkPresenter<D>::CopyDefaultDrawingAttributes() const
{
    Windows::UI::Input::Inking::InkDrawingAttributes value { nullptr };
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->abi_CopyDefaultDrawingAttributes(put(value)));
    return value;
}

template <typename D> void impl_IInkPresenter<D>::UpdateDefaultDrawingAttributes(const Windows::UI::Input::Inking::InkDrawingAttributes & value) const
{
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->abi_UpdateDefaultDrawingAttributes(get(value)));
}

template <typename D> Windows::UI::Input::Inking::InkSynchronizer impl_IInkPresenter<D>::ActivateCustomDrying() const
{
    Windows::UI::Input::Inking::InkSynchronizer inkSynchronizer { nullptr };
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->abi_ActivateCustomDrying(put(inkSynchronizer)));
    return inkSynchronizer;
}

template <typename D> void impl_IInkPresenter<D>::SetPredefinedConfiguration(Windows::UI::Input::Inking::InkPresenterPredefinedConfiguration value) const
{
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->abi_SetPredefinedConfiguration(value));
}

template <typename D> event_token impl_IInkPresenter<D>::StrokesCollected(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkPresenter, Windows::UI::Input::Inking::InkStrokesCollectedEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->add_StrokesCollected(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkPresenter> impl_IInkPresenter<D>::StrokesCollected(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkPresenter, Windows::UI::Input::Inking::InkStrokesCollectedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkPresenter>(this, &ABI::Windows::UI::Input::Inking::IInkPresenter::remove_StrokesCollected, StrokesCollected(handler));
}

template <typename D> void impl_IInkPresenter<D>::StrokesCollected(event_token cookie) const
{
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->remove_StrokesCollected(cookie));
}

template <typename D> event_token impl_IInkPresenter<D>::StrokesErased(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkPresenter, Windows::UI::Input::Inking::InkStrokesErasedEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->add_StrokesErased(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkPresenter> impl_IInkPresenter<D>::StrokesErased(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkPresenter, Windows::UI::Input::Inking::InkStrokesErasedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkPresenter>(this, &ABI::Windows::UI::Input::Inking::IInkPresenter::remove_StrokesErased, StrokesErased(handler));
}

template <typename D> void impl_IInkPresenter<D>::StrokesErased(event_token cookie) const
{
    check_hresult(static_cast<const IInkPresenter &>(static_cast<const D &>(*this))->remove_StrokesErased(cookie));
}

template <typename D> Windows::UI::Input::Inking::InkInputProcessingMode impl_IInkInputProcessingConfiguration<D>::Mode() const
{
    Windows::UI::Input::Inking::InkInputProcessingMode value {};
    check_hresult(static_cast<const IInkInputProcessingConfiguration &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> void impl_IInkInputProcessingConfiguration<D>::Mode(Windows::UI::Input::Inking::InkInputProcessingMode value) const
{
    check_hresult(static_cast<const IInkInputProcessingConfiguration &>(static_cast<const D &>(*this))->put_Mode(value));
}

template <typename D> Windows::UI::Input::Inking::InkInputRightDragAction impl_IInkInputProcessingConfiguration<D>::RightDragAction() const
{
    Windows::UI::Input::Inking::InkInputRightDragAction value {};
    check_hresult(static_cast<const IInkInputProcessingConfiguration &>(static_cast<const D &>(*this))->get_RightDragAction(&value));
    return value;
}

template <typename D> void impl_IInkInputProcessingConfiguration<D>::RightDragAction(Windows::UI::Input::Inking::InkInputRightDragAction value) const
{
    check_hresult(static_cast<const IInkInputProcessingConfiguration &>(static_cast<const D &>(*this))->put_RightDragAction(value));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke> impl_IInkSynchronizer<D>::BeginDry() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke> inkStrokes;
    check_hresult(static_cast<const IInkSynchronizer &>(static_cast<const D &>(*this))->abi_BeginDry(put(inkStrokes)));
    return inkStrokes;
}

template <typename D> void impl_IInkSynchronizer<D>::EndDry() const
{
    check_hresult(static_cast<const IInkSynchronizer &>(static_cast<const D &>(*this))->abi_EndDry());
}

template <typename D> event_token impl_IInkUnprocessedInput<D>::PointerEntered(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->add_PointerEntered(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkUnprocessedInput> impl_IInkUnprocessedInput<D>::PointerEntered(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkUnprocessedInput>(this, &ABI::Windows::UI::Input::Inking::IInkUnprocessedInput::remove_PointerEntered, PointerEntered(handler));
}

template <typename D> void impl_IInkUnprocessedInput<D>::PointerEntered(event_token cookie) const
{
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->remove_PointerEntered(cookie));
}

template <typename D> event_token impl_IInkUnprocessedInput<D>::PointerHovered(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->add_PointerHovered(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkUnprocessedInput> impl_IInkUnprocessedInput<D>::PointerHovered(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkUnprocessedInput>(this, &ABI::Windows::UI::Input::Inking::IInkUnprocessedInput::remove_PointerHovered, PointerHovered(handler));
}

template <typename D> void impl_IInkUnprocessedInput<D>::PointerHovered(event_token cookie) const
{
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->remove_PointerHovered(cookie));
}

template <typename D> event_token impl_IInkUnprocessedInput<D>::PointerExited(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->add_PointerExited(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkUnprocessedInput> impl_IInkUnprocessedInput<D>::PointerExited(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkUnprocessedInput>(this, &ABI::Windows::UI::Input::Inking::IInkUnprocessedInput::remove_PointerExited, PointerExited(handler));
}

template <typename D> void impl_IInkUnprocessedInput<D>::PointerExited(event_token cookie) const
{
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->remove_PointerExited(cookie));
}

template <typename D> event_token impl_IInkUnprocessedInput<D>::PointerPressed(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->add_PointerPressed(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkUnprocessedInput> impl_IInkUnprocessedInput<D>::PointerPressed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkUnprocessedInput>(this, &ABI::Windows::UI::Input::Inking::IInkUnprocessedInput::remove_PointerPressed, PointerPressed(handler));
}

template <typename D> void impl_IInkUnprocessedInput<D>::PointerPressed(event_token cookie) const
{
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->remove_PointerPressed(cookie));
}

template <typename D> event_token impl_IInkUnprocessedInput<D>::PointerMoved(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->add_PointerMoved(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkUnprocessedInput> impl_IInkUnprocessedInput<D>::PointerMoved(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkUnprocessedInput>(this, &ABI::Windows::UI::Input::Inking::IInkUnprocessedInput::remove_PointerMoved, PointerMoved(handler));
}

template <typename D> void impl_IInkUnprocessedInput<D>::PointerMoved(event_token cookie) const
{
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->remove_PointerMoved(cookie));
}

template <typename D> event_token impl_IInkUnprocessedInput<D>::PointerReleased(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->add_PointerReleased(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkUnprocessedInput> impl_IInkUnprocessedInput<D>::PointerReleased(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkUnprocessedInput>(this, &ABI::Windows::UI::Input::Inking::IInkUnprocessedInput::remove_PointerReleased, PointerReleased(handler));
}

template <typename D> void impl_IInkUnprocessedInput<D>::PointerReleased(event_token cookie) const
{
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->remove_PointerReleased(cookie));
}

template <typename D> event_token impl_IInkUnprocessedInput<D>::PointerLost(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->add_PointerLost(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkUnprocessedInput> impl_IInkUnprocessedInput<D>::PointerLost(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkUnprocessedInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkUnprocessedInput>(this, &ABI::Windows::UI::Input::Inking::IInkUnprocessedInput::remove_PointerLost, PointerLost(handler));
}

template <typename D> void impl_IInkUnprocessedInput<D>::PointerLost(event_token cookie) const
{
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->remove_PointerLost(cookie));
}

template <typename D> Windows::UI::Input::Inking::InkPresenter impl_IInkUnprocessedInput<D>::InkPresenter() const
{
    Windows::UI::Input::Inking::InkPresenter value { nullptr };
    check_hresult(static_cast<const IInkUnprocessedInput &>(static_cast<const D &>(*this))->get_InkPresenter(put(value)));
    return value;
}

template <typename D> event_token impl_IInkStrokeInput<D>::StrokeStarted(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkStrokeInput &>(static_cast<const D &>(*this))->add_StrokeStarted(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkStrokeInput> impl_IInkStrokeInput<D>::StrokeStarted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkStrokeInput>(this, &ABI::Windows::UI::Input::Inking::IInkStrokeInput::remove_StrokeStarted, StrokeStarted(handler));
}

template <typename D> void impl_IInkStrokeInput<D>::StrokeStarted(event_token cookie) const
{
    check_hresult(static_cast<const IInkStrokeInput &>(static_cast<const D &>(*this))->remove_StrokeStarted(cookie));
}

template <typename D> event_token impl_IInkStrokeInput<D>::StrokeContinued(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkStrokeInput &>(static_cast<const D &>(*this))->add_StrokeContinued(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkStrokeInput> impl_IInkStrokeInput<D>::StrokeContinued(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkStrokeInput>(this, &ABI::Windows::UI::Input::Inking::IInkStrokeInput::remove_StrokeContinued, StrokeContinued(handler));
}

template <typename D> void impl_IInkStrokeInput<D>::StrokeContinued(event_token cookie) const
{
    check_hresult(static_cast<const IInkStrokeInput &>(static_cast<const D &>(*this))->remove_StrokeContinued(cookie));
}

template <typename D> event_token impl_IInkStrokeInput<D>::StrokeEnded(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkStrokeInput &>(static_cast<const D &>(*this))->add_StrokeEnded(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkStrokeInput> impl_IInkStrokeInput<D>::StrokeEnded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkStrokeInput>(this, &ABI::Windows::UI::Input::Inking::IInkStrokeInput::remove_StrokeEnded, StrokeEnded(handler));
}

template <typename D> void impl_IInkStrokeInput<D>::StrokeEnded(event_token cookie) const
{
    check_hresult(static_cast<const IInkStrokeInput &>(static_cast<const D &>(*this))->remove_StrokeEnded(cookie));
}

template <typename D> event_token impl_IInkStrokeInput<D>::StrokeCanceled(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IInkStrokeInput &>(static_cast<const D &>(*this))->add_StrokeCanceled(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IInkStrokeInput> impl_IInkStrokeInput<D>::StrokeCanceled(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::Inking::InkStrokeInput, Windows::UI::Core::PointerEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IInkStrokeInput>(this, &ABI::Windows::UI::Input::Inking::IInkStrokeInput::remove_StrokeCanceled, StrokeCanceled(handler));
}

template <typename D> void impl_IInkStrokeInput<D>::StrokeCanceled(event_token cookie) const
{
    check_hresult(static_cast<const IInkStrokeInput &>(static_cast<const D &>(*this))->remove_StrokeCanceled(cookie));
}

template <typename D> Windows::UI::Input::Inking::InkPresenter impl_IInkStrokeInput<D>::InkPresenter() const
{
    Windows::UI::Input::Inking::InkPresenter value { nullptr };
    check_hresult(static_cast<const IInkStrokeInput &>(static_cast<const D &>(*this))->get_InkPresenter(put(value)));
    return value;
}

template <typename D> Windows::UI::Input::Inking::InkPresenterStencilKind impl_IInkPresenterStencil<D>::Kind() const
{
    Windows::UI::Input::Inking::InkPresenterStencilKind value {};
    check_hresult(static_cast<const IInkPresenterStencil &>(static_cast<const D &>(*this))->get_Kind(&value));
    return value;
}

template <typename D> bool impl_IInkPresenterStencil<D>::IsVisible() const
{
    bool value {};
    check_hresult(static_cast<const IInkPresenterStencil &>(static_cast<const D &>(*this))->get_IsVisible(&value));
    return value;
}

template <typename D> void impl_IInkPresenterStencil<D>::IsVisible(bool value) const
{
    check_hresult(static_cast<const IInkPresenterStencil &>(static_cast<const D &>(*this))->put_IsVisible(value));
}

template <typename D> Windows::UI::Color impl_IInkPresenterStencil<D>::BackgroundColor() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const IInkPresenterStencil &>(static_cast<const D &>(*this))->get_BackgroundColor(put(value)));
    return value;
}

template <typename D> void impl_IInkPresenterStencil<D>::BackgroundColor(const Windows::UI::Color & value) const
{
    check_hresult(static_cast<const IInkPresenterStencil &>(static_cast<const D &>(*this))->put_BackgroundColor(get(value)));
}

template <typename D> Windows::UI::Color impl_IInkPresenterStencil<D>::ForegroundColor() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const IInkPresenterStencil &>(static_cast<const D &>(*this))->get_ForegroundColor(put(value)));
    return value;
}

template <typename D> void impl_IInkPresenterStencil<D>::ForegroundColor(const Windows::UI::Color & value) const
{
    check_hresult(static_cast<const IInkPresenterStencil &>(static_cast<const D &>(*this))->put_ForegroundColor(get(value)));
}

template <typename D> Windows::Foundation::Numerics::float3x2 impl_IInkPresenterStencil<D>::Transform() const
{
    Windows::Foundation::Numerics::float3x2 value {};
    check_hresult(static_cast<const IInkPresenterStencil &>(static_cast<const D &>(*this))->get_Transform(put(value)));
    return value;
}

template <typename D> void impl_IInkPresenterStencil<D>::Transform(const Windows::Foundation::Numerics::float3x2 & value) const
{
    check_hresult(static_cast<const IInkPresenterStencil &>(static_cast<const D &>(*this))->put_Transform(get(value)));
}

template <typename D> double impl_IInkPresenterRuler<D>::Length() const
{
    double value {};
    check_hresult(static_cast<const IInkPresenterRuler &>(static_cast<const D &>(*this))->get_Length(&value));
    return value;
}

template <typename D> void impl_IInkPresenterRuler<D>::Length(double value) const
{
    check_hresult(static_cast<const IInkPresenterRuler &>(static_cast<const D &>(*this))->put_Length(value));
}

template <typename D> double impl_IInkPresenterRuler<D>::Width() const
{
    double value {};
    check_hresult(static_cast<const IInkPresenterRuler &>(static_cast<const D &>(*this))->get_Width(&value));
    return value;
}

template <typename D> void impl_IInkPresenterRuler<D>::Width(double value) const
{
    check_hresult(static_cast<const IInkPresenterRuler &>(static_cast<const D &>(*this))->put_Width(value));
}

template <typename D> Windows::UI::Input::Inking::InkPresenterRuler impl_IInkPresenterRulerFactory<D>::Create(const Windows::UI::Input::Inking::InkPresenter & inkPresenter) const
{
    Windows::UI::Input::Inking::InkPresenterRuler inkPresenterRuler { nullptr };
    check_hresult(static_cast<const IInkPresenterRulerFactory &>(static_cast<const D &>(*this))->abi_Create(get(inkPresenter), put(inkPresenterRuler)));
    return inkPresenterRuler;
}

template <typename D> Windows::Foundation::Point impl_IInkPoint<D>::Position() const
{
    Windows::Foundation::Point value {};
    check_hresult(static_cast<const IInkPoint &>(static_cast<const D &>(*this))->get_Position(put(value)));
    return value;
}

template <typename D> float impl_IInkPoint<D>::Pressure() const
{
    float value {};
    check_hresult(static_cast<const IInkPoint &>(static_cast<const D &>(*this))->get_Pressure(&value));
    return value;
}

template <typename D> Windows::UI::Input::Inking::InkPoint impl_IInkPointFactory<D>::CreateInkPoint(const Windows::Foundation::Point & position, float pressure) const
{
    Windows::UI::Input::Inking::InkPoint result { nullptr };
    check_hresult(static_cast<const IInkPointFactory &>(static_cast<const D &>(*this))->abi_CreateInkPoint(get(position), pressure, put(result)));
    return result;
}

template <typename D> Windows::UI::Color impl_IInkDrawingAttributes<D>::Color() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const IInkDrawingAttributes &>(static_cast<const D &>(*this))->get_Color(put(value)));
    return value;
}

template <typename D> void impl_IInkDrawingAttributes<D>::Color(const Windows::UI::Color & value) const
{
    check_hresult(static_cast<const IInkDrawingAttributes &>(static_cast<const D &>(*this))->put_Color(get(value)));
}

template <typename D> Windows::UI::Input::Inking::PenTipShape impl_IInkDrawingAttributes<D>::PenTip() const
{
    Windows::UI::Input::Inking::PenTipShape value {};
    check_hresult(static_cast<const IInkDrawingAttributes &>(static_cast<const D &>(*this))->get_PenTip(&value));
    return value;
}

template <typename D> void impl_IInkDrawingAttributes<D>::PenTip(Windows::UI::Input::Inking::PenTipShape value) const
{
    check_hresult(static_cast<const IInkDrawingAttributes &>(static_cast<const D &>(*this))->put_PenTip(value));
}

template <typename D> Windows::Foundation::Size impl_IInkDrawingAttributes<D>::Size() const
{
    Windows::Foundation::Size value {};
    check_hresult(static_cast<const IInkDrawingAttributes &>(static_cast<const D &>(*this))->get_Size(put(value)));
    return value;
}

template <typename D> void impl_IInkDrawingAttributes<D>::Size(const Windows::Foundation::Size & value) const
{
    check_hresult(static_cast<const IInkDrawingAttributes &>(static_cast<const D &>(*this))->put_Size(get(value)));
}

template <typename D> bool impl_IInkDrawingAttributes<D>::IgnorePressure() const
{
    bool value {};
    check_hresult(static_cast<const IInkDrawingAttributes &>(static_cast<const D &>(*this))->get_IgnorePressure(&value));
    return value;
}

template <typename D> void impl_IInkDrawingAttributes<D>::IgnorePressure(bool value) const
{
    check_hresult(static_cast<const IInkDrawingAttributes &>(static_cast<const D &>(*this))->put_IgnorePressure(value));
}

template <typename D> bool impl_IInkDrawingAttributes<D>::FitToCurve() const
{
    bool value {};
    check_hresult(static_cast<const IInkDrawingAttributes &>(static_cast<const D &>(*this))->get_FitToCurve(&value));
    return value;
}

template <typename D> void impl_IInkDrawingAttributes<D>::FitToCurve(bool value) const
{
    check_hresult(static_cast<const IInkDrawingAttributes &>(static_cast<const D &>(*this))->put_FitToCurve(value));
}

template <typename D> Windows::Foundation::Numerics::float3x2 impl_IInkDrawingAttributes2<D>::PenTipTransform() const
{
    Windows::Foundation::Numerics::float3x2 value {};
    check_hresult(static_cast<const IInkDrawingAttributes2 &>(static_cast<const D &>(*this))->get_PenTipTransform(put(value)));
    return value;
}

template <typename D> void impl_IInkDrawingAttributes2<D>::PenTipTransform(const Windows::Foundation::Numerics::float3x2 & value) const
{
    check_hresult(static_cast<const IInkDrawingAttributes2 &>(static_cast<const D &>(*this))->put_PenTipTransform(get(value)));
}

template <typename D> bool impl_IInkDrawingAttributes2<D>::DrawAsHighlighter() const
{
    bool value {};
    check_hresult(static_cast<const IInkDrawingAttributes2 &>(static_cast<const D &>(*this))->get_DrawAsHighlighter(&value));
    return value;
}

template <typename D> void impl_IInkDrawingAttributes2<D>::DrawAsHighlighter(bool value) const
{
    check_hresult(static_cast<const IInkDrawingAttributes2 &>(static_cast<const D &>(*this))->put_DrawAsHighlighter(value));
}

template <typename D> double impl_IInkDrawingAttributesPencilProperties<D>::Opacity() const
{
    double value {};
    check_hresult(static_cast<const IInkDrawingAttributesPencilProperties &>(static_cast<const D &>(*this))->get_Opacity(&value));
    return value;
}

template <typename D> void impl_IInkDrawingAttributesPencilProperties<D>::Opacity(double value) const
{
    check_hresult(static_cast<const IInkDrawingAttributesPencilProperties &>(static_cast<const D &>(*this))->put_Opacity(value));
}

template <typename D> Windows::UI::Input::Inking::InkDrawingAttributesKind impl_IInkDrawingAttributes3<D>::Kind() const
{
    Windows::UI::Input::Inking::InkDrawingAttributesKind value {};
    check_hresult(static_cast<const IInkDrawingAttributes3 &>(static_cast<const D &>(*this))->get_Kind(&value));
    return value;
}

template <typename D> Windows::UI::Input::Inking::InkDrawingAttributesPencilProperties impl_IInkDrawingAttributes3<D>::PencilProperties() const
{
    Windows::UI::Input::Inking::InkDrawingAttributesPencilProperties value { nullptr };
    check_hresult(static_cast<const IInkDrawingAttributes3 &>(static_cast<const D &>(*this))->get_PencilProperties(put(value)));
    return value;
}

template <typename D> Windows::UI::Input::Inking::InkDrawingAttributes impl_IInkDrawingAttributesStatics<D>::CreateForPencil() const
{
    Windows::UI::Input::Inking::InkDrawingAttributes result { nullptr };
    check_hresult(static_cast<const IInkDrawingAttributesStatics &>(static_cast<const D &>(*this))->abi_CreateForPencil(put(result)));
    return result;
}

template <typename D> Windows::Foundation::Point impl_IInkStrokeRenderingSegment<D>::Position() const
{
    Windows::Foundation::Point value {};
    check_hresult(static_cast<const IInkStrokeRenderingSegment &>(static_cast<const D &>(*this))->get_Position(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Point impl_IInkStrokeRenderingSegment<D>::BezierControlPoint1() const
{
    Windows::Foundation::Point value {};
    check_hresult(static_cast<const IInkStrokeRenderingSegment &>(static_cast<const D &>(*this))->get_BezierControlPoint1(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Point impl_IInkStrokeRenderingSegment<D>::BezierControlPoint2() const
{
    Windows::Foundation::Point value {};
    check_hresult(static_cast<const IInkStrokeRenderingSegment &>(static_cast<const D &>(*this))->get_BezierControlPoint2(put(value)));
    return value;
}

template <typename D> float impl_IInkStrokeRenderingSegment<D>::Pressure() const
{
    float value {};
    check_hresult(static_cast<const IInkStrokeRenderingSegment &>(static_cast<const D &>(*this))->get_Pressure(&value));
    return value;
}

template <typename D> float impl_IInkStrokeRenderingSegment<D>::TiltX() const
{
    float value {};
    check_hresult(static_cast<const IInkStrokeRenderingSegment &>(static_cast<const D &>(*this))->get_TiltX(&value));
    return value;
}

template <typename D> float impl_IInkStrokeRenderingSegment<D>::TiltY() const
{
    float value {};
    check_hresult(static_cast<const IInkStrokeRenderingSegment &>(static_cast<const D &>(*this))->get_TiltY(&value));
    return value;
}

template <typename D> float impl_IInkStrokeRenderingSegment<D>::Twist() const
{
    float value {};
    check_hresult(static_cast<const IInkStrokeRenderingSegment &>(static_cast<const D &>(*this))->get_Twist(&value));
    return value;
}

template <typename D> Windows::UI::Input::Inking::InkDrawingAttributes impl_IInkStroke<D>::DrawingAttributes() const
{
    Windows::UI::Input::Inking::InkDrawingAttributes value { nullptr };
    check_hresult(static_cast<const IInkStroke &>(static_cast<const D &>(*this))->get_DrawingAttributes(put(value)));
    return value;
}

template <typename D> void impl_IInkStroke<D>::DrawingAttributes(const Windows::UI::Input::Inking::InkDrawingAttributes & value) const
{
    check_hresult(static_cast<const IInkStroke &>(static_cast<const D &>(*this))->put_DrawingAttributes(get(value)));
}

template <typename D> Windows::Foundation::Rect impl_IInkStroke<D>::BoundingRect() const
{
    Windows::Foundation::Rect value {};
    check_hresult(static_cast<const IInkStroke &>(static_cast<const D &>(*this))->get_BoundingRect(put(value)));
    return value;
}

template <typename D> bool impl_IInkStroke<D>::Selected() const
{
    bool value {};
    check_hresult(static_cast<const IInkStroke &>(static_cast<const D &>(*this))->get_Selected(&value));
    return value;
}

template <typename D> void impl_IInkStroke<D>::Selected(bool value) const
{
    check_hresult(static_cast<const IInkStroke &>(static_cast<const D &>(*this))->put_Selected(value));
}

template <typename D> bool impl_IInkStroke<D>::Recognized() const
{
    bool value {};
    check_hresult(static_cast<const IInkStroke &>(static_cast<const D &>(*this))->get_Recognized(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStrokeRenderingSegment> impl_IInkStroke<D>::GetRenderingSegments() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStrokeRenderingSegment> renderingSegments;
    check_hresult(static_cast<const IInkStroke &>(static_cast<const D &>(*this))->abi_GetRenderingSegments(put(renderingSegments)));
    return renderingSegments;
}

template <typename D> Windows::UI::Input::Inking::InkStroke impl_IInkStroke<D>::Clone() const
{
    Windows::UI::Input::Inking::InkStroke clonedStroke { nullptr };
    check_hresult(static_cast<const IInkStroke &>(static_cast<const D &>(*this))->abi_Clone(put(clonedStroke)));
    return clonedStroke;
}

template <typename D> Windows::Foundation::Numerics::float3x2 impl_IInkStroke2<D>::PointTransform() const
{
    Windows::Foundation::Numerics::float3x2 value {};
    check_hresult(static_cast<const IInkStroke2 &>(static_cast<const D &>(*this))->get_PointTransform(put(value)));
    return value;
}

template <typename D> void impl_IInkStroke2<D>::PointTransform(const Windows::Foundation::Numerics::float3x2 & value) const
{
    check_hresult(static_cast<const IInkStroke2 &>(static_cast<const D &>(*this))->put_PointTransform(get(value)));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkPoint> impl_IInkStroke2<D>::GetInkPoints() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkPoint> inkPoints;
    check_hresult(static_cast<const IInkStroke2 &>(static_cast<const D &>(*this))->abi_GetInkPoints(put(inkPoints)));
    return inkPoints;
}

template <typename D> void impl_IInkStrokeBuilder<D>::BeginStroke(const Windows::UI::Input::PointerPoint & pointerPoint) const
{
    check_hresult(static_cast<const IInkStrokeBuilder &>(static_cast<const D &>(*this))->abi_BeginStroke(get(pointerPoint)));
}

template <typename D> Windows::UI::Input::PointerPoint impl_IInkStrokeBuilder<D>::AppendToStroke(const Windows::UI::Input::PointerPoint & pointerPoint) const
{
    Windows::UI::Input::PointerPoint previousPointerPoint { nullptr };
    check_hresult(static_cast<const IInkStrokeBuilder &>(static_cast<const D &>(*this))->abi_AppendToStroke(get(pointerPoint), put(previousPointerPoint)));
    return previousPointerPoint;
}

template <typename D> Windows::UI::Input::Inking::InkStroke impl_IInkStrokeBuilder<D>::EndStroke(const Windows::UI::Input::PointerPoint & pointerPoint) const
{
    Windows::UI::Input::Inking::InkStroke stroke { nullptr };
    check_hresult(static_cast<const IInkStrokeBuilder &>(static_cast<const D &>(*this))->abi_EndStroke(get(pointerPoint), put(stroke)));
    return stroke;
}

template <typename D> Windows::UI::Input::Inking::InkStroke impl_IInkStrokeBuilder<D>::CreateStroke(const Windows::Foundation::Collections::IIterable<Windows::Foundation::Point> & points) const
{
    Windows::UI::Input::Inking::InkStroke stroke { nullptr };
    check_hresult(static_cast<const IInkStrokeBuilder &>(static_cast<const D &>(*this))->abi_CreateStroke(get(points), put(stroke)));
    return stroke;
}

template <typename D> void impl_IInkStrokeBuilder<D>::SetDefaultDrawingAttributes(const Windows::UI::Input::Inking::InkDrawingAttributes & drawingAttributes) const
{
    check_hresult(static_cast<const IInkStrokeBuilder &>(static_cast<const D &>(*this))->abi_SetDefaultDrawingAttributes(get(drawingAttributes)));
}

template <typename D> Windows::UI::Input::Inking::InkStroke impl_IInkStrokeBuilder2<D>::CreateStrokeFromInkPoints(const Windows::Foundation::Collections::IIterable<Windows::UI::Input::Inking::InkPoint> & inkPoints, const Windows::Foundation::Numerics::float3x2 & transform) const
{
    Windows::UI::Input::Inking::InkStroke result { nullptr };
    check_hresult(static_cast<const IInkStrokeBuilder2 &>(static_cast<const D &>(*this))->abi_CreateStrokeFromInkPoints(get(inkPoints), get(transform), put(result)));
    return result;
}

template <typename D> Windows::Foundation::Rect impl_IInkRecognitionResult<D>::BoundingRect() const
{
    Windows::Foundation::Rect boundingRect {};
    check_hresult(static_cast<const IInkRecognitionResult &>(static_cast<const D &>(*this))->get_BoundingRect(put(boundingRect)));
    return boundingRect;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_IInkRecognitionResult<D>::GetTextCandidates() const
{
    Windows::Foundation::Collections::IVectorView<hstring> textCandidates;
    check_hresult(static_cast<const IInkRecognitionResult &>(static_cast<const D &>(*this))->abi_GetTextCandidates(put(textCandidates)));
    return textCandidates;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke> impl_IInkRecognitionResult<D>::GetStrokes() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke> strokes;
    check_hresult(static_cast<const IInkRecognitionResult &>(static_cast<const D &>(*this))->abi_GetStrokes(put(strokes)));
    return strokes;
}

template <typename D> Windows::Foundation::Rect impl_IInkStrokeContainer<D>::BoundingRect() const
{
    Windows::Foundation::Rect value {};
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->get_BoundingRect(put(value)));
    return value;
}

template <typename D> void impl_IInkStrokeContainer<D>::AddStroke(const Windows::UI::Input::Inking::InkStroke & stroke) const
{
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_AddStroke(get(stroke)));
}

template <typename D> Windows::Foundation::Rect impl_IInkStrokeContainer<D>::DeleteSelected() const
{
    Windows::Foundation::Rect invalidatedRect {};
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_DeleteSelected(put(invalidatedRect)));
    return invalidatedRect;
}

template <typename D> Windows::Foundation::Rect impl_IInkStrokeContainer<D>::MoveSelected(const Windows::Foundation::Point & translation) const
{
    Windows::Foundation::Rect invalidatedRectangle {};
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_MoveSelected(get(translation), put(invalidatedRectangle)));
    return invalidatedRectangle;
}

template <typename D> Windows::Foundation::Rect impl_IInkStrokeContainer<D>::SelectWithPolyLine(const Windows::Foundation::Collections::IIterable<Windows::Foundation::Point> & polyline) const
{
    Windows::Foundation::Rect invalidatedRectangle {};
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_SelectWithPolyLine(get(polyline), put(invalidatedRectangle)));
    return invalidatedRectangle;
}

template <typename D> Windows::Foundation::Rect impl_IInkStrokeContainer<D>::SelectWithLine(const Windows::Foundation::Point & from, const Windows::Foundation::Point & to) const
{
    Windows::Foundation::Rect invalidatedRectangle {};
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_SelectWithLine(get(from), get(to), put(invalidatedRectangle)));
    return invalidatedRectangle;
}

template <typename D> void impl_IInkStrokeContainer<D>::CopySelectedToClipboard() const
{
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_CopySelectedToClipboard());
}

template <typename D> Windows::Foundation::Rect impl_IInkStrokeContainer<D>::PasteFromClipboard(const Windows::Foundation::Point & position) const
{
    Windows::Foundation::Rect invalidatedRectangle {};
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_PasteFromClipboard(get(position), put(invalidatedRectangle)));
    return invalidatedRectangle;
}

template <typename D> bool impl_IInkStrokeContainer<D>::CanPasteFromClipboard() const
{
    bool canPaste {};
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_CanPasteFromClipboard(&canPaste));
    return canPaste;
}

template <typename D> Windows::Foundation::IAsyncActionWithProgress<uint64_t> impl_IInkStrokeContainer<D>::LoadAsync(const Windows::Storage::Streams::IInputStream & inputStream) const
{
    Windows::Foundation::IAsyncActionWithProgress<uint64_t> loadAction;
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_LoadAsync(get(inputStream), put(loadAction)));
    return loadAction;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<uint32_t, uint32_t> impl_IInkStrokeContainer<D>::SaveAsync(const Windows::Storage::Streams::IOutputStream & outputStream) const
{
    Windows::Foundation::IAsyncOperationWithProgress<uint32_t, uint32_t> outputStreamOperation;
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_SaveAsync(get(outputStream), put(outputStreamOperation)));
    return outputStreamOperation;
}

template <typename D> void impl_IInkStrokeContainer<D>::UpdateRecognitionResults(const Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult> & recognitionResults) const
{
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_UpdateRecognitionResults(get(recognitionResults)));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke> impl_IInkStrokeContainer<D>::GetStrokes() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkStroke> strokeView;
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_GetStrokes(put(strokeView)));
    return strokeView;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult> impl_IInkStrokeContainer<D>::GetRecognitionResults() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult> recognitionResults;
    check_hresult(static_cast<const IInkStrokeContainer &>(static_cast<const D &>(*this))->abi_GetRecognitionResults(put(recognitionResults)));
    return recognitionResults;
}

template <typename D> void impl_IInkStrokeContainer2<D>::AddStrokes(const Windows::Foundation::Collections::IIterable<Windows::UI::Input::Inking::InkStroke> & strokes) const
{
    check_hresult(static_cast<const IInkStrokeContainer2 &>(static_cast<const D &>(*this))->abi_AddStrokes(get(strokes)));
}

template <typename D> void impl_IInkStrokeContainer2<D>::Clear() const
{
    check_hresult(static_cast<const IInkStrokeContainer2 &>(static_cast<const D &>(*this))->abi_Clear());
}

template <typename D> hstring impl_IInkRecognizer<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const IInkRecognizer &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> void impl_IInkRecognizerContainer<D>::SetDefaultRecognizer(const Windows::UI::Input::Inking::InkRecognizer & recognizer) const
{
    check_hresult(static_cast<const IInkRecognizerContainer &>(static_cast<const D &>(*this))->abi_SetDefaultRecognizer(get(recognizer)));
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult>> impl_IInkRecognizerContainer<D>::RecognizeAsync(const Windows::UI::Input::Inking::InkStrokeContainer & strokeCollection, Windows::UI::Input::Inking::InkRecognitionTarget recognitionTarget) const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult>> recognitionResults;
    check_hresult(static_cast<const IInkRecognizerContainer &>(static_cast<const D &>(*this))->abi_RecognizeAsync(get(strokeCollection), recognitionTarget, put(recognitionResults)));
    return recognitionResults;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognizer> impl_IInkRecognizerContainer<D>::GetRecognizers() const
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognizer> recognizerView;
    check_hresult(static_cast<const IInkRecognizerContainer &>(static_cast<const D &>(*this))->abi_GetRecognizers(put(recognizerView)));
    return recognizerView;
}

template <typename D> Windows::UI::Input::Inking::InkManipulationMode impl_IInkManager<D>::Mode() const
{
    Windows::UI::Input::Inking::InkManipulationMode value {};
    check_hresult(static_cast<const IInkManager &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> void impl_IInkManager<D>::Mode(Windows::UI::Input::Inking::InkManipulationMode value) const
{
    check_hresult(static_cast<const IInkManager &>(static_cast<const D &>(*this))->put_Mode(value));
}

template <typename D> void impl_IInkManager<D>::ProcessPointerDown(const Windows::UI::Input::PointerPoint & pointerPoint) const
{
    check_hresult(static_cast<const IInkManager &>(static_cast<const D &>(*this))->abi_ProcessPointerDown(get(pointerPoint)));
}

template <typename D> Windows::IInspectable impl_IInkManager<D>::ProcessPointerUpdate(const Windows::UI::Input::PointerPoint & pointerPoint) const
{
    Windows::IInspectable updateInformation;
    check_hresult(static_cast<const IInkManager &>(static_cast<const D &>(*this))->abi_ProcessPointerUpdate(get(pointerPoint), put(updateInformation)));
    return updateInformation;
}

template <typename D> Windows::Foundation::Rect impl_IInkManager<D>::ProcessPointerUp(const Windows::UI::Input::PointerPoint & pointerPoint) const
{
    Windows::Foundation::Rect updateRectangle {};
    check_hresult(static_cast<const IInkManager &>(static_cast<const D &>(*this))->abi_ProcessPointerUp(get(pointerPoint), put(updateRectangle)));
    return updateRectangle;
}

template <typename D> void impl_IInkManager<D>::SetDefaultDrawingAttributes(const Windows::UI::Input::Inking::InkDrawingAttributes & drawingAttributes) const
{
    check_hresult(static_cast<const IInkManager &>(static_cast<const D &>(*this))->abi_SetDefaultDrawingAttributes(get(drawingAttributes)));
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult>> impl_IInkManager<D>::RecognizeAsync(Windows::UI::Input::Inking::InkRecognitionTarget recognitionTarget) const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::UI::Input::Inking::InkRecognitionResult>> recognitionResults;
    check_hresult(static_cast<const IInkManager &>(static_cast<const D &>(*this))->abi_RecognizeAsync2(recognitionTarget, put(recognitionResults)));
    return recognitionResults;
}

inline InkDrawingAttributes::InkDrawingAttributes() :
    InkDrawingAttributes(activate_instance<InkDrawingAttributes>())
{}

inline Windows::UI::Input::Inking::InkDrawingAttributes InkDrawingAttributes::CreateForPencil()
{
    return get_activation_factory<InkDrawingAttributes, IInkDrawingAttributesStatics>().CreateForPencil();
}

inline InkManager::InkManager() :
    InkManager(activate_instance<InkManager>())
{}

inline InkPoint::InkPoint(const Windows::Foundation::Point & position, float pressure) :
    InkPoint(get_activation_factory<InkPoint, IInkPointFactory>().CreateInkPoint(position, pressure))
{}

inline InkPresenterRuler::InkPresenterRuler(const Windows::UI::Input::Inking::InkPresenter & inkPresenter) :
    InkPresenterRuler(get_activation_factory<InkPresenterRuler, IInkPresenterRulerFactory>().Create(inkPresenter))
{}

inline InkRecognizerContainer::InkRecognizerContainer() :
    InkRecognizerContainer(activate_instance<InkRecognizerContainer>())
{}

inline InkStrokeBuilder::InkStrokeBuilder() :
    InkStrokeBuilder(activate_instance<InkStrokeBuilder>())
{}

inline InkStrokeContainer::InkStrokeContainer() :
    InkStrokeContainer(activate_instance<InkStrokeContainer>())
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Devices.Adc.Provider.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Devices.Adc.Provider.3.h"
#include "Windows.Devices.Adc.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Devices::Adc::Provider::IAdcControllerProvider> : produce_base<D, Windows::Devices::Adc::Provider::IAdcControllerProvider>
{
    HRESULT __stdcall get_ChannelCount(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ChannelCount());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ResolutionInBits(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ResolutionInBits());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MinValue(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MinValue());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaxValue(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxValue());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ChannelMode(Windows::Devices::Adc::Provider::ProviderAdcChannelMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ChannelMode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ChannelMode(Windows::Devices::Adc::Provider::ProviderAdcChannelMode value) noexcept override
    {
        try
        {
            this->shim().ChannelMode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_IsChannelModeSupported(Windows::Devices::Adc::Provider::ProviderAdcChannelMode channelMode, bool * result) noexcept override
    {
        try
        {
            *result = detach(this->shim().IsChannelModeSupported(channelMode));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AcquireChannel(int32_t channel) noexcept override
    {
        try
        {
            this->shim().AcquireChannel(channel);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReleaseChannel(int32_t channel) noexcept override
    {
        try
        {
            this->shim().ReleaseChannel(channel);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadValue(int32_t channelNumber, int32_t * result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReadValue(channelNumber));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Adc::Provider::IAdcProvider> : produce_base<D, Windows::Devices::Adc::Provider::IAdcProvider>
{
    HRESULT __stdcall abi_GetControllers(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Adc::Provider::IAdcControllerProvider>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetControllers());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Devices::Adc::Provider {

template <typename D> int32_t impl_IAdcControllerProvider<D>::ChannelCount() const
{
    int32_t value {};
    check_hresult(static_cast<const IAdcControllerProvider &>(static_cast<const D &>(*this))->get_ChannelCount(&value));
    return value;
}

template <typename D> int32_t impl_IAdcControllerProvider<D>::ResolutionInBits() const
{
    int32_t value {};
    check_hresult(static_cast<const IAdcControllerProvider &>(static_cast<const D &>(*this))->get_ResolutionInBits(&value));
    return value;
}

template <typename D> int32_t impl_IAdcControllerProvider<D>::MinValue() const
{
    int32_t value {};
    check_hresult(static_cast<const IAdcControllerProvider &>(static_cast<const D &>(*this))->get_MinValue(&value));
    return value;
}

template <typename D> int32_t impl_IAdcControllerProvider<D>::MaxValue() const
{
    int32_t value {};
    check_hresult(static_cast<const IAdcControllerProvider &>(static_cast<const D &>(*this))->get_MaxValue(&value));
    return value;
}

template <typename D> Windows::Devices::Adc::Provider::ProviderAdcChannelMode impl_IAdcControllerProvider<D>::ChannelMode() const
{
    Windows::Devices::Adc::Provider::ProviderAdcChannelMode value {};
    check_hresult(static_cast<const IAdcControllerProvider &>(static_cast<const D &>(*this))->get_ChannelMode(&value));
    return value;
}

template <typename D> void impl_IAdcControllerProvider<D>::ChannelMode(Windows::Devices::Adc::Provider::ProviderAdcChannelMode value) const
{
    check_hresult(static_cast<const IAdcControllerProvider &>(static_cast<const D &>(*this))->put_ChannelMode(value));
}

template <typename D> bool impl_IAdcControllerProvider<D>::IsChannelModeSupported(Windows::Devices::Adc::Provider::ProviderAdcChannelMode channelMode) const
{
    bool result {};
    check_hresult(static_cast<const IAdcControllerProvider &>(static_cast<const D &>(*this))->abi_IsChannelModeSupported(channelMode, &result));
    return result;
}

template <typename D> void impl_IAdcControllerProvider<D>::AcquireChannel(int32_t channel) const
{
    check_hresult(static_cast<const IAdcControllerProvider &>(static_cast<const D &>(*this))->abi_AcquireChannel(channel));
}

template <typename D> void impl_IAdcControllerProvider<D>::ReleaseChannel(int32_t channel) const
{
    check_hresult(static_cast<const IAdcControllerProvider &>(static_cast<const D &>(*this))->abi_ReleaseChannel(channel));
}

template <typename D> int32_t impl_IAdcControllerProvider<D>::ReadValue(int32_t channelNumber) const
{
    int32_t result {};
    check_hresult(static_cast<const IAdcControllerProvider &>(static_cast<const D &>(*this))->abi_ReadValue(channelNumber, &result));
    return result;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Adc::Provider::IAdcControllerProvider> impl_IAdcProvider<D>::GetControllers() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Adc::Provider::IAdcControllerProvider> result;
    check_hresult(static_cast<const IAdcProvider &>(static_cast<const D &>(*this))->abi_GetControllers(put(result)));
    return result;
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Web.Syndication.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Web::Syndication {

struct RetrievalProgress;
struct TransferProgress;

}

namespace Windows::Web::Syndication {

using RetrievalProgress = ABI::Windows::Web::Syndication::RetrievalProgress;
using TransferProgress = ABI::Windows::Web::Syndication::TransferProgress;

}

namespace ABI::Windows::Web::Syndication {

struct ISyndicationAttribute;
struct ISyndicationAttributeFactory;
struct ISyndicationCategory;
struct ISyndicationCategoryFactory;
struct ISyndicationClient;
struct ISyndicationClientFactory;
struct ISyndicationContent;
struct ISyndicationContentFactory;
struct ISyndicationErrorStatics;
struct ISyndicationFeed;
struct ISyndicationFeedFactory;
struct ISyndicationGenerator;
struct ISyndicationGeneratorFactory;
struct ISyndicationItem;
struct ISyndicationItemFactory;
struct ISyndicationLink;
struct ISyndicationLinkFactory;
struct ISyndicationNode;
struct ISyndicationNodeFactory;
struct ISyndicationPerson;
struct ISyndicationPersonFactory;
struct ISyndicationText;
struct ISyndicationTextFactory;
struct SyndicationAttribute;
struct SyndicationCategory;
struct SyndicationClient;
struct SyndicationContent;
struct SyndicationFeed;
struct SyndicationGenerator;
struct SyndicationItem;
struct SyndicationLink;
struct SyndicationNode;
struct SyndicationPerson;
struct SyndicationText;

}

namespace Windows::Web::Syndication {

struct ISyndicationAttribute;
struct ISyndicationAttributeFactory;
struct ISyndicationCategory;
struct ISyndicationCategoryFactory;
struct ISyndicationClient;
struct ISyndicationClientFactory;
struct ISyndicationContent;
struct ISyndicationContentFactory;
struct ISyndicationErrorStatics;
struct ISyndicationFeed;
struct ISyndicationFeedFactory;
struct ISyndicationGenerator;
struct ISyndicationGeneratorFactory;
struct ISyndicationItem;
struct ISyndicationItemFactory;
struct ISyndicationLink;
struct ISyndicationLinkFactory;
struct ISyndicationNode;
struct ISyndicationNodeFactory;
struct ISyndicationPerson;
struct ISyndicationPersonFactory;
struct ISyndicationText;
struct ISyndicationTextFactory;
struct SyndicationAttribute;
struct SyndicationCategory;
struct SyndicationClient;
struct SyndicationContent;
struct SyndicationError;
struct SyndicationFeed;
struct SyndicationGenerator;
struct SyndicationItem;
struct SyndicationLink;
struct SyndicationNode;
struct SyndicationPerson;
struct SyndicationText;

}

namespace Windows::Web::Syndication {

enum class SyndicationErrorStatus
{
    Unknown = 0,
    MissingRequiredElement = 1,
    MissingRequiredAttribute = 2,
    InvalidXml = 3,
    UnexpectedContent = 4,
    UnsupportedFormat = 5,
};

enum class SyndicationFormat
{
    Atom10 = 0,
    Rss20 = 1,
    Rss10 = 2,
    Rss092 = 3,
    Rss091 = 4,
    Atom03 = 5,
};

enum class SyndicationTextType
{
    Text = 0,
    Html = 1,
    Xhtml = 2,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.WiFiDirect.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::WiFiDirect {

struct IWiFiDirectAdvertisement;
struct IWiFiDirectAdvertisement2;
struct IWiFiDirectAdvertisementPublisher;
struct IWiFiDirectAdvertisementPublisherStatusChangedEventArgs;
struct IWiFiDirectConnectionListener;
struct IWiFiDirectConnectionParameters;
struct IWiFiDirectConnectionParameters2;
struct IWiFiDirectConnectionParametersStatics;
struct IWiFiDirectConnectionRequest;
struct IWiFiDirectConnectionRequestedEventArgs;
struct IWiFiDirectDevice;
struct IWiFiDirectDeviceStatics;
struct IWiFiDirectDeviceStatics2;
struct IWiFiDirectInformationElement;
struct IWiFiDirectInformationElementStatics;
struct IWiFiDirectLegacySettings;
struct WiFiDirectAdvertisement;
struct WiFiDirectAdvertisementPublisher;
struct WiFiDirectAdvertisementPublisherStatusChangedEventArgs;
struct WiFiDirectConnectionListener;
struct WiFiDirectConnectionParameters;
struct WiFiDirectConnectionRequest;
struct WiFiDirectConnectionRequestedEventArgs;
struct WiFiDirectDevice;
struct WiFiDirectInformationElement;
struct WiFiDirectLegacySettings;

}

namespace Windows::Devices::WiFiDirect {

struct IWiFiDirectAdvertisement;
struct IWiFiDirectAdvertisement2;
struct IWiFiDirectAdvertisementPublisher;
struct IWiFiDirectAdvertisementPublisherStatusChangedEventArgs;
struct IWiFiDirectConnectionListener;
struct IWiFiDirectConnectionParameters;
struct IWiFiDirectConnectionParameters2;
struct IWiFiDirectConnectionParametersStatics;
struct IWiFiDirectConnectionRequest;
struct IWiFiDirectConnectionRequestedEventArgs;
struct IWiFiDirectDevice;
struct IWiFiDirectDeviceStatics;
struct IWiFiDirectDeviceStatics2;
struct IWiFiDirectInformationElement;
struct IWiFiDirectInformationElementStatics;
struct IWiFiDirectLegacySettings;
struct WiFiDirectAdvertisement;
struct WiFiDirectAdvertisementPublisher;
struct WiFiDirectAdvertisementPublisherStatusChangedEventArgs;
struct WiFiDirectConnectionListener;
struct WiFiDirectConnectionParameters;
struct WiFiDirectConnectionRequest;
struct WiFiDirectConnectionRequestedEventArgs;
struct WiFiDirectDevice;
struct WiFiDirectInformationElement;
struct WiFiDirectLegacySettings;

}

namespace Windows::Devices::WiFiDirect {

enum class WiFiDirectAdvertisementListenStateDiscoverability
{
    None = 0,
    Normal = 1,
    Intensive = 2,
};

enum class WiFiDirectAdvertisementPublisherStatus
{
    Created = 0,
    Started = 1,
    Stopped = 2,
    Aborted = 3,
};

enum class WiFiDirectConfigurationMethod
{
    ProvidePin = 0,
    DisplayPin = 1,
    PushButton = 2,
};

enum class WiFiDirectConnectionStatus
{
    Disconnected = 0,
    Connected = 1,
};

enum class WiFiDirectDeviceSelectorType
{
    DeviceInterface = 0,
    AssociationEndpoint = 1,
};

enum class WiFiDirectError
{
    Success = 0,
    RadioNotAvailable = 1,
    ResourceInUse = 2,
};

enum class WiFiDirectPairingProcedure
{
    GroupOwnerNegotiation = 0,
    Invitation = 1,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Security.Cryptography.Certificates.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Security.Cryptography.Certificates.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
#define WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
template <> struct __declspec(uuid("cdb5efb3-5788-509d-9be1-71ccb8a3362a")) __declspec(novtable) IAsyncOperation<bool> : impl_IAsyncOperation<bool> {};
#endif

#ifndef WINRT_GENERIC_3e1fe603_f897_5263_b328_0806426b8a79
#define WINRT_GENERIC_3e1fe603_f897_5263_b328_0806426b8a79
template <> struct __declspec(uuid("3e1fe603-f897-5263-b328-0806426b8a79")) __declspec(novtable) IAsyncOperation<hstring> : impl_IAsyncOperation<hstring> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_98b9acc1_4b56_532e_ac73_03d5291cca90
#define WINRT_GENERIC_98b9acc1_4b56_532e_ac73_03d5291cca90
template <> struct __declspec(uuid("98b9acc1-4b56-532e-ac73-03d5291cca90")) __declspec(novtable) IVector<hstring> : impl_IVector<hstring> {};
#endif

#ifndef WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
#define WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
template <> struct __declspec(uuid("2f13c006-a03a-5f69-b090-75a43e33423e")) __declspec(novtable) IVectorView<hstring> : impl_IVectorView<hstring> {};
#endif

#ifndef WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
#define WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
template <> struct __declspec(uuid("e2fcc7c1-3bfc-5a0b-b2b0-72e769d1cb7e")) __declspec(novtable) IIterable<hstring> : impl_IIterable<hstring> {};
#endif

#ifndef WINRT_GENERIC_0c7d1423_e8fd_5a91_b55c_8bfbe7ac2d40
#define WINRT_GENERIC_0c7d1423_e8fd_5a91_b55c_8bfbe7ac2d40
template <> struct __declspec(uuid("0c7d1423-e8fd-5a91-b55c-8bfbe7ac2d40")) __declspec(novtable) IIterable<Windows::Security::Cryptography::Certificates::Certificate> : impl_IIterable<Windows::Security::Cryptography::Certificates::Certificate> {};
#endif

#ifndef WINRT_GENERIC_963f7013_77c2_51c5_8038_b5bcef633edb
#define WINRT_GENERIC_963f7013_77c2_51c5_8038_b5bcef633edb
template <> struct __declspec(uuid("963f7013-77c2-51c5-8038-b5bcef633edb")) __declspec(novtable) IVectorView<Windows::Security::Cryptography::Certificates::Certificate> : impl_IVectorView<Windows::Security::Cryptography::Certificates::Certificate> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_3bee8834_b9a7_5a80_a746_5ef097227878
#define WINRT_GENERIC_3bee8834_b9a7_5a80_a746_5ef097227878
template <> struct __declspec(uuid("3bee8834-b9a7-5a80-a746-5ef097227878")) __declspec(novtable) IAsyncOperation<Windows::Storage::Streams::IBuffer> : impl_IAsyncOperation<Windows::Storage::Streams::IBuffer> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_36282c0f_2f1f_57f4_b2b1_867af90c3d13
#define WINRT_GENERIC_36282c0f_2f1f_57f4_b2b1_867af90c3d13
template <> struct __declspec(uuid("36282c0f-2f1f-57f4-b2b1-867af90c3d13")) __declspec(novtable) IVector<Windows::Security::Cryptography::Certificates::Certificate> : impl_IVector<Windows::Security::Cryptography::Certificates::Certificate> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_f618c7d4_aee1_58ae_afe8_fc336daf0395
#define WINRT_GENERIC_f618c7d4_aee1_58ae_afe8_fc336daf0395
template <> struct __declspec(uuid("f618c7d4-aee1-58ae-afe8-fc336daf0395")) __declspec(novtable) IAsyncOperation<Windows::Security::Cryptography::Certificates::CertificateChain> : impl_IAsyncOperation<Windows::Security::Cryptography::Certificates::CertificateChain> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_f46bcaa8_747c_5a93_82fe_85d63549fe81
#define WINRT_GENERIC_f46bcaa8_747c_5a93_82fe_85d63549fe81
template <> struct __declspec(uuid("f46bcaa8-747c-5a93-82fe-85d63549fe81")) __declspec(novtable) IVectorView<Windows::Security::Cryptography::Certificates::CmsSignerInfo> : impl_IVectorView<Windows::Security::Cryptography::Certificates::CmsSignerInfo> {};
#endif

#ifndef WINRT_GENERIC_6af24174_2dda_5a54_a0b9_4d6690059427
#define WINRT_GENERIC_6af24174_2dda_5a54_a0b9_4d6690059427
template <> struct __declspec(uuid("6af24174-2dda-5a54-a0b9-4d6690059427")) __declspec(novtable) IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo> : impl_IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_f09c0bcf_ce3b_5dff_971f_2c3ffe6fd04d
#define WINRT_GENERIC_f09c0bcf_ce3b_5dff_971f_2c3ffe6fd04d
template <> struct __declspec(uuid("f09c0bcf-ce3b-5dff-971f-2c3ffe6fd04d")) __declspec(novtable) IAsyncOperation<winrt::Windows::Security::Cryptography::Certificates::SignatureValidationResult> : impl_IAsyncOperation<winrt::Windows::Security::Cryptography::Certificates::SignatureValidationResult> {};
#endif

#ifndef WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
#define WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
template <> struct __declspec(uuid("c1d3d1a2-ae17-5a5f-b5a2-bdcc8844889a")) __declspec(novtable) AsyncOperationCompletedHandler<bool> : impl_AsyncOperationCompletedHandler<bool> {};
#endif

#ifndef WINRT_GENERIC_b79a741f_7fb5_50ae_9e99_911201ec3d41
#define WINRT_GENERIC_b79a741f_7fb5_50ae_9e99_911201ec3d41
template <> struct __declspec(uuid("b79a741f-7fb5-50ae-9e99-911201ec3d41")) __declspec(novtable) AsyncOperationCompletedHandler<hstring> : impl_AsyncOperationCompletedHandler<hstring> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
#define WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
template <> struct __declspec(uuid("8c304ebb-6615-50a4-8829-879ecd443236")) __declspec(novtable) IIterator<hstring> : impl_IIterator<hstring> {};
#endif

#ifndef WINRT_GENERIC_676fc159_f15c_58bd_91a7_28f7e795c756
#define WINRT_GENERIC_676fc159_f15c_58bd_91a7_28f7e795c756
template <> struct __declspec(uuid("676fc159-f15c-58bd-91a7-28f7e795c756")) __declspec(novtable) IIterator<Windows::Security::Cryptography::Certificates::Certificate> : impl_IIterator<Windows::Security::Cryptography::Certificates::Certificate> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_51c3d2fd_b8a1_5620_b746_7ee6d533aca3
#define WINRT_GENERIC_51c3d2fd_b8a1_5620_b746_7ee6d533aca3
template <> struct __declspec(uuid("51c3d2fd-b8a1-5620-b746-7ee6d533aca3")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Storage::Streams::IBuffer> : impl_AsyncOperationCompletedHandler<Windows::Storage::Streams::IBuffer> {};
#endif

#ifndef WINRT_GENERIC_4c3f50e9_90e3_5a30_9015_4aa0376904f3
#define WINRT_GENERIC_4c3f50e9_90e3_5a30_9015_4aa0376904f3
template <> struct __declspec(uuid("4c3f50e9-90e3-5a30-9015-4aa0376904f3")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Security::Cryptography::Certificates::CertificateChain> : impl_AsyncOperationCompletedHandler<Windows::Security::Cryptography::Certificates::CertificateChain> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_ba691628_d419_5e0a_b924_03ebc236b11e
#define WINRT_GENERIC_ba691628_d419_5e0a_b924_03ebc236b11e
template <> struct __declspec(uuid("ba691628-d419-5e0a-b924-03ebc236b11e")) __declspec(novtable) IIterator<Windows::Security::Cryptography::Certificates::CmsSignerInfo> : impl_IIterator<Windows::Security::Cryptography::Certificates::CmsSignerInfo> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_dff50005_78ad_5f4f_a085_cb614a674a25
#define WINRT_GENERIC_dff50005_78ad_5f4f_a085_cb614a674a25
template <> struct __declspec(uuid("dff50005-78ad-5f4f-a085-cb614a674a25")) __declspec(novtable) AsyncOperationCompletedHandler<winrt::Windows::Security::Cryptography::Certificates::SignatureValidationResult> : impl_AsyncOperationCompletedHandler<winrt::Windows::Security::Cryptography::Certificates::SignatureValidationResult> {};
#endif

#ifndef WINRT_GENERIC_9b26648e_b32f_5909_a635_78e6d3bb4067
#define WINRT_GENERIC_9b26648e_b32f_5909_a635_78e6d3bb4067
template <> struct __declspec(uuid("9b26648e-b32f-5909-a635-78e6d3bb4067")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> {};
#endif

#ifndef WINRT_GENERIC_1896faee_23e2_59ca_9802_0f48eed98ef4
#define WINRT_GENERIC_1896faee_23e2_59ca_9802_0f48eed98ef4
template <> struct __declspec(uuid("1896faee-23e2-59ca-9802-0f48eed98ef4")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> {};
#endif


}

namespace Windows::Security::Cryptography::Certificates {

template <typename D>
struct WINRT_EBO impl_ICertificate
{
    Windows::Foundation::IAsyncOperation<Windows::Security::Cryptography::Certificates::CertificateChain> BuildChainAsync(const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> & certificates) const;
    Windows::Foundation::IAsyncOperation<Windows::Security::Cryptography::Certificates::CertificateChain> BuildChainAsync(const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> & certificates, const Windows::Security::Cryptography::Certificates::ChainBuildingParameters & parameters) const;
    com_array<uint8_t> SerialNumber() const;
    com_array<uint8_t> GetHashValue() const;
    com_array<uint8_t> GetHashValue(hstring_ref hashAlgorithmName) const;
    Windows::Storage::Streams::IBuffer GetCertificateBlob() const;
    hstring Subject() const;
    hstring Issuer() const;
    bool HasPrivateKey() const;
    bool IsStronglyProtected() const;
    Windows::Foundation::DateTime ValidFrom() const;
    Windows::Foundation::DateTime ValidTo() const;
    Windows::Foundation::Collections::IVectorView<hstring> EnhancedKeyUsages() const;
    void FriendlyName(hstring_ref value) const;
    hstring FriendlyName() const;
};

template <typename D>
struct WINRT_EBO impl_ICertificate2
{
    bool IsSecurityDeviceBound() const;
    Windows::Security::Cryptography::Certificates::CertificateKeyUsages KeyUsages() const;
    hstring KeyAlgorithmName() const;
    hstring SignatureAlgorithmName() const;
    hstring SignatureHashAlgorithmName() const;
    Windows::Security::Cryptography::Certificates::SubjectAlternativeNameInfo SubjectAlternativeName() const;
};

template <typename D>
struct WINRT_EBO impl_ICertificate3
{
    bool IsPerUser() const;
    hstring StoreName() const;
    hstring KeyStorageProviderName() const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateChain
{
    Windows::Security::Cryptography::Certificates::ChainValidationResult Validate() const;
    Windows::Security::Cryptography::Certificates::ChainValidationResult Validate(const Windows::Security::Cryptography::Certificates::ChainValidationParameters & parameter) const;
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> GetCertificates(bool includeRoot) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateEnrollmentManagerStatics
{
    Windows::Foundation::IAsyncOperation<hstring> CreateRequestAsync(const Windows::Security::Cryptography::Certificates::CertificateRequestProperties & request) const;
    Windows::Foundation::IAsyncAction InstallCertificateAsync(hstring_ref certificate, Windows::Security::Cryptography::Certificates::InstallOptions installOption) const;
    Windows::Foundation::IAsyncAction ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, hstring_ref friendlyName) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateEnrollmentManagerStatics2
{
    Windows::Security::Cryptography::Certificates::UserCertificateEnrollmentManager UserCertificateEnrollmentManager() const;
    Windows::Foundation::IAsyncAction ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, hstring_ref friendlyName, hstring_ref keyStorageProvider) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateEnrollmentManagerStatics3
{
    Windows::Foundation::IAsyncAction ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, const Windows::Security::Cryptography::Certificates::PfxImportParameters & pfxImportParameters) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateFactory
{
    Windows::Security::Cryptography::Certificates::Certificate CreateCertificate(const Windows::Storage::Streams::IBuffer & certBlob) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateKeyUsages
{
    bool EncipherOnly() const;
    void EncipherOnly(bool value) const;
    bool CrlSign() const;
    void CrlSign(bool value) const;
    bool KeyCertificateSign() const;
    void KeyCertificateSign(bool value) const;
    bool KeyAgreement() const;
    void KeyAgreement(bool value) const;
    bool DataEncipherment() const;
    void DataEncipherment(bool value) const;
    bool KeyEncipherment() const;
    void KeyEncipherment(bool value) const;
    bool NonRepudiation() const;
    void NonRepudiation(bool value) const;
    bool DigitalSignature() const;
    void DigitalSignature(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateQuery
{
    Windows::Foundation::Collections::IVector<hstring> EnhancedKeyUsages() const;
    hstring IssuerName() const;
    void IssuerName(hstring_ref value) const;
    hstring FriendlyName() const;
    void FriendlyName(hstring_ref value) const;
    com_array<uint8_t> Thumbprint() const;
    void Thumbprint(array_ref<const uint8_t> value) const;
    bool HardwareOnly() const;
    void HardwareOnly(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateQuery2
{
    bool IncludeDuplicates() const;
    void IncludeDuplicates(bool value) const;
    bool IncludeExpiredCertificates() const;
    void IncludeExpiredCertificates(bool value) const;
    hstring StoreName() const;
    void StoreName(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateRequestProperties
{
    hstring Subject() const;
    void Subject(hstring_ref value) const;
    hstring KeyAlgorithmName() const;
    void KeyAlgorithmName(hstring_ref value) const;
    uint32_t KeySize() const;
    void KeySize(uint32_t value) const;
    hstring FriendlyName() const;
    void FriendlyName(hstring_ref value) const;
    hstring HashAlgorithmName() const;
    void HashAlgorithmName(hstring_ref value) const;
    Windows::Security::Cryptography::Certificates::ExportOption Exportable() const;
    void Exportable(Windows::Security::Cryptography::Certificates::ExportOption value) const;
    Windows::Security::Cryptography::Certificates::EnrollKeyUsages KeyUsages() const;
    void KeyUsages(Windows::Security::Cryptography::Certificates::EnrollKeyUsages value) const;
    Windows::Security::Cryptography::Certificates::KeyProtectionLevel KeyProtectionLevel() const;
    void KeyProtectionLevel(Windows::Security::Cryptography::Certificates::KeyProtectionLevel value) const;
    hstring KeyStorageProviderName() const;
    void KeyStorageProviderName(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateRequestProperties2
{
    hstring SmartcardReaderName() const;
    void SmartcardReaderName(hstring_ref value) const;
    Windows::Security::Cryptography::Certificates::Certificate SigningCertificate() const;
    void SigningCertificate(const Windows::Security::Cryptography::Certificates::Certificate & value) const;
    Windows::Security::Cryptography::Certificates::Certificate AttestationCredentialCertificate() const;
    void AttestationCredentialCertificate(const Windows::Security::Cryptography::Certificates::Certificate & value) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateRequestProperties3
{
    hstring CurveName() const;
    void CurveName(hstring_ref value) const;
    com_array<uint8_t> CurveParameters() const;
    void CurveParameters(array_ref<const uint8_t> value) const;
    hstring ContainerNamePrefix() const;
    void ContainerNamePrefix(hstring_ref value) const;
    hstring ContainerName() const;
    void ContainerName(hstring_ref value) const;
    bool UseExistingKey() const;
    void UseExistingKey(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateStore
{
    void Add(const Windows::Security::Cryptography::Certificates::Certificate & certificate) const;
    void Delete(const Windows::Security::Cryptography::Certificates::Certificate & certificate) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateStore2
{
    hstring Name() const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateStoresStatics
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> FindAllAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> FindAllAsync(const Windows::Security::Cryptography::Certificates::CertificateQuery & query) const;
    Windows::Security::Cryptography::Certificates::CertificateStore TrustedRootCertificationAuthorities() const;
    Windows::Security::Cryptography::Certificates::CertificateStore IntermediateCertificationAuthorities() const;
    Windows::Security::Cryptography::Certificates::CertificateStore GetStoreByName(hstring_ref storeName) const;
};

template <typename D>
struct WINRT_EBO impl_ICertificateStoresStatics2
{
    Windows::Security::Cryptography::Certificates::UserCertificateStore GetUserStoreByName(hstring_ref storeName) const;
};

template <typename D>
struct WINRT_EBO impl_IChainBuildingParameters
{
    Windows::Foundation::Collections::IVector<hstring> EnhancedKeyUsages() const;
    Windows::Foundation::DateTime ValidationTimestamp() const;
    void ValidationTimestamp(const Windows::Foundation::DateTime & value) const;
    bool RevocationCheckEnabled() const;
    void RevocationCheckEnabled(bool value) const;
    bool NetworkRetrievalEnabled() const;
    void NetworkRetrievalEnabled(bool value) const;
    bool AuthorityInformationAccessEnabled() const;
    void AuthorityInformationAccessEnabled(bool value) const;
    bool CurrentTimeValidationEnabled() const;
    void CurrentTimeValidationEnabled(bool value) const;
    Windows::Foundation::Collections::IVector<Windows::Security::Cryptography::Certificates::Certificate> ExclusiveTrustRoots() const;
};

template <typename D>
struct WINRT_EBO impl_IChainValidationParameters
{
    Windows::Security::Cryptography::Certificates::CertificateChainPolicy CertificateChainPolicy() const;
    void CertificateChainPolicy(Windows::Security::Cryptography::Certificates::CertificateChainPolicy value) const;
    Windows::Networking::HostName ServerDnsName() const;
    void ServerDnsName(const Windows::Networking::HostName & value) const;
};

template <typename D>
struct WINRT_EBO impl_ICmsAttachedSignature
{
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> Certificates() const;
    com_array<uint8_t> Content() const;
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::CmsSignerInfo> Signers() const;
    Windows::Security::Cryptography::Certificates::SignatureValidationResult VerifySignature() const;
};

template <typename D>
struct WINRT_EBO impl_ICmsAttachedSignatureFactory
{
    Windows::Security::Cryptography::Certificates::CmsAttachedSignature CreateCmsAttachedSignature(const Windows::Storage::Streams::IBuffer & inputBlob) const;
};

template <typename D>
struct WINRT_EBO impl_ICmsAttachedSignatureStatics
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> GenerateSignatureAsync(const Windows::Storage::Streams::IBuffer & data, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo> & signers, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> & certificates) const;
};

template <typename D>
struct WINRT_EBO impl_ICmsDetachedSignature
{
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> Certificates() const;
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::CmsSignerInfo> Signers() const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Cryptography::Certificates::SignatureValidationResult> VerifySignatureAsync(const Windows::Storage::Streams::IInputStream & data) const;
};

template <typename D>
struct WINRT_EBO impl_ICmsDetachedSignatureFactory
{
    Windows::Security::Cryptography::Certificates::CmsDetachedSignature CreateCmsDetachedSignature(const Windows::Storage::Streams::IBuffer & inputBlob) const;
};

template <typename D>
struct WINRT_EBO impl_ICmsDetachedSignatureStatics
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> GenerateSignatureAsync(const Windows::Storage::Streams::IInputStream & data, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo> & signers, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> & certificates) const;
};

template <typename D>
struct WINRT_EBO impl_ICmsSignerInfo
{
    Windows::Security::Cryptography::Certificates::Certificate Certificate() const;
    void Certificate(const Windows::Security::Cryptography::Certificates::Certificate & value) const;
    hstring HashAlgorithmName() const;
    void HashAlgorithmName(hstring_ref value) const;
    Windows::Security::Cryptography::Certificates::CmsTimestampInfo TimestampInfo() const;
};

template <typename D>
struct WINRT_EBO impl_ICmsTimestampInfo
{
    Windows::Security::Cryptography::Certificates::Certificate SigningCertificate() const;
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> Certificates() const;
    Windows::Foundation::DateTime Timestamp() const;
};

template <typename D>
struct WINRT_EBO impl_IKeyAlgorithmNamesStatics
{
    hstring Rsa() const;
    hstring Dsa() const;
    hstring Ecdh256() const;
    hstring Ecdh384() const;
    hstring Ecdh521() const;
    hstring Ecdsa256() const;
    hstring Ecdsa384() const;
    hstring Ecdsa521() const;
};

template <typename D>
struct WINRT_EBO impl_IKeyAlgorithmNamesStatics2
{
    hstring Ecdsa() const;
    hstring Ecdh() const;
};

template <typename D>
struct WINRT_EBO impl_IKeyAttestationHelperStatics
{
    Windows::Foundation::IAsyncOperation<hstring> DecryptTpmAttestationCredentialAsync(hstring_ref credential) const;
    hstring GetTpmAttestationCredentialId(hstring_ref credential) const;
};

template <typename D>
struct WINRT_EBO impl_IKeyAttestationHelperStatics2
{
    Windows::Foundation::IAsyncOperation<hstring> DecryptTpmAttestationCredentialAsync(hstring_ref credential, hstring_ref containerName) const;
};

template <typename D>
struct WINRT_EBO impl_IKeyStorageProviderNamesStatics
{
    hstring SoftwareKeyStorageProvider() const;
    hstring SmartcardKeyStorageProvider() const;
    hstring PlatformKeyStorageProvider() const;
};

template <typename D>
struct WINRT_EBO impl_IKeyStorageProviderNamesStatics2
{
    hstring PassportKeyStorageProvider() const;
};

template <typename D>
struct WINRT_EBO impl_IPfxImportParameters
{
    Windows::Security::Cryptography::Certificates::ExportOption Exportable() const;
    void Exportable(Windows::Security::Cryptography::Certificates::ExportOption value) const;
    Windows::Security::Cryptography::Certificates::KeyProtectionLevel KeyProtectionLevel() const;
    void KeyProtectionLevel(Windows::Security::Cryptography::Certificates::KeyProtectionLevel value) const;
    Windows::Security::Cryptography::Certificates::InstallOptions InstallOptions() const;
    void InstallOptions(Windows::Security::Cryptography::Certificates::InstallOptions value) const;
    hstring FriendlyName() const;
    void FriendlyName(hstring_ref value) const;
    hstring KeyStorageProviderName() const;
    void KeyStorageProviderName(hstring_ref value) const;
    hstring ContainerNamePrefix() const;
    void ContainerNamePrefix(hstring_ref value) const;
    hstring ReaderName() const;
    void ReaderName(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IStandardCertificateStoreNamesStatics
{
    hstring Personal() const;
    hstring TrustedRootCertificationAuthorities() const;
    hstring IntermediateCertificationAuthorities() const;
};

template <typename D>
struct WINRT_EBO impl_ISubjectAlternativeNameInfo
{
    Windows::Foundation::Collections::IVectorView<hstring> EmailName() const;
    Windows::Foundation::Collections::IVectorView<hstring> IPAddress() const;
    Windows::Foundation::Collections::IVectorView<hstring> Url() const;
    Windows::Foundation::Collections::IVectorView<hstring> DnsName() const;
    Windows::Foundation::Collections::IVectorView<hstring> DistinguishedName() const;
    Windows::Foundation::Collections::IVectorView<hstring> PrincipalName() const;
};

template <typename D>
struct WINRT_EBO impl_IUserCertificateEnrollmentManager
{
    Windows::Foundation::IAsyncOperation<hstring> CreateRequestAsync(const Windows::Security::Cryptography::Certificates::CertificateRequestProperties & request) const;
    Windows::Foundation::IAsyncAction InstallCertificateAsync(hstring_ref certificate, Windows::Security::Cryptography::Certificates::InstallOptions installOption) const;
    Windows::Foundation::IAsyncAction ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, hstring_ref friendlyName) const;
    Windows::Foundation::IAsyncAction ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, hstring_ref friendlyName, hstring_ref keyStorageProvider) const;
};

template <typename D>
struct WINRT_EBO impl_IUserCertificateEnrollmentManager2
{
    Windows::Foundation::IAsyncAction ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, const Windows::Security::Cryptography::Certificates::PfxImportParameters & pfxImportParameters) const;
};

template <typename D>
struct WINRT_EBO impl_IUserCertificateStore
{
    Windows::Foundation::IAsyncOperation<bool> RequestAddAsync(const Windows::Security::Cryptography::Certificates::Certificate & certificate) const;
    Windows::Foundation::IAsyncOperation<bool> RequestDeleteAsync(const Windows::Security::Cryptography::Certificates::Certificate & certificate) const;
    hstring Name() const;
};

struct ICertificate :
    Windows::IInspectable,
    impl::consume<ICertificate>
{
    ICertificate(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificate>(m_ptr); }
};

struct ICertificate2 :
    Windows::IInspectable,
    impl::consume<ICertificate2>
{
    ICertificate2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificate2>(m_ptr); }
};

struct ICertificate3 :
    Windows::IInspectable,
    impl::consume<ICertificate3>
{
    ICertificate3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificate3>(m_ptr); }
};

struct ICertificateChain :
    Windows::IInspectable,
    impl::consume<ICertificateChain>
{
    ICertificateChain(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateChain>(m_ptr); }
};

struct ICertificateEnrollmentManagerStatics :
    Windows::IInspectable,
    impl::consume<ICertificateEnrollmentManagerStatics>
{
    ICertificateEnrollmentManagerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateEnrollmentManagerStatics>(m_ptr); }
};

struct ICertificateEnrollmentManagerStatics2 :
    Windows::IInspectable,
    impl::consume<ICertificateEnrollmentManagerStatics2>
{
    ICertificateEnrollmentManagerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateEnrollmentManagerStatics2>(m_ptr); }
};

struct ICertificateEnrollmentManagerStatics3 :
    Windows::IInspectable,
    impl::consume<ICertificateEnrollmentManagerStatics3>
{
    ICertificateEnrollmentManagerStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateEnrollmentManagerStatics3>(m_ptr); }
};

struct ICertificateFactory :
    Windows::IInspectable,
    impl::consume<ICertificateFactory>
{
    ICertificateFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateFactory>(m_ptr); }
};

struct ICertificateKeyUsages :
    Windows::IInspectable,
    impl::consume<ICertificateKeyUsages>
{
    ICertificateKeyUsages(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateKeyUsages>(m_ptr); }
};

struct ICertificateQuery :
    Windows::IInspectable,
    impl::consume<ICertificateQuery>
{
    ICertificateQuery(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateQuery>(m_ptr); }
};

struct ICertificateQuery2 :
    Windows::IInspectable,
    impl::consume<ICertificateQuery2>
{
    ICertificateQuery2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateQuery2>(m_ptr); }
};

struct ICertificateRequestProperties :
    Windows::IInspectable,
    impl::consume<ICertificateRequestProperties>
{
    ICertificateRequestProperties(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateRequestProperties>(m_ptr); }
};

struct ICertificateRequestProperties2 :
    Windows::IInspectable,
    impl::consume<ICertificateRequestProperties2>
{
    ICertificateRequestProperties2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateRequestProperties2>(m_ptr); }
};

struct ICertificateRequestProperties3 :
    Windows::IInspectable,
    impl::consume<ICertificateRequestProperties3>
{
    ICertificateRequestProperties3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateRequestProperties3>(m_ptr); }
};

struct ICertificateStore :
    Windows::IInspectable,
    impl::consume<ICertificateStore>
{
    ICertificateStore(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateStore>(m_ptr); }
};

struct ICertificateStore2 :
    Windows::IInspectable,
    impl::consume<ICertificateStore2>
{
    ICertificateStore2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateStore2>(m_ptr); }
};

struct ICertificateStoresStatics :
    Windows::IInspectable,
    impl::consume<ICertificateStoresStatics>
{
    ICertificateStoresStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateStoresStatics>(m_ptr); }
};

struct ICertificateStoresStatics2 :
    Windows::IInspectable,
    impl::consume<ICertificateStoresStatics2>
{
    ICertificateStoresStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICertificateStoresStatics2>(m_ptr); }
};

struct IChainBuildingParameters :
    Windows::IInspectable,
    impl::consume<IChainBuildingParameters>
{
    IChainBuildingParameters(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IChainBuildingParameters>(m_ptr); }
};

struct IChainValidationParameters :
    Windows::IInspectable,
    impl::consume<IChainValidationParameters>
{
    IChainValidationParameters(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IChainValidationParameters>(m_ptr); }
};

struct ICmsAttachedSignature :
    Windows::IInspectable,
    impl::consume<ICmsAttachedSignature>
{
    ICmsAttachedSignature(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICmsAttachedSignature>(m_ptr); }
};

struct ICmsAttachedSignatureFactory :
    Windows::IInspectable,
    impl::consume<ICmsAttachedSignatureFactory>
{
    ICmsAttachedSignatureFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICmsAttachedSignatureFactory>(m_ptr); }
};

struct ICmsAttachedSignatureStatics :
    Windows::IInspectable,
    impl::consume<ICmsAttachedSignatureStatics>
{
    ICmsAttachedSignatureStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICmsAttachedSignatureStatics>(m_ptr); }
};

struct ICmsDetachedSignature :
    Windows::IInspectable,
    impl::consume<ICmsDetachedSignature>
{
    ICmsDetachedSignature(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICmsDetachedSignature>(m_ptr); }
};

struct ICmsDetachedSignatureFactory :
    Windows::IInspectable,
    impl::consume<ICmsDetachedSignatureFactory>
{
    ICmsDetachedSignatureFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICmsDetachedSignatureFactory>(m_ptr); }
};

struct ICmsDetachedSignatureStatics :
    Windows::IInspectable,
    impl::consume<ICmsDetachedSignatureStatics>
{
    ICmsDetachedSignatureStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICmsDetachedSignatureStatics>(m_ptr); }
};

struct ICmsSignerInfo :
    Windows::IInspectable,
    impl::consume<ICmsSignerInfo>
{
    ICmsSignerInfo(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICmsSignerInfo>(m_ptr); }
};

struct ICmsTimestampInfo :
    Windows::IInspectable,
    impl::consume<ICmsTimestampInfo>
{
    ICmsTimestampInfo(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICmsTimestampInfo>(m_ptr); }
};

struct IKeyAlgorithmNamesStatics :
    Windows::IInspectable,
    impl::consume<IKeyAlgorithmNamesStatics>
{
    IKeyAlgorithmNamesStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IKeyAlgorithmNamesStatics>(m_ptr); }
};

struct IKeyAlgorithmNamesStatics2 :
    Windows::IInspectable,
    impl::consume<IKeyAlgorithmNamesStatics2>
{
    IKeyAlgorithmNamesStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IKeyAlgorithmNamesStatics2>(m_ptr); }
};

struct IKeyAttestationHelperStatics :
    Windows::IInspectable,
    impl::consume<IKeyAttestationHelperStatics>
{
    IKeyAttestationHelperStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IKeyAttestationHelperStatics>(m_ptr); }
};

struct IKeyAttestationHelperStatics2 :
    Windows::IInspectable,
    impl::consume<IKeyAttestationHelperStatics2>
{
    IKeyAttestationHelperStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IKeyAttestationHelperStatics2>(m_ptr); }
};

struct IKeyStorageProviderNamesStatics :
    Windows::IInspectable,
    impl::consume<IKeyStorageProviderNamesStatics>
{
    IKeyStorageProviderNamesStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IKeyStorageProviderNamesStatics>(m_ptr); }
};

struct IKeyStorageProviderNamesStatics2 :
    Windows::IInspectable,
    impl::consume<IKeyStorageProviderNamesStatics2>
{
    IKeyStorageProviderNamesStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IKeyStorageProviderNamesStatics2>(m_ptr); }
};

struct IPfxImportParameters :
    Windows::IInspectable,
    impl::consume<IPfxImportParameters>
{
    IPfxImportParameters(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPfxImportParameters>(m_ptr); }
};

struct IStandardCertificateStoreNamesStatics :
    Windows::IInspectable,
    impl::consume<IStandardCertificateStoreNamesStatics>
{
    IStandardCertificateStoreNamesStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStandardCertificateStoreNamesStatics>(m_ptr); }
};

struct ISubjectAlternativeNameInfo :
    Windows::IInspectable,
    impl::consume<ISubjectAlternativeNameInfo>
{
    ISubjectAlternativeNameInfo(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISubjectAlternativeNameInfo>(m_ptr); }
};

struct IUserCertificateEnrollmentManager :
    Windows::IInspectable,
    impl::consume<IUserCertificateEnrollmentManager>
{
    IUserCertificateEnrollmentManager(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserCertificateEnrollmentManager>(m_ptr); }
};

struct IUserCertificateEnrollmentManager2 :
    Windows::IInspectable,
    impl::consume<IUserCertificateEnrollmentManager2>
{
    IUserCertificateEnrollmentManager2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserCertificateEnrollmentManager2>(m_ptr); }
};

struct IUserCertificateStore :
    Windows::IInspectable,
    impl::consume<IUserCertificateStore>
{
    IUserCertificateStore(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserCertificateStore>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.System.Threading.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.System.Threading.1.h"

WINRT_EXPORT namespace winrt {

namespace Windows::System::Threading {

template <typename D>
struct WINRT_EBO impl_IThreadPoolStatics
{
    Windows::Foundation::IAsyncAction RunAsync(const Windows::System::Threading::WorkItemHandler & handler) const;
    Windows::Foundation::IAsyncAction RunAsync(const Windows::System::Threading::WorkItemHandler & handler, Windows::System::Threading::WorkItemPriority priority) const;
    Windows::Foundation::IAsyncAction RunAsync(const Windows::System::Threading::WorkItemHandler & handler, Windows::System::Threading::WorkItemPriority priority, Windows::System::Threading::WorkItemOptions options) const;
};

template <typename D>
struct WINRT_EBO impl_IThreadPoolTimer
{
    Windows::Foundation::TimeSpan Period() const;
    Windows::Foundation::TimeSpan Delay() const;
    void Cancel() const;
};

template <typename D>
struct WINRT_EBO impl_IThreadPoolTimerStatics
{
    Windows::System::Threading::ThreadPoolTimer CreatePeriodicTimer(const Windows::System::Threading::TimerElapsedHandler & handler, const Windows::Foundation::TimeSpan & period) const;
    Windows::System::Threading::ThreadPoolTimer CreateTimer(const Windows::System::Threading::TimerElapsedHandler & handler, const Windows::Foundation::TimeSpan & delay) const;
    Windows::System::Threading::ThreadPoolTimer CreatePeriodicTimer(const Windows::System::Threading::TimerElapsedHandler & handler, const Windows::Foundation::TimeSpan & period, const Windows::System::Threading::TimerDestroyedHandler & destroyed) const;
    Windows::System::Threading::ThreadPoolTimer CreateTimer(const Windows::System::Threading::TimerElapsedHandler & handler, const Windows::Foundation::TimeSpan & delay, const Windows::System::Threading::TimerDestroyedHandler & destroyed) const;
};

struct TimerDestroyedHandler : Windows::IUnknown
{
    TimerDestroyedHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<TimerDestroyedHandler>(m_ptr); }
    template <typename L> TimerDestroyedHandler(L lambda);
    template <typename F> TimerDestroyedHandler (F * function);
    template <typename O, typename M> TimerDestroyedHandler(O * object, M method);
    void operator()(const Windows::System::Threading::ThreadPoolTimer & timer) const;
};

struct TimerElapsedHandler : Windows::IUnknown
{
    TimerElapsedHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<TimerElapsedHandler>(m_ptr); }
    template <typename L> TimerElapsedHandler(L lambda);
    template <typename F> TimerElapsedHandler (F * function);
    template <typename O, typename M> TimerElapsedHandler(O * object, M method);
    void operator()(const Windows::System::Threading::ThreadPoolTimer & timer) const;
};

struct WorkItemHandler : Windows::IUnknown
{
    WorkItemHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<WorkItemHandler>(m_ptr); }
    template <typename L> WorkItemHandler(L lambda);
    template <typename F> WorkItemHandler (F * function);
    template <typename O, typename M> WorkItemHandler(O * object, M method);
    void operator()(const Windows::Foundation::IAsyncAction & operation) const;
};

struct IThreadPoolStatics :
    Windows::IInspectable,
    impl::consume<IThreadPoolStatics>
{
    IThreadPoolStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IThreadPoolStatics>(m_ptr); }
};

struct IThreadPoolTimer :
    Windows::IInspectable,
    impl::consume<IThreadPoolTimer>
{
    IThreadPoolTimer(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IThreadPoolTimer>(m_ptr); }
};

struct IThreadPoolTimerStatics :
    Windows::IInspectable,
    impl::consume<IThreadPoolTimerStatics>
{
    IThreadPoolTimerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IThreadPoolTimerStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Security.Cryptography.Certificates.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Security::Cryptography::Certificates {

struct ICertificate;
struct ICertificate2;
struct ICertificate3;
struct ICertificateChain;
struct ICertificateEnrollmentManagerStatics;
struct ICertificateEnrollmentManagerStatics2;
struct ICertificateEnrollmentManagerStatics3;
struct ICertificateFactory;
struct ICertificateKeyUsages;
struct ICertificateQuery;
struct ICertificateQuery2;
struct ICertificateRequestProperties;
struct ICertificateRequestProperties2;
struct ICertificateRequestProperties3;
struct ICertificateStore;
struct ICertificateStore2;
struct ICertificateStoresStatics;
struct ICertificateStoresStatics2;
struct IChainBuildingParameters;
struct IChainValidationParameters;
struct ICmsAttachedSignature;
struct ICmsAttachedSignatureFactory;
struct ICmsAttachedSignatureStatics;
struct ICmsDetachedSignature;
struct ICmsDetachedSignatureFactory;
struct ICmsDetachedSignatureStatics;
struct ICmsSignerInfo;
struct ICmsTimestampInfo;
struct IKeyAlgorithmNamesStatics;
struct IKeyAlgorithmNamesStatics2;
struct IKeyAttestationHelperStatics;
struct IKeyAttestationHelperStatics2;
struct IKeyStorageProviderNamesStatics;
struct IKeyStorageProviderNamesStatics2;
struct IPfxImportParameters;
struct IStandardCertificateStoreNamesStatics;
struct ISubjectAlternativeNameInfo;
struct IUserCertificateEnrollmentManager;
struct IUserCertificateEnrollmentManager2;
struct IUserCertificateStore;
struct Certificate;
struct CertificateChain;
struct CertificateKeyUsages;
struct CertificateQuery;
struct CertificateRequestProperties;
struct CertificateStore;
struct ChainBuildingParameters;
struct ChainValidationParameters;
struct CmsAttachedSignature;
struct CmsDetachedSignature;
struct CmsSignerInfo;
struct CmsTimestampInfo;
struct PfxImportParameters;
struct SubjectAlternativeNameInfo;
struct UserCertificateEnrollmentManager;
struct UserCertificateStore;

}

namespace Windows::Security::Cryptography::Certificates {

struct ICertificate;
struct ICertificate2;
struct ICertificate3;
struct ICertificateChain;
struct ICertificateEnrollmentManagerStatics;
struct ICertificateEnrollmentManagerStatics2;
struct ICertificateEnrollmentManagerStatics3;
struct ICertificateFactory;
struct ICertificateKeyUsages;
struct ICertificateQuery;
struct ICertificateQuery2;
struct ICertificateRequestProperties;
struct ICertificateRequestProperties2;
struct ICertificateRequestProperties3;
struct ICertificateStore;
struct ICertificateStore2;
struct ICertificateStoresStatics;
struct ICertificateStoresStatics2;
struct IChainBuildingParameters;
struct IChainValidationParameters;
struct ICmsAttachedSignature;
struct ICmsAttachedSignatureFactory;
struct ICmsAttachedSignatureStatics;
struct ICmsDetachedSignature;
struct ICmsDetachedSignatureFactory;
struct ICmsDetachedSignatureStatics;
struct ICmsSignerInfo;
struct ICmsTimestampInfo;
struct IKeyAlgorithmNamesStatics;
struct IKeyAlgorithmNamesStatics2;
struct IKeyAttestationHelperStatics;
struct IKeyAttestationHelperStatics2;
struct IKeyStorageProviderNamesStatics;
struct IKeyStorageProviderNamesStatics2;
struct IPfxImportParameters;
struct IStandardCertificateStoreNamesStatics;
struct ISubjectAlternativeNameInfo;
struct IUserCertificateEnrollmentManager;
struct IUserCertificateEnrollmentManager2;
struct IUserCertificateStore;
struct Certificate;
struct CertificateChain;
struct CertificateEnrollmentManager;
struct CertificateKeyUsages;
struct CertificateQuery;
struct CertificateRequestProperties;
struct CertificateStore;
struct CertificateStores;
struct ChainBuildingParameters;
struct ChainValidationParameters;
struct CmsAttachedSignature;
struct CmsDetachedSignature;
struct CmsSignerInfo;
struct CmsTimestampInfo;
struct KeyAlgorithmNames;
struct KeyAttestationHelper;
struct KeyStorageProviderNames;
struct PfxImportParameters;
struct StandardCertificateStoreNames;
struct SubjectAlternativeNameInfo;
struct UserCertificateEnrollmentManager;
struct UserCertificateStore;

}

namespace Windows::Security::Cryptography::Certificates {

enum class CertificateChainPolicy
{
    Base = 0,
    Ssl = 1,
    NTAuthentication = 2,
    MicrosoftRoot = 3,
};

enum class ChainValidationResult
{
    Success = 0,
    Untrusted = 1,
    Revoked = 2,
    Expired = 3,
    IncompleteChain = 4,
    InvalidSignature = 5,
    WrongUsage = 6,
    InvalidName = 7,
    InvalidCertificateAuthorityPolicy = 8,
    BasicConstraintsError = 9,
    UnknownCriticalExtension = 10,
    RevocationInformationMissing = 11,
    RevocationFailure = 12,
    OtherErrors = 13,
};

enum class EnrollKeyUsages : unsigned
{
    None = 0x0,
    Decryption = 0x1,
    Signing = 0x2,
    KeyAgreement = 0x4,
    All = 0xFFFFFF,
};

DEFINE_ENUM_FLAG_OPERATORS(EnrollKeyUsages)

enum class ExportOption
{
    NotExportable = 0,
    Exportable = 1,
};

enum class InstallOptions : unsigned
{
    None = 0x0,
    DeleteExpired = 0x1,
};

DEFINE_ENUM_FLAG_OPERATORS(InstallOptions)

enum class KeyProtectionLevel
{
    NoConsent = 0,
    ConsentOnly = 1,
    ConsentWithPassword = 2,
    ConsentWithFingerprint = 3,
};

enum class KeySize
{
    Invalid = 0,
    Rsa2048 = 2048,
    Rsa4096 = 4096,
};

enum class SignatureValidationResult
{
    Success = 0,
    InvalidParameter = 1,
    BadMessage = 2,
    InvalidSignature = 3,
    OtherErrors = 4,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Phone.ApplicationModel.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Phone.ApplicationModel.1.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Phone::ApplicationModel {

template <typename D>
struct WINRT_EBO impl_IApplicationProfileStatics
{
    Windows::Phone::ApplicationModel::ApplicationProfileModes Modes() const;
};

struct IApplicationProfileStatics :
    Windows::IInspectable,
    impl::consume<IApplicationProfileStatics>
{
    IApplicationProfileStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IApplicationProfileStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.SerialCommunication.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Devices.SerialCommunication.1.h"
#include "Windows.Foundation.2.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_44ef26ed_c1ff_546a_a46b_6a37de9187fb
#define WINRT_GENERIC_44ef26ed_c1ff_546a_a46b_6a37de9187fb
template <> struct __declspec(uuid("44ef26ed-c1ff-546a-a46b-6a37de9187fb")) __declspec(novtable) IAsyncOperation<Windows::Devices::SerialCommunication::SerialDevice> : impl_IAsyncOperation<Windows::Devices::SerialCommunication::SerialDevice> {};
#endif

#ifndef WINRT_GENERIC_d92ea323_b7bf_5e02_b9fb_c61f97d080e9
#define WINRT_GENERIC_d92ea323_b7bf_5e02_b9fb_c61f97d080e9
template <> struct __declspec(uuid("d92ea323-b7bf-5e02-b9fb-c61f97d080e9")) __declspec(novtable) TypedEventHandler<Windows::Devices::SerialCommunication::SerialDevice, Windows::Devices::SerialCommunication::ErrorReceivedEventArgs> : impl_TypedEventHandler<Windows::Devices::SerialCommunication::SerialDevice, Windows::Devices::SerialCommunication::ErrorReceivedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_e496c3ef_5802_5ac4_ac2e_96bc23fa9447
#define WINRT_GENERIC_e496c3ef_5802_5ac4_ac2e_96bc23fa9447
template <> struct __declspec(uuid("e496c3ef-5802-5ac4-ac2e-96bc23fa9447")) __declspec(novtable) TypedEventHandler<Windows::Devices::SerialCommunication::SerialDevice, Windows::Devices::SerialCommunication::PinChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::SerialCommunication::SerialDevice, Windows::Devices::SerialCommunication::PinChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_84a34b33_06fc_5e63_8ee2_eab4ff69acb7
#define WINRT_GENERIC_84a34b33_06fc_5e63_8ee2_eab4ff69acb7
template <> struct __declspec(uuid("84a34b33-06fc-5e63-8ee2-eab4ff69acb7")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Devices::SerialCommunication::SerialDevice> : impl_AsyncOperationCompletedHandler<Windows::Devices::SerialCommunication::SerialDevice> {};
#endif


}

namespace Windows::Devices::SerialCommunication {

template <typename D>
struct WINRT_EBO impl_IErrorReceivedEventArgs
{
    Windows::Devices::SerialCommunication::SerialError Error() const;
};

template <typename D>
struct WINRT_EBO impl_IPinChangedEventArgs
{
    Windows::Devices::SerialCommunication::SerialPinChange PinChange() const;
};

template <typename D>
struct WINRT_EBO impl_ISerialDevice
{
    uint32_t BaudRate() const;
    void BaudRate(uint32_t value) const;
    bool BreakSignalState() const;
    void BreakSignalState(bool value) const;
    uint32_t BytesReceived() const;
    bool CarrierDetectState() const;
    bool ClearToSendState() const;
    uint16_t DataBits() const;
    void DataBits(uint16_t value) const;
    bool DataSetReadyState() const;
    Windows::Devices::SerialCommunication::SerialHandshake Handshake() const;
    void Handshake(Windows::Devices::SerialCommunication::SerialHandshake value) const;
    bool IsDataTerminalReadyEnabled() const;
    void IsDataTerminalReadyEnabled(bool value) const;
    bool IsRequestToSendEnabled() const;
    void IsRequestToSendEnabled(bool value) const;
    Windows::Devices::SerialCommunication::SerialParity Parity() const;
    void Parity(Windows::Devices::SerialCommunication::SerialParity value) const;
    hstring PortName() const;
    Windows::Foundation::TimeSpan ReadTimeout() const;
    void ReadTimeout(const Windows::Foundation::TimeSpan & value) const;
    Windows::Devices::SerialCommunication::SerialStopBitCount StopBits() const;
    void StopBits(Windows::Devices::SerialCommunication::SerialStopBitCount value) const;
    uint16_t UsbVendorId() const;
    uint16_t UsbProductId() const;
    Windows::Foundation::TimeSpan WriteTimeout() const;
    void WriteTimeout(const Windows::Foundation::TimeSpan & value) const;
    Windows::Storage::Streams::IInputStream InputStream() const;
    Windows::Storage::Streams::IOutputStream OutputStream() const;
    event_token ErrorReceived(const Windows::Foundation::TypedEventHandler<Windows::Devices::SerialCommunication::SerialDevice, Windows::Devices::SerialCommunication::ErrorReceivedEventArgs> & reportHandler) const;
    using ErrorReceived_revoker = event_revoker<ISerialDevice>;
    ErrorReceived_revoker ErrorReceived(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::SerialCommunication::SerialDevice, Windows::Devices::SerialCommunication::ErrorReceivedEventArgs> & reportHandler) const;
    void ErrorReceived(event_token token) const;
    event_token PinChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::SerialCommunication::SerialDevice, Windows::Devices::SerialCommunication::PinChangedEventArgs> & reportHandler) const;
    using PinChanged_revoker = event_revoker<ISerialDevice>;
    PinChanged_revoker PinChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::SerialCommunication::SerialDevice, Windows::Devices::SerialCommunication::PinChangedEventArgs> & reportHandler) const;
    void PinChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ISerialDeviceStatics
{
    hstring GetDeviceSelector() const;
    hstring GetDeviceSelector(hstring_ref portName) const;
    hstring GetDeviceSelectorFromUsbVidPid(uint16_t vendorId, uint16_t productId) const;
    Windows::Foundation::IAsyncOperation<Windows::Devices::SerialCommunication::SerialDevice> FromIdAsync(hstring_ref deviceId) const;
};

struct IErrorReceivedEventArgs :
    Windows::IInspectable,
    impl::consume<IErrorReceivedEventArgs>
{
    IErrorReceivedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IErrorReceivedEventArgs>(m_ptr); }
};

struct IPinChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IPinChangedEventArgs>
{
    IPinChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPinChangedEventArgs>(m_ptr); }
};

struct ISerialDevice :
    Windows::IInspectable,
    impl::consume<ISerialDevice>,
    impl::require<ISerialDevice, Windows::Foundation::IClosable>
{
    ISerialDevice(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISerialDevice>(m_ptr); }
};

struct ISerialDeviceStatics :
    Windows::IInspectable,
    impl::consume<ISerialDeviceStatics>
{
    ISerialDeviceStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISerialDeviceStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Media.Media3D.5.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace Windows::UI::Xaml::Media::Media3D {

template <typename D, typename ... Interfaces> struct Transform3DT :
    overrides<D, Windows::IInspectable, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::Media::Media3D::ITransform3D>
{
    using composable = Transform3D;

protected:

    Transform3DT()
    {
        get_activation_factory<Transform3D, ITransform3DFactory>().CreateInstance(*this, this->m_inner);
    }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Store.LicenseManagement.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.ApplicationModel.Store.LicenseManagement.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
#define WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
template <> struct __declspec(uuid("e2fcc7c1-3bfc-5a0b-b2b0-72e769d1cb7e")) __declspec(novtable) IIterable<hstring> : impl_IIterable<hstring> {};
#endif

#ifndef WINRT_GENERIC_19df5e64_c2b2_5bfd_a259_f02c23574cd3
#define WINRT_GENERIC_19df5e64_c2b2_5bfd_a259_f02c23574cd3
template <> struct __declspec(uuid("19df5e64-c2b2-5bfd-a259-f02c23574cd3")) __declspec(novtable) IMapView<hstring, Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionInfo> : impl_IMapView<hstring, Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionInfo> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_b8447bc9_a9f8_5867_8b30_cd34720edc31
#define WINRT_GENERIC_b8447bc9_a9f8_5867_8b30_cd34720edc31
template <> struct __declspec(uuid("b8447bc9-a9f8-5867-8b30-cd34720edc31")) __declspec(novtable) IAsyncOperation<Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionResult> : impl_IAsyncOperation<Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
#define WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
template <> struct __declspec(uuid("8c304ebb-6615-50a4-8829-879ecd443236")) __declspec(novtable) IIterator<hstring> : impl_IIterator<hstring> {};
#endif

#ifndef WINRT_GENERIC_69426b8f_88d8_5546_92ee_53f75307845b
#define WINRT_GENERIC_69426b8f_88d8_5546_92ee_53f75307845b
template <> struct __declspec(uuid("69426b8f-88d8-5546-92ee-53f75307845b")) __declspec(novtable) IKeyValuePair<hstring, Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionInfo> : impl_IKeyValuePair<hstring, Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionInfo> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_936e8471_252f_5339_89c3_9428412086ca
#define WINRT_GENERIC_936e8471_252f_5339_89c3_9428412086ca
template <> struct __declspec(uuid("936e8471-252f-5339-89c3-9428412086ca")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionResult> : impl_AsyncOperationCompletedHandler<Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_168d4306_e80a_5e37_ae46_2ceecdd7fc9a
#define WINRT_GENERIC_168d4306_e80a_5e37_ae46_2ceecdd7fc9a
template <> struct __declspec(uuid("168d4306-e80a-5e37-ae46-2ceecdd7fc9a")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionInfo>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionInfo>> {};
#endif

#ifndef WINRT_GENERIC_ac935021_e04b_5226_8119_5b73d0b8be5b
#define WINRT_GENERIC_ac935021_e04b_5226_8119_5b73d0b8be5b
template <> struct __declspec(uuid("ac935021-e04b-5226-8119-5b73d0b8be5b")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionInfo>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionInfo>> {};
#endif


}

namespace Windows::ApplicationModel::Store::LicenseManagement {

template <typename D>
struct WINRT_EBO impl_ILicenseManagerStatics
{
    Windows::Foundation::IAsyncAction AddLicenseAsync(const Windows::Storage::Streams::IBuffer & license) const;
    Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionResult> GetSatisfactionInfosAsync(const Windows::Foundation::Collections::IIterable<hstring> & contentIds, const Windows::Foundation::Collections::IIterable<hstring> & keyIds) const;
};

template <typename D>
struct WINRT_EBO impl_ILicenseSatisfactionInfo
{
    bool SatisfiedByDevice() const;
    bool SatisfiedByOpenLicense() const;
    bool SatisfiedByTrial() const;
    bool SatisfiedByPass() const;
    bool SatisfiedByInstallMedia() const;
    bool SatisfiedBySignedInUser() const;
    bool IsSatisfied() const;
};

template <typename D>
struct WINRT_EBO impl_ILicenseSatisfactionResult
{
    Windows::Foundation::Collections::IMapView<hstring, Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionInfo> LicenseSatisfactionInfos() const;
    HRESULT ExtendedError() const;
};

struct ILicenseManagerStatics :
    Windows::IInspectable,
    impl::consume<ILicenseManagerStatics>
{
    ILicenseManagerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILicenseManagerStatics>(m_ptr); }
};

struct ILicenseSatisfactionInfo :
    Windows::IInspectable,
    impl::consume<ILicenseSatisfactionInfo>
{
    ILicenseSatisfactionInfo(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILicenseSatisfactionInfo>(m_ptr); }
};

struct ILicenseSatisfactionResult :
    Windows::IInspectable,
    impl::consume<ILicenseSatisfactionResult>
{
    ILicenseSatisfactionResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILicenseSatisfactionResult>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.System.Threading.Core.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.System.Threading.Core.1.h"

WINRT_EXPORT namespace winrt {

namespace Windows::System::Threading::Core {

template <typename D>
struct WINRT_EBO impl_IPreallocatedWorkItem
{
    Windows::Foundation::IAsyncAction RunAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IPreallocatedWorkItemFactory
{
    Windows::System::Threading::Core::PreallocatedWorkItem CreateWorkItem(const Windows::System::Threading::WorkItemHandler & handler) const;
    Windows::System::Threading::Core::PreallocatedWorkItem CreateWorkItemWithPriority(const Windows::System::Threading::WorkItemHandler & handler, Windows::System::Threading::WorkItemPriority priority) const;
    Windows::System::Threading::Core::PreallocatedWorkItem CreateWorkItemWithPriorityAndOptions(const Windows::System::Threading::WorkItemHandler & handler, Windows::System::Threading::WorkItemPriority priority, Windows::System::Threading::WorkItemOptions options) const;
};

template <typename D>
struct WINRT_EBO impl_ISignalNotifier
{
    void Enable() const;
    void Terminate() const;
};

template <typename D>
struct WINRT_EBO impl_ISignalNotifierStatics
{
    Windows::System::Threading::Core::SignalNotifier AttachToEvent(hstring_ref name, const Windows::System::Threading::Core::SignalHandler & handler) const;
    Windows::System::Threading::Core::SignalNotifier AttachToEvent(hstring_ref name, const Windows::System::Threading::Core::SignalHandler & handler, const Windows::Foundation::TimeSpan & timeout) const;
    Windows::System::Threading::Core::SignalNotifier AttachToSemaphore(hstring_ref name, const Windows::System::Threading::Core::SignalHandler & handler) const;
    Windows::System::Threading::Core::SignalNotifier AttachToSemaphore(hstring_ref name, const Windows::System::Threading::Core::SignalHandler & handler, const Windows::Foundation::TimeSpan & timeout) const;
};

struct SignalHandler : Windows::IUnknown
{
    SignalHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<SignalHandler>(m_ptr); }
    template <typename L> SignalHandler(L lambda);
    template <typename F> SignalHandler (F * function);
    template <typename O, typename M> SignalHandler(O * object, M method);
    void operator()(const Windows::System::Threading::Core::SignalNotifier & signalNotifier, bool timedOut) const;
};

struct IPreallocatedWorkItem :
    Windows::IInspectable,
    impl::consume<IPreallocatedWorkItem>
{
    IPreallocatedWorkItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPreallocatedWorkItem>(m_ptr); }
};

struct IPreallocatedWorkItemFactory :
    Windows::IInspectable,
    impl::consume<IPreallocatedWorkItemFactory>
{
    IPreallocatedWorkItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPreallocatedWorkItemFactory>(m_ptr); }
};

struct ISignalNotifier :
    Windows::IInspectable,
    impl::consume<ISignalNotifier>
{
    ISignalNotifier(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISignalNotifier>(m_ptr); }
};

struct ISignalNotifierStatics :
    Windows::IInspectable,
    impl::consume<ISignalNotifierStatics>
{
    ISignalNotifierStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISignalNotifierStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Input.Inking.Core.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Input::Inking::Core {

struct ICoreInkIndependentInputSource;
struct ICoreInkIndependentInputSourceStatics;
struct ICoreWetStrokeUpdateEventArgs;
struct ICoreWetStrokeUpdateSource;
struct ICoreWetStrokeUpdateSourceStatics;
struct CoreInkIndependentInputSource;
struct CoreWetStrokeUpdateEventArgs;
struct CoreWetStrokeUpdateSource;

}

namespace Windows::UI::Input::Inking::Core {

struct ICoreInkIndependentInputSource;
struct ICoreInkIndependentInputSourceStatics;
struct ICoreWetStrokeUpdateEventArgs;
struct ICoreWetStrokeUpdateSource;
struct ICoreWetStrokeUpdateSourceStatics;
struct CoreInkIndependentInputSource;
struct CoreWetStrokeUpdateEventArgs;
struct CoreWetStrokeUpdateSource;

}

namespace Windows::UI::Input::Inking::Core {

enum class CoreWetStrokeDisposition
{
    Inking = 0,
    Completed = 1,
    Canceled = 2,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Media.Animation.4.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace Windows::UI::Xaml::Media::Animation {

template <typename D, typename A = ABI::Windows::UI::Xaml::Media::Animation::INavigationTransitionInfoOverrides>
class INavigationTransitionInfoOverridesT : public A
{
    D & shim() noexcept { return *static_cast<D *>(this); }

public:

    using INavigationTransitionInfoOverrides = winrt::Windows::UI::Xaml::Media::Animation::INavigationTransitionInfoOverrides;

    hstring GetNavigationStateCore()
    {
        return shim().as<INavigationTransitionInfoOverrides>().GetNavigationStateCore();
    }

    void SetNavigationStateCore(hstring_ref navigationState)
    {
        shim().as<INavigationTransitionInfoOverrides>().SetNavigationStateCore(navigationState);
    }

    HRESULT __stdcall abi_GetNavigationStateCore(abi_arg_out<hstring> returnValue) noexcept override
    {
        try
        {
            *returnValue = detach(this->shim().GetNavigationStateCore());
            return S_OK;
        }
        catch (...)
        {
            *returnValue = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetNavigationStateCore(abi_arg_in<hstring> navigationState) noexcept override
    {
        try
        {
            this->shim().SetNavigationStateCore(*reinterpret_cast<const hstring *>(&navigationState));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Data.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.UI.Xaml.Data.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::UI::Xaml::Data {

template <typename H> struct impl_CurrentChangingEventHandler : implements<impl_CurrentChangingEventHandler<H>, abi<CurrentChangingEventHandler>>, H
{
    impl_CurrentChangingEventHandler(H && handler) : H(std::forward<H>(handler)) {}

    HRESULT __stdcall abi_Invoke(abi_arg_in<Windows::IInspectable> sender, abi_arg_in<Windows::UI::Xaml::Data::ICurrentChangingEventArgs> e) noexcept override
    {
        try
        {
            (*this)(*reinterpret_cast<const Windows::IInspectable *>(&sender), *reinterpret_cast<const Windows::UI::Xaml::Data::CurrentChangingEventArgs *>(&e));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename H> struct impl_PropertyChangedEventHandler : implements<impl_PropertyChangedEventHandler<H>, abi<PropertyChangedEventHandler>>, H
{
    impl_PropertyChangedEventHandler(H && handler) : H(std::forward<H>(handler)) {}

    HRESULT __stdcall abi_Invoke(abi_arg_in<Windows::IInspectable> sender, abi_arg_in<Windows::UI::Xaml::Data::IPropertyChangedEventArgs> e) noexcept override
    {
        try
        {
            (*this)(*reinterpret_cast<const Windows::IInspectable *>(&sender), *reinterpret_cast<const Windows::UI::Xaml::Data::PropertyChangedEventArgs *>(&e));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::UI::Xaml::Data {

struct WINRT_EBO Binding :
    Windows::UI::Xaml::Data::IBinding,
    impl::bases<Binding, Windows::UI::Xaml::DependencyObject, Windows::UI::Xaml::Data::BindingBase>,
    impl::require<Binding, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::Data::IBindingBase, Windows::UI::Xaml::Data::IBinding2>
{
    Binding(std::nullptr_t) noexcept {}
    Binding();
};

struct WINRT_EBO BindingBase :
    Windows::UI::Xaml::Data::IBindingBase,
    impl::bases<BindingBase, Windows::UI::Xaml::DependencyObject>,
    impl::require<BindingBase, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2>
{
    BindingBase(std::nullptr_t) noexcept {}
    BindingBase();
};

struct WINRT_EBO BindingExpression :
    Windows::UI::Xaml::Data::IBindingExpression,
    impl::bases<BindingExpression, Windows::UI::Xaml::Data::BindingExpressionBase>,
    impl::require<BindingExpression, Windows::UI::Xaml::Data::IBindingExpressionBase>
{
    BindingExpression(std::nullptr_t) noexcept {}
};

struct WINRT_EBO BindingExpressionBase :
    Windows::UI::Xaml::Data::IBindingExpressionBase
{
    BindingExpressionBase(std::nullptr_t) noexcept {}
};

struct WINRT_EBO BindingOperations :
    Windows::UI::Xaml::Data::IBindingOperations
{
    BindingOperations(std::nullptr_t) noexcept {}
    static void SetBinding(const Windows::UI::Xaml::DependencyObject & target, const Windows::UI::Xaml::DependencyProperty & dp, const Windows::UI::Xaml::Data::BindingBase & binding);
};

struct WINRT_EBO CollectionViewSource :
    Windows::UI::Xaml::Data::ICollectionViewSource,
    impl::bases<CollectionViewSource, Windows::UI::Xaml::DependencyObject>,
    impl::require<CollectionViewSource, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2>
{
    CollectionViewSource(std::nullptr_t) noexcept {}
    CollectionViewSource();
    static Windows::UI::Xaml::DependencyProperty SourceProperty();
    static Windows::UI::Xaml::DependencyProperty ViewProperty();
    static Windows::UI::Xaml::DependencyProperty IsSourceGroupedProperty();
    static Windows::UI::Xaml::DependencyProperty ItemsPathProperty();
};

struct WINRT_EBO CurrentChangingEventArgs :
    Windows::UI::Xaml::Data::ICurrentChangingEventArgs
{
    CurrentChangingEventArgs(std::nullptr_t) noexcept {}
    CurrentChangingEventArgs();
    CurrentChangingEventArgs(bool isCancelable);
};

struct WINRT_EBO ItemIndexRange :
    Windows::UI::Xaml::Data::IItemIndexRange
{
    ItemIndexRange(std::nullptr_t) noexcept {}
    ItemIndexRange(int32_t firstIndex, uint32_t length);
};

struct WINRT_EBO PropertyChangedEventArgs :
    Windows::UI::Xaml::Data::IPropertyChangedEventArgs
{
    PropertyChangedEventArgs(std::nullptr_t) noexcept {}
    PropertyChangedEventArgs(hstring_ref name);
};

struct WINRT_EBO RelativeSource :
    Windows::UI::Xaml::Data::IRelativeSource,
    impl::bases<RelativeSource, Windows::UI::Xaml::DependencyObject>,
    impl::require<RelativeSource, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2>
{
    RelativeSource(std::nullptr_t) noexcept {}
    RelativeSource();
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.WebUI.Core.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.UI.WebUI.Core.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_c587d918_89aa_55ca_95b0_c14a07a53217
#define WINRT_GENERIC_c587d918_89aa_55ca_95b0_c14a07a53217
template <> struct __declspec(uuid("c587d918-89aa-55ca-95b0-c14a07a53217")) __declspec(novtable) TypedEventHandler<Windows::UI::WebUI::Core::WebUICommandBarIconButton, Windows::UI::WebUI::Core::WebUICommandBarItemInvokedEventArgs> : impl_TypedEventHandler<Windows::UI::WebUI::Core::WebUICommandBarIconButton, Windows::UI::WebUI::Core::WebUICommandBarItemInvokedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_10f0434f_880e_504a_9ce1_24b14149213b
#define WINRT_GENERIC_10f0434f_880e_504a_9ce1_24b14149213b
template <> struct __declspec(uuid("10f0434f-880e-504a-9ce1-24b14149213b")) __declspec(novtable) TypedEventHandler<Windows::UI::WebUI::Core::WebUICommandBarConfirmationButton, Windows::UI::WebUI::Core::WebUICommandBarItemInvokedEventArgs> : impl_TypedEventHandler<Windows::UI::WebUI::Core::WebUICommandBarConfirmationButton, Windows::UI::WebUI::Core::WebUICommandBarItemInvokedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_b35feb4b_1833_59f8_b146_4627813af189
#define WINRT_GENERIC_b35feb4b_1833_59f8_b146_4627813af189
template <> struct __declspec(uuid("b35feb4b-1833-59f8-b146-4627813af189")) __declspec(novtable) IObservableVector<Windows::UI::WebUI::Core::IWebUICommandBarElement> : impl_IObservableVector<Windows::UI::WebUI::Core::IWebUICommandBarElement> {};
#endif

#ifndef WINRT_GENERIC_42997479_cbf2_5a79_9560_dd7e7c413af4
#define WINRT_GENERIC_42997479_cbf2_5a79_9560_dd7e7c413af4
template <> struct __declspec(uuid("42997479-cbf2-5a79-9560-dd7e7c413af4")) __declspec(novtable) VectorChangedEventHandler<Windows::UI::WebUI::Core::IWebUICommandBarElement> : impl_VectorChangedEventHandler<Windows::UI::WebUI::Core::IWebUICommandBarElement> {};
#endif

#ifndef WINRT_GENERIC_b6224973_c1a6_5601_b000_b5e078746bc5
#define WINRT_GENERIC_b6224973_c1a6_5601_b000_b5e078746bc5
template <> struct __declspec(uuid("b6224973-c1a6-5601-b000-b5e078746bc5")) __declspec(novtable) IIterator<Windows::UI::WebUI::Core::IWebUICommandBarElement> : impl_IIterator<Windows::UI::WebUI::Core::IWebUICommandBarElement> {};
#endif

#ifndef WINRT_GENERIC_3cb21e0d_b293_5112_bccc_6e92b6321d2f
#define WINRT_GENERIC_3cb21e0d_b293_5112_bccc_6e92b6321d2f
template <> struct __declspec(uuid("3cb21e0d-b293-5112-bccc-6e92b6321d2f")) __declspec(novtable) IIterable<Windows::UI::WebUI::Core::IWebUICommandBarElement> : impl_IIterable<Windows::UI::WebUI::Core::IWebUICommandBarElement> {};
#endif

#ifndef WINRT_GENERIC_ba62c01a_2cb5_5916_a2c5_d2289e16b2b2
#define WINRT_GENERIC_ba62c01a_2cb5_5916_a2c5_d2289e16b2b2
template <> struct __declspec(uuid("ba62c01a-2cb5-5916-a2c5-d2289e16b2b2")) __declspec(novtable) IVectorView<Windows::UI::WebUI::Core::IWebUICommandBarElement> : impl_IVectorView<Windows::UI::WebUI::Core::IWebUICommandBarElement> {};
#endif

#ifndef WINRT_GENERIC_4a89cee1_56c5_5e02_ba8f_52b436b71377
#define WINRT_GENERIC_4a89cee1_56c5_5e02_ba8f_52b436b71377
template <> struct __declspec(uuid("4a89cee1-56c5-5e02-ba8f-52b436b71377")) __declspec(novtable) IVector<Windows::UI::WebUI::Core::IWebUICommandBarElement> : impl_IVector<Windows::UI::WebUI::Core::IWebUICommandBarElement> {};
#endif


}

namespace Windows::UI::WebUI::Core {

template <typename D>
struct WINRT_EBO impl_IWebUICommandBar
{
    bool Visible() const;
    void Visible(bool value) const;
    double Opacity() const;
    void Opacity(double value) const;
    Windows::UI::Color ForegroundColor() const;
    void ForegroundColor(const Windows::UI::Color & value) const;
    Windows::UI::Color BackgroundColor() const;
    void BackgroundColor(const Windows::UI::Color & value) const;
    Windows::UI::WebUI::Core::WebUICommandBarClosedDisplayMode ClosedDisplayMode() const;
    void ClosedDisplayMode(Windows::UI::WebUI::Core::WebUICommandBarClosedDisplayMode value) const;
    bool IsOpen() const;
    void IsOpen(bool value) const;
    Windows::Foundation::Size Size() const;
    Windows::Foundation::Collections::IObservableVector<Windows::UI::WebUI::Core::IWebUICommandBarElement> PrimaryCommands() const;
    Windows::Foundation::Collections::IObservableVector<Windows::UI::WebUI::Core::IWebUICommandBarElement> SecondaryCommands() const;
    event_token MenuOpened(const Windows::UI::WebUI::Core::MenuOpenedEventHandler & handler) const;
    using MenuOpened_revoker = event_revoker<IWebUICommandBar>;
    MenuOpened_revoker MenuOpened(auto_revoke_t, const Windows::UI::WebUI::Core::MenuOpenedEventHandler & handler) const;
    void MenuOpened(event_token value) const;
    event_token MenuClosed(const Windows::UI::WebUI::Core::MenuClosedEventHandler & handler) const;
    using MenuClosed_revoker = event_revoker<IWebUICommandBar>;
    MenuClosed_revoker MenuClosed(auto_revoke_t, const Windows::UI::WebUI::Core::MenuClosedEventHandler & handler) const;
    void MenuClosed(event_token value) const;
    event_token SizeChanged(const Windows::UI::WebUI::Core::SizeChangedEventHandler & handler) const;
    using SizeChanged_revoker = event_revoker<IWebUICommandBar>;
    SizeChanged_revoker SizeChanged(auto_revoke_t, const Windows::UI::WebUI::Core::SizeChangedEventHandler & handler) const;
    void SizeChanged(event_token value) const;
};

template <typename D>
struct WINRT_EBO impl_IWebUICommandBarBitmapIcon
{
    Windows::Foundation::Uri Uri() const;
    void Uri(const Windows::Foundation::Uri & value) const;
};

template <typename D>
struct WINRT_EBO impl_IWebUICommandBarBitmapIconFactory
{
    Windows::UI::WebUI::Core::WebUICommandBarBitmapIcon Create(const Windows::Foundation::Uri & uri) const;
};

template <typename D>
struct WINRT_EBO impl_IWebUICommandBarConfirmationButton
{
    hstring Text() const;
    void Text(hstring_ref value) const;
    event_token ItemInvoked(const Windows::Foundation::TypedEventHandler<Windows::UI::WebUI::Core::WebUICommandBarConfirmationButton, Windows::UI::WebUI::Core::WebUICommandBarItemInvokedEventArgs> & handler) const;
    using ItemInvoked_revoker = event_revoker<IWebUICommandBarConfirmationButton>;
    ItemInvoked_revoker ItemInvoked(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::WebUI::Core::WebUICommandBarConfirmationButton, Windows::UI::WebUI::Core::WebUICommandBarItemInvokedEventArgs> & handler) const;
    void ItemInvoked(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IWebUICommandBarElement
{
};

template <typename D>
struct WINRT_EBO impl_IWebUICommandBarIcon
{
};

template <typename D>
struct WINRT_EBO impl_IWebUICommandBarIconButton
{
    bool Enabled() const;
    void Enabled(bool value) const;
    hstring Label() const;
    void Label(hstring_ref value) const;
    bool IsToggleButton() const;
    void IsToggleButton(bool value) const;
    bool IsChecked() const;
    void IsChecked(bool value) const;
    Windows::UI::WebUI::Core::IWebUICommandBarIcon Icon() const;
    void Icon(const Windows::UI::WebUI::Core::IWebUICommandBarIcon & value) const;
    event_token ItemInvoked(const Windows::Foundation::TypedEventHandler<Windows::UI::WebUI::Core::WebUICommandBarIconButton, Windows::UI::WebUI::Core::WebUICommandBarItemInvokedEventArgs> & handler) const;
    using ItemInvoked_revoker = event_revoker<IWebUICommandBarIconButton>;
    ItemInvoked_revoker ItemInvoked(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::WebUI::Core::WebUICommandBarIconButton, Windows::UI::WebUI::Core::WebUICommandBarItemInvokedEventArgs> & handler) const;
    void ItemInvoked(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IWebUICommandBarItemInvokedEventArgs
{
    bool IsPrimaryCommand() const;
};

template <typename D>
struct WINRT_EBO impl_IWebUICommandBarSizeChangedEventArgs
{
    Windows::Foundation::Size Size() const;
};

template <typename D>
struct WINRT_EBO impl_IWebUICommandBarStatics
{
    Windows::UI::WebUI::Core::WebUICommandBar GetForCurrentView() const;
};

template <typename D>
struct WINRT_EBO impl_IWebUICommandBarSymbolIcon
{
    hstring Symbol() const;
    void Symbol(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IWebUICommandBarSymbolIconFactory
{
    Windows::UI::WebUI::Core::WebUICommandBarSymbolIcon Create(hstring_ref symbol) const;
};

struct MenuClosedEventHandler : Windows::IUnknown
{
    MenuClosedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<MenuClosedEventHandler>(m_ptr); }
    template <typename L> MenuClosedEventHandler(L lambda);
    template <typename F> MenuClosedEventHandler (F * function);
    template <typename O, typename M> MenuClosedEventHandler(O * object, M method);
    void operator()() const;
};

struct MenuOpenedEventHandler : Windows::IUnknown
{
    MenuOpenedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<MenuOpenedEventHandler>(m_ptr); }
    template <typename L> MenuOpenedEventHandler(L lambda);
    template <typename F> MenuOpenedEventHandler (F * function);
    template <typename O, typename M> MenuOpenedEventHandler(O * object, M method);
    void operator()() const;
};

struct SizeChangedEventHandler : Windows::IUnknown
{
    SizeChangedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<SizeChangedEventHandler>(m_ptr); }
    template <typename L> SizeChangedEventHandler(L lambda);
    template <typename F> SizeChangedEventHandler (F * function);
    template <typename O, typename M> SizeChangedEventHandler(O * object, M method);
    void operator()(const Windows::UI::WebUI::Core::WebUICommandBarSizeChangedEventArgs & eventArgs) const;
};

struct IWebUICommandBar :
    Windows::IInspectable,
    impl::consume<IWebUICommandBar>
{
    IWebUICommandBar(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBar>(m_ptr); }
};

struct IWebUICommandBarBitmapIcon :
    Windows::IInspectable,
    impl::consume<IWebUICommandBarBitmapIcon>,
    impl::require<IWebUICommandBarBitmapIcon, Windows::UI::WebUI::Core::IWebUICommandBarIcon>
{
    IWebUICommandBarBitmapIcon(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBarBitmapIcon>(m_ptr); }
};

struct IWebUICommandBarBitmapIconFactory :
    Windows::IInspectable,
    impl::consume<IWebUICommandBarBitmapIconFactory>
{
    IWebUICommandBarBitmapIconFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBarBitmapIconFactory>(m_ptr); }
};

struct IWebUICommandBarConfirmationButton :
    Windows::IInspectable,
    impl::consume<IWebUICommandBarConfirmationButton>,
    impl::require<IWebUICommandBarConfirmationButton, Windows::UI::WebUI::Core::IWebUICommandBarElement>
{
    IWebUICommandBarConfirmationButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBarConfirmationButton>(m_ptr); }
};

struct IWebUICommandBarElement :
    Windows::IInspectable,
    impl::consume<IWebUICommandBarElement>
{
    IWebUICommandBarElement(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBarElement>(m_ptr); }
};

struct IWebUICommandBarIcon :
    Windows::IInspectable,
    impl::consume<IWebUICommandBarIcon>
{
    IWebUICommandBarIcon(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBarIcon>(m_ptr); }
};

struct IWebUICommandBarIconButton :
    Windows::IInspectable,
    impl::consume<IWebUICommandBarIconButton>,
    impl::require<IWebUICommandBarIconButton, Windows::UI::WebUI::Core::IWebUICommandBarElement>
{
    IWebUICommandBarIconButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBarIconButton>(m_ptr); }
};

struct IWebUICommandBarItemInvokedEventArgs :
    Windows::IInspectable,
    impl::consume<IWebUICommandBarItemInvokedEventArgs>
{
    IWebUICommandBarItemInvokedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBarItemInvokedEventArgs>(m_ptr); }
};

struct IWebUICommandBarSizeChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IWebUICommandBarSizeChangedEventArgs>
{
    IWebUICommandBarSizeChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBarSizeChangedEventArgs>(m_ptr); }
};

struct IWebUICommandBarStatics :
    Windows::IInspectable,
    impl::consume<IWebUICommandBarStatics>
{
    IWebUICommandBarStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBarStatics>(m_ptr); }
};

struct IWebUICommandBarSymbolIcon :
    Windows::IInspectable,
    impl::consume<IWebUICommandBarSymbolIcon>,
    impl::require<IWebUICommandBarSymbolIcon, Windows::UI::WebUI::Core::IWebUICommandBarIcon>
{
    IWebUICommandBarSymbolIcon(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBarSymbolIcon>(m_ptr); }
};

struct IWebUICommandBarSymbolIconFactory :
    Windows::IInspectable,
    impl::consume<IWebUICommandBarSymbolIconFactory>
{
    IWebUICommandBarSymbolIconFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebUICommandBarSymbolIconFactory>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Gaming.Input.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.System.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Gaming.Input.ForceFeedback.3.h"
#include "internal/Windows.Gaming.Input.3.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Gaming::Input::IArcadeStick> : produce_base<D, Windows::Gaming::Input::IArcadeStick>
{
    HRESULT __stdcall abi_GetButtonLabel(Windows::Gaming::Input::ArcadeStickButtons button, Windows::Gaming::Input::GameControllerButtonLabel * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetButtonLabel(button));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetCurrentReading(abi_arg_out<Windows::Gaming::Input::ArcadeStickReading> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetCurrentReading());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::IArcadeStickStatics> : produce_base<D, Windows::Gaming::Input::IArcadeStickStatics>
{
    HRESULT __stdcall add_ArcadeStickAdded(abi_arg_in<Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick>> value, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().ArcadeStickAdded(*reinterpret_cast<const Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick> *>(&value)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_ArcadeStickAdded(event_token token) noexcept override
    {
        try
        {
            this->shim().ArcadeStickAdded(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_ArcadeStickRemoved(abi_arg_in<Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick>> value, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().ArcadeStickRemoved(*reinterpret_cast<const Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick> *>(&value)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_ArcadeStickRemoved(event_token token) noexcept override
    {
        try
        {
            this->shim().ArcadeStickRemoved(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ArcadeSticks(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::ArcadeStick>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ArcadeSticks());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::IGameController> : produce_base<D, Windows::Gaming::Input::IGameController>
{
    HRESULT __stdcall add_HeadsetConnected(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::Gaming::Input::Headset>> value, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().HeadsetConnected(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::Gaming::Input::Headset> *>(&value)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_HeadsetConnected(event_token token) noexcept override
    {
        try
        {
            this->shim().HeadsetConnected(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_HeadsetDisconnected(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::Gaming::Input::Headset>> value, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().HeadsetDisconnected(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::Gaming::Input::Headset> *>(&value)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_HeadsetDisconnected(event_token token) noexcept override
    {
        try
        {
            this->shim().HeadsetDisconnected(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_UserChanged(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::System::UserChangedEventArgs>> value, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().UserChanged(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::System::UserChangedEventArgs> *>(&value)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_UserChanged(event_token token) noexcept override
    {
        try
        {
            this->shim().UserChanged(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Headset(abi_arg_out<Windows::Gaming::Input::IHeadset> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Headset());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsWireless(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsWireless());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_User(abi_arg_out<Windows::System::IUser> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().User());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::IGamepad> : produce_base<D, Windows::Gaming::Input::IGamepad>
{
    HRESULT __stdcall get_Vibration(abi_arg_out<Windows::Gaming::Input::GamepadVibration> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Vibration());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Vibration(abi_arg_in<Windows::Gaming::Input::GamepadVibration> value) noexcept override
    {
        try
        {
            this->shim().Vibration(*reinterpret_cast<const Windows::Gaming::Input::GamepadVibration *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetCurrentReading(abi_arg_out<Windows::Gaming::Input::GamepadReading> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetCurrentReading());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::IGamepad2> : produce_base<D, Windows::Gaming::Input::IGamepad2>
{
    HRESULT __stdcall abi_GetButtonLabel(Windows::Gaming::Input::GamepadButtons button, Windows::Gaming::Input::GameControllerButtonLabel * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetButtonLabel(button));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::IGamepadStatics> : produce_base<D, Windows::Gaming::Input::IGamepadStatics>
{
    HRESULT __stdcall add_GamepadAdded(abi_arg_in<Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad>> value, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().GamepadAdded(*reinterpret_cast<const Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad> *>(&value)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_GamepadAdded(event_token token) noexcept override
    {
        try
        {
            this->shim().GamepadAdded(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_GamepadRemoved(abi_arg_in<Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad>> value, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().GamepadRemoved(*reinterpret_cast<const Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad> *>(&value)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_GamepadRemoved(event_token token) noexcept override
    {
        try
        {
            this->shim().GamepadRemoved(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Gamepads(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::Gamepad>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Gamepads());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::IHeadset> : produce_base<D, Windows::Gaming::Input::IHeadset>
{
    HRESULT __stdcall get_CaptureDeviceId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CaptureDeviceId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RenderDeviceId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RenderDeviceId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::IRacingWheel> : produce_base<D, Windows::Gaming::Input::IRacingWheel>
{
    HRESULT __stdcall get_HasClutch(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HasClutch());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HasHandbrake(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HasHandbrake());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HasPatternShifter(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HasPatternShifter());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaxPatternShifterGear(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxPatternShifterGear());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaxWheelAngle(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxWheelAngle());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WheelMotor(abi_arg_out<Windows::Gaming::Input::ForceFeedback::IForceFeedbackMotor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WheelMotor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetButtonLabel(Windows::Gaming::Input::RacingWheelButtons button, Windows::Gaming::Input::GameControllerButtonLabel * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetButtonLabel(button));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetCurrentReading(abi_arg_out<Windows::Gaming::Input::RacingWheelReading> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetCurrentReading());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::IRacingWheelStatics> : produce_base<D, Windows::Gaming::Input::IRacingWheelStatics>
{
    HRESULT __stdcall add_RacingWheelAdded(abi_arg_in<Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel>> value, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().RacingWheelAdded(*reinterpret_cast<const Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel> *>(&value)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_RacingWheelAdded(event_token token) noexcept override
    {
        try
        {
            this->shim().RacingWheelAdded(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_RacingWheelRemoved(abi_arg_in<Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel>> value, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().RacingWheelRemoved(*reinterpret_cast<const Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel> *>(&value)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_RacingWheelRemoved(event_token token) noexcept override
    {
        try
        {
            this->shim().RacingWheelRemoved(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RacingWheels(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::RacingWheel>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RacingWheels());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::IUINavigationController> : produce_base<D, Windows::Gaming::Input::IUINavigationController>
{
    HRESULT __stdcall abi_GetCurrentReading(abi_arg_out<Windows::Gaming::Input::UINavigationReading> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetCurrentReading());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetOptionalButtonLabel(Windows::Gaming::Input::OptionalUINavigationButtons button, Windows::Gaming::Input::GameControllerButtonLabel * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetOptionalButtonLabel(button));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetRequiredButtonLabel(Windows::Gaming::Input::RequiredUINavigationButtons button, Windows::Gaming::Input::GameControllerButtonLabel * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetRequiredButtonLabel(button));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::IUINavigationControllerStatics> : produce_base<D, Windows::Gaming::Input::IUINavigationControllerStatics>
{
    HRESULT __stdcall add_UINavigationControllerAdded(abi_arg_in<Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController>> value, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().UINavigationControllerAdded(*reinterpret_cast<const Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController> *>(&value)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_UINavigationControllerAdded(event_token token) noexcept override
    {
        try
        {
            this->shim().UINavigationControllerAdded(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_UINavigationControllerRemoved(abi_arg_in<Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController>> value, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().UINavigationControllerRemoved(*reinterpret_cast<const Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController> *>(&value)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_UINavigationControllerRemoved(event_token token) noexcept override
    {
        try
        {
            this->shim().UINavigationControllerRemoved(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_UINavigationControllers(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::UINavigationController>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UINavigationControllers());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Gaming::Input {

template <typename D> event_token impl_IGameController<D>::HeadsetConnected(const Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::Gaming::Input::Headset> & value) const
{
    event_token token {};
    check_hresult(static_cast<const IGameController &>(static_cast<const D &>(*this))->add_HeadsetConnected(get(value), &token));
    return token;
}

template <typename D> event_revoker<IGameController> impl_IGameController<D>::HeadsetConnected(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::Gaming::Input::Headset> & value) const
{
    return impl::make_event_revoker<D, IGameController>(this, &ABI::Windows::Gaming::Input::IGameController::remove_HeadsetConnected, HeadsetConnected(value));
}

template <typename D> void impl_IGameController<D>::HeadsetConnected(event_token token) const
{
    check_hresult(static_cast<const IGameController &>(static_cast<const D &>(*this))->remove_HeadsetConnected(token));
}

template <typename D> event_token impl_IGameController<D>::HeadsetDisconnected(const Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::Gaming::Input::Headset> & value) const
{
    event_token token {};
    check_hresult(static_cast<const IGameController &>(static_cast<const D &>(*this))->add_HeadsetDisconnected(get(value), &token));
    return token;
}

template <typename D> event_revoker<IGameController> impl_IGameController<D>::HeadsetDisconnected(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::Gaming::Input::Headset> & value) const
{
    return impl::make_event_revoker<D, IGameController>(this, &ABI::Windows::Gaming::Input::IGameController::remove_HeadsetDisconnected, HeadsetDisconnected(value));
}

template <typename D> void impl_IGameController<D>::HeadsetDisconnected(event_token token) const
{
    check_hresult(static_cast<const IGameController &>(static_cast<const D &>(*this))->remove_HeadsetDisconnected(token));
}

template <typename D> event_token impl_IGameController<D>::UserChanged(const Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::System::UserChangedEventArgs> & value) const
{
    event_token token {};
    check_hresult(static_cast<const IGameController &>(static_cast<const D &>(*this))->add_UserChanged(get(value), &token));
    return token;
}

template <typename D> event_revoker<IGameController> impl_IGameController<D>::UserChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Gaming::Input::IGameController, Windows::System::UserChangedEventArgs> & value) const
{
    return impl::make_event_revoker<D, IGameController>(this, &ABI::Windows::Gaming::Input::IGameController::remove_UserChanged, UserChanged(value));
}

template <typename D> void impl_IGameController<D>::UserChanged(event_token token) const
{
    check_hresult(static_cast<const IGameController &>(static_cast<const D &>(*this))->remove_UserChanged(token));
}

template <typename D> Windows::Gaming::Input::Headset impl_IGameController<D>::Headset() const
{
    Windows::Gaming::Input::Headset value { nullptr };
    check_hresult(static_cast<const IGameController &>(static_cast<const D &>(*this))->get_Headset(put(value)));
    return value;
}

template <typename D> bool impl_IGameController<D>::IsWireless() const
{
    bool value {};
    check_hresult(static_cast<const IGameController &>(static_cast<const D &>(*this))->get_IsWireless(&value));
    return value;
}

template <typename D> Windows::System::User impl_IGameController<D>::User() const
{
    Windows::System::User value { nullptr };
    check_hresult(static_cast<const IGameController &>(static_cast<const D &>(*this))->get_User(put(value)));
    return value;
}

template <typename D> Windows::Gaming::Input::GameControllerButtonLabel impl_IArcadeStick<D>::GetButtonLabel(Windows::Gaming::Input::ArcadeStickButtons button) const
{
    Windows::Gaming::Input::GameControllerButtonLabel value {};
    check_hresult(static_cast<const IArcadeStick &>(static_cast<const D &>(*this))->abi_GetButtonLabel(button, &value));
    return value;
}

template <typename D> Windows::Gaming::Input::ArcadeStickReading impl_IArcadeStick<D>::GetCurrentReading() const
{
    Windows::Gaming::Input::ArcadeStickReading value {};
    check_hresult(static_cast<const IArcadeStick &>(static_cast<const D &>(*this))->abi_GetCurrentReading(put(value)));
    return value;
}

template <typename D> event_token impl_IArcadeStickStatics<D>::ArcadeStickAdded(const Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick> & value) const
{
    event_token token {};
    check_hresult(static_cast<const IArcadeStickStatics &>(static_cast<const D &>(*this))->add_ArcadeStickAdded(get(value), &token));
    return token;
}

template <typename D> event_revoker<IArcadeStickStatics> impl_IArcadeStickStatics<D>::ArcadeStickAdded(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick> & value) const
{
    return impl::make_event_revoker<D, IArcadeStickStatics>(this, &ABI::Windows::Gaming::Input::IArcadeStickStatics::remove_ArcadeStickAdded, ArcadeStickAdded(value));
}

template <typename D> void impl_IArcadeStickStatics<D>::ArcadeStickAdded(event_token token) const
{
    check_hresult(static_cast<const IArcadeStickStatics &>(static_cast<const D &>(*this))->remove_ArcadeStickAdded(token));
}

template <typename D> event_token impl_IArcadeStickStatics<D>::ArcadeStickRemoved(const Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick> & value) const
{
    event_token token {};
    check_hresult(static_cast<const IArcadeStickStatics &>(static_cast<const D &>(*this))->add_ArcadeStickRemoved(get(value), &token));
    return token;
}

template <typename D> event_revoker<IArcadeStickStatics> impl_IArcadeStickStatics<D>::ArcadeStickRemoved(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick> & value) const
{
    return impl::make_event_revoker<D, IArcadeStickStatics>(this, &ABI::Windows::Gaming::Input::IArcadeStickStatics::remove_ArcadeStickRemoved, ArcadeStickRemoved(value));
}

template <typename D> void impl_IArcadeStickStatics<D>::ArcadeStickRemoved(event_token token) const
{
    check_hresult(static_cast<const IArcadeStickStatics &>(static_cast<const D &>(*this))->remove_ArcadeStickRemoved(token));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::ArcadeStick> impl_IArcadeStickStatics<D>::ArcadeSticks() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::ArcadeStick> value;
    check_hresult(static_cast<const IArcadeStickStatics &>(static_cast<const D &>(*this))->get_ArcadeSticks(put(value)));
    return value;
}

template <typename D> Windows::Gaming::Input::GamepadVibration impl_IGamepad<D>::Vibration() const
{
    Windows::Gaming::Input::GamepadVibration value {};
    check_hresult(static_cast<const IGamepad &>(static_cast<const D &>(*this))->get_Vibration(put(value)));
    return value;
}

template <typename D> void impl_IGamepad<D>::Vibration(const Windows::Gaming::Input::GamepadVibration & value) const
{
    check_hresult(static_cast<const IGamepad &>(static_cast<const D &>(*this))->put_Vibration(get(value)));
}

template <typename D> Windows::Gaming::Input::GamepadReading impl_IGamepad<D>::GetCurrentReading() const
{
    Windows::Gaming::Input::GamepadReading value {};
    check_hresult(static_cast<const IGamepad &>(static_cast<const D &>(*this))->abi_GetCurrentReading(put(value)));
    return value;
}

template <typename D> Windows::Gaming::Input::GameControllerButtonLabel impl_IGamepad2<D>::GetButtonLabel(Windows::Gaming::Input::GamepadButtons button) const
{
    Windows::Gaming::Input::GameControllerButtonLabel value {};
    check_hresult(static_cast<const IGamepad2 &>(static_cast<const D &>(*this))->abi_GetButtonLabel(button, &value));
    return value;
}

template <typename D> event_token impl_IGamepadStatics<D>::GamepadAdded(const Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad> & value) const
{
    event_token token {};
    check_hresult(static_cast<const IGamepadStatics &>(static_cast<const D &>(*this))->add_GamepadAdded(get(value), &token));
    return token;
}

template <typename D> event_revoker<IGamepadStatics> impl_IGamepadStatics<D>::GamepadAdded(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad> & value) const
{
    return impl::make_event_revoker<D, IGamepadStatics>(this, &ABI::Windows::Gaming::Input::IGamepadStatics::remove_GamepadAdded, GamepadAdded(value));
}

template <typename D> void impl_IGamepadStatics<D>::GamepadAdded(event_token token) const
{
    check_hresult(static_cast<const IGamepadStatics &>(static_cast<const D &>(*this))->remove_GamepadAdded(token));
}

template <typename D> event_token impl_IGamepadStatics<D>::GamepadRemoved(const Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad> & value) const
{
    event_token token {};
    check_hresult(static_cast<const IGamepadStatics &>(static_cast<const D &>(*this))->add_GamepadRemoved(get(value), &token));
    return token;
}

template <typename D> event_revoker<IGamepadStatics> impl_IGamepadStatics<D>::GamepadRemoved(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad> & value) const
{
    return impl::make_event_revoker<D, IGamepadStatics>(this, &ABI::Windows::Gaming::Input::IGamepadStatics::remove_GamepadRemoved, GamepadRemoved(value));
}

template <typename D> void impl_IGamepadStatics<D>::GamepadRemoved(event_token token) const
{
    check_hresult(static_cast<const IGamepadStatics &>(static_cast<const D &>(*this))->remove_GamepadRemoved(token));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::Gamepad> impl_IGamepadStatics<D>::Gamepads() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::Gamepad> value;
    check_hresult(static_cast<const IGamepadStatics &>(static_cast<const D &>(*this))->get_Gamepads(put(value)));
    return value;
}

template <typename D> hstring impl_IHeadset<D>::CaptureDeviceId() const
{
    hstring value;
    check_hresult(static_cast<const IHeadset &>(static_cast<const D &>(*this))->get_CaptureDeviceId(put(value)));
    return value;
}

template <typename D> hstring impl_IHeadset<D>::RenderDeviceId() const
{
    hstring value;
    check_hresult(static_cast<const IHeadset &>(static_cast<const D &>(*this))->get_RenderDeviceId(put(value)));
    return value;
}

template <typename D> bool impl_IRacingWheel<D>::HasClutch() const
{
    bool value {};
    check_hresult(static_cast<const IRacingWheel &>(static_cast<const D &>(*this))->get_HasClutch(&value));
    return value;
}

template <typename D> bool impl_IRacingWheel<D>::HasHandbrake() const
{
    bool value {};
    check_hresult(static_cast<const IRacingWheel &>(static_cast<const D &>(*this))->get_HasHandbrake(&value));
    return value;
}

template <typename D> bool impl_IRacingWheel<D>::HasPatternShifter() const
{
    bool value {};
    check_hresult(static_cast<const IRacingWheel &>(static_cast<const D &>(*this))->get_HasPatternShifter(&value));
    return value;
}

template <typename D> int32_t impl_IRacingWheel<D>::MaxPatternShifterGear() const
{
    int32_t value {};
    check_hresult(static_cast<const IRacingWheel &>(static_cast<const D &>(*this))->get_MaxPatternShifterGear(&value));
    return value;
}

template <typename D> double impl_IRacingWheel<D>::MaxWheelAngle() const
{
    double value {};
    check_hresult(static_cast<const IRacingWheel &>(static_cast<const D &>(*this))->get_MaxWheelAngle(&value));
    return value;
}

template <typename D> Windows::Gaming::Input::ForceFeedback::ForceFeedbackMotor impl_IRacingWheel<D>::WheelMotor() const
{
    Windows::Gaming::Input::ForceFeedback::ForceFeedbackMotor value { nullptr };
    check_hresult(static_cast<const IRacingWheel &>(static_cast<const D &>(*this))->get_WheelMotor(put(value)));
    return value;
}

template <typename D> Windows::Gaming::Input::GameControllerButtonLabel impl_IRacingWheel<D>::GetButtonLabel(Windows::Gaming::Input::RacingWheelButtons button) const
{
    Windows::Gaming::Input::GameControllerButtonLabel value {};
    check_hresult(static_cast<const IRacingWheel &>(static_cast<const D &>(*this))->abi_GetButtonLabel(button, &value));
    return value;
}

template <typename D> Windows::Gaming::Input::RacingWheelReading impl_IRacingWheel<D>::GetCurrentReading() const
{
    Windows::Gaming::Input::RacingWheelReading value {};
    check_hresult(static_cast<const IRacingWheel &>(static_cast<const D &>(*this))->abi_GetCurrentReading(put(value)));
    return value;
}

template <typename D> event_token impl_IRacingWheelStatics<D>::RacingWheelAdded(const Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel> & value) const
{
    event_token token {};
    check_hresult(static_cast<const IRacingWheelStatics &>(static_cast<const D &>(*this))->add_RacingWheelAdded(get(value), &token));
    return token;
}

template <typename D> event_revoker<IRacingWheelStatics> impl_IRacingWheelStatics<D>::RacingWheelAdded(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel> & value) const
{
    return impl::make_event_revoker<D, IRacingWheelStatics>(this, &ABI::Windows::Gaming::Input::IRacingWheelStatics::remove_RacingWheelAdded, RacingWheelAdded(value));
}

template <typename D> void impl_IRacingWheelStatics<D>::RacingWheelAdded(event_token token) const
{
    check_hresult(static_cast<const IRacingWheelStatics &>(static_cast<const D &>(*this))->remove_RacingWheelAdded(token));
}

template <typename D> event_token impl_IRacingWheelStatics<D>::RacingWheelRemoved(const Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel> & value) const
{
    event_token token {};
    check_hresult(static_cast<const IRacingWheelStatics &>(static_cast<const D &>(*this))->add_RacingWheelRemoved(get(value), &token));
    return token;
}

template <typename D> event_revoker<IRacingWheelStatics> impl_IRacingWheelStatics<D>::RacingWheelRemoved(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel> & value) const
{
    return impl::make_event_revoker<D, IRacingWheelStatics>(this, &ABI::Windows::Gaming::Input::IRacingWheelStatics::remove_RacingWheelRemoved, RacingWheelRemoved(value));
}

template <typename D> void impl_IRacingWheelStatics<D>::RacingWheelRemoved(event_token token) const
{
    check_hresult(static_cast<const IRacingWheelStatics &>(static_cast<const D &>(*this))->remove_RacingWheelRemoved(token));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::RacingWheel> impl_IRacingWheelStatics<D>::RacingWheels() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::RacingWheel> value;
    check_hresult(static_cast<const IRacingWheelStatics &>(static_cast<const D &>(*this))->get_RacingWheels(put(value)));
    return value;
}

template <typename D> Windows::Gaming::Input::UINavigationReading impl_IUINavigationController<D>::GetCurrentReading() const
{
    Windows::Gaming::Input::UINavigationReading value {};
    check_hresult(static_cast<const IUINavigationController &>(static_cast<const D &>(*this))->abi_GetCurrentReading(put(value)));
    return value;
}

template <typename D> Windows::Gaming::Input::GameControllerButtonLabel impl_IUINavigationController<D>::GetOptionalButtonLabel(Windows::Gaming::Input::OptionalUINavigationButtons button) const
{
    Windows::Gaming::Input::GameControllerButtonLabel value {};
    check_hresult(static_cast<const IUINavigationController &>(static_cast<const D &>(*this))->abi_GetOptionalButtonLabel(button, &value));
    return value;
}

template <typename D> Windows::Gaming::Input::GameControllerButtonLabel impl_IUINavigationController<D>::GetRequiredButtonLabel(Windows::Gaming::Input::RequiredUINavigationButtons button) const
{
    Windows::Gaming::Input::GameControllerButtonLabel value {};
    check_hresult(static_cast<const IUINavigationController &>(static_cast<const D &>(*this))->abi_GetRequiredButtonLabel(button, &value));
    return value;
}

template <typename D> event_token impl_IUINavigationControllerStatics<D>::UINavigationControllerAdded(const Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController> & value) const
{
    event_token token {};
    check_hresult(static_cast<const IUINavigationControllerStatics &>(static_cast<const D &>(*this))->add_UINavigationControllerAdded(get(value), &token));
    return token;
}

template <typename D> event_revoker<IUINavigationControllerStatics> impl_IUINavigationControllerStatics<D>::UINavigationControllerAdded(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController> & value) const
{
    return impl::make_event_revoker<D, IUINavigationControllerStatics>(this, &ABI::Windows::Gaming::Input::IUINavigationControllerStatics::remove_UINavigationControllerAdded, UINavigationControllerAdded(value));
}

template <typename D> void impl_IUINavigationControllerStatics<D>::UINavigationControllerAdded(event_token token) const
{
    check_hresult(static_cast<const IUINavigationControllerStatics &>(static_cast<const D &>(*this))->remove_UINavigationControllerAdded(token));
}

template <typename D> event_token impl_IUINavigationControllerStatics<D>::UINavigationControllerRemoved(const Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController> & value) const
{
    event_token token {};
    check_hresult(static_cast<const IUINavigationControllerStatics &>(static_cast<const D &>(*this))->add_UINavigationControllerRemoved(get(value), &token));
    return token;
}

template <typename D> event_revoker<IUINavigationControllerStatics> impl_IUINavigationControllerStatics<D>::UINavigationControllerRemoved(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController> & value) const
{
    return impl::make_event_revoker<D, IUINavigationControllerStatics>(this, &ABI::Windows::Gaming::Input::IUINavigationControllerStatics::remove_UINavigationControllerRemoved, UINavigationControllerRemoved(value));
}

template <typename D> void impl_IUINavigationControllerStatics<D>::UINavigationControllerRemoved(event_token token) const
{
    check_hresult(static_cast<const IUINavigationControllerStatics &>(static_cast<const D &>(*this))->remove_UINavigationControllerRemoved(token));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::UINavigationController> impl_IUINavigationControllerStatics<D>::UINavigationControllers() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::UINavigationController> value;
    check_hresult(static_cast<const IUINavigationControllerStatics &>(static_cast<const D &>(*this))->get_UINavigationControllers(put(value)));
    return value;
}

inline event_token ArcadeStick::ArcadeStickAdded(const Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick> & value)
{
    return get_activation_factory<ArcadeStick, IArcadeStickStatics>().ArcadeStickAdded(value);
}

inline factory_event_revoker<IArcadeStickStatics> ArcadeStick::ArcadeStickAdded(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick> & value)
{
    auto factory = get_activation_factory<ArcadeStick, IArcadeStickStatics>();
    return { factory, &ABI::Windows::Gaming::Input::IArcadeStickStatics::remove_ArcadeStickAdded, factory.ArcadeStickAdded(value) };
}

inline void ArcadeStick::ArcadeStickAdded(event_token token)
{
    get_activation_factory<ArcadeStick, IArcadeStickStatics>().ArcadeStickAdded(token);
}

inline event_token ArcadeStick::ArcadeStickRemoved(const Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick> & value)
{
    return get_activation_factory<ArcadeStick, IArcadeStickStatics>().ArcadeStickRemoved(value);
}

inline factory_event_revoker<IArcadeStickStatics> ArcadeStick::ArcadeStickRemoved(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::ArcadeStick> & value)
{
    auto factory = get_activation_factory<ArcadeStick, IArcadeStickStatics>();
    return { factory, &ABI::Windows::Gaming::Input::IArcadeStickStatics::remove_ArcadeStickRemoved, factory.ArcadeStickRemoved(value) };
}

inline void ArcadeStick::ArcadeStickRemoved(event_token token)
{
    get_activation_factory<ArcadeStick, IArcadeStickStatics>().ArcadeStickRemoved(token);
}

inline Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::ArcadeStick> ArcadeStick::ArcadeSticks()
{
    return get_activation_factory<ArcadeStick, IArcadeStickStatics>().ArcadeSticks();
}

inline event_token Gamepad::GamepadAdded(const Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad> & value)
{
    return get_activation_factory<Gamepad, IGamepadStatics>().GamepadAdded(value);
}

inline factory_event_revoker<IGamepadStatics> Gamepad::GamepadAdded(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad> & value)
{
    auto factory = get_activation_factory<Gamepad, IGamepadStatics>();
    return { factory, &ABI::Windows::Gaming::Input::IGamepadStatics::remove_GamepadAdded, factory.GamepadAdded(value) };
}

inline void Gamepad::GamepadAdded(event_token token)
{
    get_activation_factory<Gamepad, IGamepadStatics>().GamepadAdded(token);
}

inline event_token Gamepad::GamepadRemoved(const Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad> & value)
{
    return get_activation_factory<Gamepad, IGamepadStatics>().GamepadRemoved(value);
}

inline factory_event_revoker<IGamepadStatics> Gamepad::GamepadRemoved(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::Gamepad> & value)
{
    auto factory = get_activation_factory<Gamepad, IGamepadStatics>();
    return { factory, &ABI::Windows::Gaming::Input::IGamepadStatics::remove_GamepadRemoved, factory.GamepadRemoved(value) };
}

inline void Gamepad::GamepadRemoved(event_token token)
{
    get_activation_factory<Gamepad, IGamepadStatics>().GamepadRemoved(token);
}

inline Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::Gamepad> Gamepad::Gamepads()
{
    return get_activation_factory<Gamepad, IGamepadStatics>().Gamepads();
}

inline event_token RacingWheel::RacingWheelAdded(const Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel> & value)
{
    return get_activation_factory<RacingWheel, IRacingWheelStatics>().RacingWheelAdded(value);
}

inline factory_event_revoker<IRacingWheelStatics> RacingWheel::RacingWheelAdded(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel> & value)
{
    auto factory = get_activation_factory<RacingWheel, IRacingWheelStatics>();
    return { factory, &ABI::Windows::Gaming::Input::IRacingWheelStatics::remove_RacingWheelAdded, factory.RacingWheelAdded(value) };
}

inline void RacingWheel::RacingWheelAdded(event_token token)
{
    get_activation_factory<RacingWheel, IRacingWheelStatics>().RacingWheelAdded(token);
}

inline event_token RacingWheel::RacingWheelRemoved(const Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel> & value)
{
    return get_activation_factory<RacingWheel, IRacingWheelStatics>().RacingWheelRemoved(value);
}

inline factory_event_revoker<IRacingWheelStatics> RacingWheel::RacingWheelRemoved(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::RacingWheel> & value)
{
    auto factory = get_activation_factory<RacingWheel, IRacingWheelStatics>();
    return { factory, &ABI::Windows::Gaming::Input::IRacingWheelStatics::remove_RacingWheelRemoved, factory.RacingWheelRemoved(value) };
}

inline void RacingWheel::RacingWheelRemoved(event_token token)
{
    get_activation_factory<RacingWheel, IRacingWheelStatics>().RacingWheelRemoved(token);
}

inline Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::RacingWheel> RacingWheel::RacingWheels()
{
    return get_activation_factory<RacingWheel, IRacingWheelStatics>().RacingWheels();
}

inline event_token UINavigationController::UINavigationControllerAdded(const Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController> & value)
{
    return get_activation_factory<UINavigationController, IUINavigationControllerStatics>().UINavigationControllerAdded(value);
}

inline factory_event_revoker<IUINavigationControllerStatics> UINavigationController::UINavigationControllerAdded(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController> & value)
{
    auto factory = get_activation_factory<UINavigationController, IUINavigationControllerStatics>();
    return { factory, &ABI::Windows::Gaming::Input::IUINavigationControllerStatics::remove_UINavigationControllerAdded, factory.UINavigationControllerAdded(value) };
}

inline void UINavigationController::UINavigationControllerAdded(event_token token)
{
    get_activation_factory<UINavigationController, IUINavigationControllerStatics>().UINavigationControllerAdded(token);
}

inline event_token UINavigationController::UINavigationControllerRemoved(const Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController> & value)
{
    return get_activation_factory<UINavigationController, IUINavigationControllerStatics>().UINavigationControllerRemoved(value);
}

inline factory_event_revoker<IUINavigationControllerStatics> UINavigationController::UINavigationControllerRemoved(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::Gaming::Input::UINavigationController> & value)
{
    auto factory = get_activation_factory<UINavigationController, IUINavigationControllerStatics>();
    return { factory, &ABI::Windows::Gaming::Input::IUINavigationControllerStatics::remove_UINavigationControllerRemoved, factory.UINavigationControllerRemoved(value) };
}

inline void UINavigationController::UINavigationControllerRemoved(event_token token)
{
    get_activation_factory<UINavigationController, IUINavigationControllerStatics>().UINavigationControllerRemoved(token);
}

inline Windows::Foundation::Collections::IVectorView<Windows::Gaming::Input::UINavigationController> UINavigationController::UINavigationControllers()
{
    return get_activation_factory<UINavigationController, IUINavigationControllerStatics>().UINavigationControllers();
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.UserDataAccounts.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.ApplicationModel.UserDataAccounts.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_3e1fe603_f897_5263_b328_0806426b8a79
#define WINRT_GENERIC_3e1fe603_f897_5263_b328_0806426b8a79
template <> struct __declspec(uuid("3e1fe603-f897-5263-b328-0806426b8a79")) __declspec(novtable) IAsyncOperation<hstring> : impl_IAsyncOperation<hstring> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_98b9acc1_4b56_532e_ac73_03d5291cca90
#define WINRT_GENERIC_98b9acc1_4b56_532e_ac73_03d5291cca90
template <> struct __declspec(uuid("98b9acc1-4b56-532e-ac73-03d5291cca90")) __declspec(novtable) IVector<hstring> : impl_IVector<hstring> {};
#endif

#ifndef WINRT_GENERIC_774512d3_a564_5f8d_b104_3ec8f2a1104f
#define WINRT_GENERIC_774512d3_a564_5f8d_b104_3ec8f2a1104f
template <> struct __declspec(uuid("774512d3-a564-5f8d-b104-3ec8f2a1104f")) __declspec(novtable) IVectorView<Windows::ApplicationModel::Appointments::AppointmentCalendar> : impl_IVectorView<Windows::ApplicationModel::Appointments::AppointmentCalendar> {};
#endif

#ifndef WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
#define WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
template <> struct __declspec(uuid("2f13c006-a03a-5f69-b090-75a43e33423e")) __declspec(novtable) IVectorView<hstring> : impl_IVectorView<hstring> {};
#endif

#ifndef WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
#define WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
template <> struct __declspec(uuid("e2fcc7c1-3bfc-5a0b-b2b0-72e769d1cb7e")) __declspec(novtable) IIterable<hstring> : impl_IIterable<hstring> {};
#endif

#ifndef WINRT_GENERIC_3bf71d9d_2037_5e08_a7e1_b937cf74bbd9
#define WINRT_GENERIC_3bf71d9d_2037_5e08_a7e1_b937cf74bbd9
template <> struct __declspec(uuid("3bf71d9d-2037-5e08-a7e1-b937cf74bbd9")) __declspec(novtable) IVectorView<Windows::ApplicationModel::Contacts::ContactAnnotationList> : impl_IVectorView<Windows::ApplicationModel::Contacts::ContactAnnotationList> {};
#endif

#ifndef WINRT_GENERIC_a55c7dcf_e3c9_5afa_8667_ca68230d7724
#define WINRT_GENERIC_a55c7dcf_e3c9_5afa_8667_ca68230d7724
template <> struct __declspec(uuid("a55c7dcf-e3c9-5afa-8667-ca68230d7724")) __declspec(novtable) IVectorView<Windows::ApplicationModel::Contacts::ContactList> : impl_IVectorView<Windows::ApplicationModel::Contacts::ContactList> {};
#endif

#ifndef WINRT_GENERIC_d4816e16_43c9_5b63_a444_6189acb56f6e
#define WINRT_GENERIC_d4816e16_43c9_5b63_a444_6189acb56f6e
template <> struct __declspec(uuid("d4816e16-43c9-5b63-a444-6189acb56f6e")) __declspec(novtable) IVectorView<Windows::ApplicationModel::Email::EmailMailbox> : impl_IVectorView<Windows::ApplicationModel::Email::EmailMailbox> {};
#endif

#ifndef WINRT_GENERIC_65f4f73e_3271_5999_93d8_5a3d78be13a6
#define WINRT_GENERIC_65f4f73e_3271_5999_93d8_5a3d78be13a6
template <> struct __declspec(uuid("65f4f73e-3271-5999-93d8-5a3d78be13a6")) __declspec(novtable) IVectorView<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> : impl_IVectorView<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_f0aeb2af_a69b_5caa_a283_32e697a65d31
#define WINRT_GENERIC_f0aeb2af_a69b_5caa_a283_32e697a65d31
template <> struct __declspec(uuid("f0aeb2af-a69b-5caa-a283-32e697a65d31")) __declspec(novtable) IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> : impl_IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> {};
#endif

#ifndef WINRT_GENERIC_7b27aec8_0690_5063_beb0_d9e2eb1a1201
#define WINRT_GENERIC_7b27aec8_0690_5063_beb0_d9e2eb1a1201
template <> struct __declspec(uuid("7b27aec8-0690-5063-beb0-d9e2eb1a1201")) __declspec(novtable) TypedEventHandler<Windows::ApplicationModel::UserDataAccounts::UserDataAccountStore, Windows::ApplicationModel::UserDataAccounts::UserDataAccountStoreChangedEventArgs> : impl_TypedEventHandler<Windows::ApplicationModel::UserDataAccounts::UserDataAccountStore, Windows::ApplicationModel::UserDataAccounts::UserDataAccountStoreChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_06b68f1e_9937_5296_a55e_d43dd8a7545c
#define WINRT_GENERIC_06b68f1e_9937_5296_a55e_d43dd8a7545c
template <> struct __declspec(uuid("06b68f1e-9937-5296-a55e-d43dd8a7545c")) __declspec(novtable) IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::UserDataAccountStore> : impl_IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::UserDataAccountStore> {};
#endif

#ifndef WINRT_GENERIC_b79a741f_7fb5_50ae_9e99_911201ec3d41
#define WINRT_GENERIC_b79a741f_7fb5_50ae_9e99_911201ec3d41
template <> struct __declspec(uuid("b79a741f-7fb5-50ae-9e99-911201ec3d41")) __declspec(novtable) AsyncOperationCompletedHandler<hstring> : impl_AsyncOperationCompletedHandler<hstring> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
#define WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
template <> struct __declspec(uuid("8c304ebb-6615-50a4-8829-879ecd443236")) __declspec(novtable) IIterator<hstring> : impl_IIterator<hstring> {};
#endif

#ifndef WINRT_GENERIC_f40a879d_b6b7_5f92_beb1_6a8e7ce54120
#define WINRT_GENERIC_f40a879d_b6b7_5f92_beb1_6a8e7ce54120
template <> struct __declspec(uuid("f40a879d-b6b7-5f92-beb1-6a8e7ce54120")) __declspec(novtable) IIterator<Windows::ApplicationModel::Appointments::AppointmentCalendar> : impl_IIterator<Windows::ApplicationModel::Appointments::AppointmentCalendar> {};
#endif

#ifndef WINRT_GENERIC_d3fb010b_b692_5130_9d16_2cfdabcb6dec
#define WINRT_GENERIC_d3fb010b_b692_5130_9d16_2cfdabcb6dec
template <> struct __declspec(uuid("d3fb010b-b692-5130-9d16-2cfdabcb6dec")) __declspec(novtable) IIterable<Windows::ApplicationModel::Appointments::AppointmentCalendar> : impl_IIterable<Windows::ApplicationModel::Appointments::AppointmentCalendar> {};
#endif

#ifndef WINRT_GENERIC_3d7b4ad2_bb54_5e21_a92e_6b80264ccc50
#define WINRT_GENERIC_3d7b4ad2_bb54_5e21_a92e_6b80264ccc50
template <> struct __declspec(uuid("3d7b4ad2-bb54-5e21-a92e-6b80264ccc50")) __declspec(novtable) IIterator<Windows::ApplicationModel::Contacts::ContactAnnotationList> : impl_IIterator<Windows::ApplicationModel::Contacts::ContactAnnotationList> {};
#endif

#ifndef WINRT_GENERIC_ae095a89_8b8b_5b8a_8f28_555aa490ad87
#define WINRT_GENERIC_ae095a89_8b8b_5b8a_8f28_555aa490ad87
template <> struct __declspec(uuid("ae095a89-8b8b-5b8a-8f28-555aa490ad87")) __declspec(novtable) IIterable<Windows::ApplicationModel::Contacts::ContactAnnotationList> : impl_IIterable<Windows::ApplicationModel::Contacts::ContactAnnotationList> {};
#endif

#ifndef WINRT_GENERIC_ee69382d_887d_5964_83b4_47ee9ded6f05
#define WINRT_GENERIC_ee69382d_887d_5964_83b4_47ee9ded6f05
template <> struct __declspec(uuid("ee69382d-887d-5964-83b4-47ee9ded6f05")) __declspec(novtable) IIterator<Windows::ApplicationModel::Contacts::ContactList> : impl_IIterator<Windows::ApplicationModel::Contacts::ContactList> {};
#endif

#ifndef WINRT_GENERIC_f9b0782c_bfe9_564e_bca2_97235fd64463
#define WINRT_GENERIC_f9b0782c_bfe9_564e_bca2_97235fd64463
template <> struct __declspec(uuid("f9b0782c-bfe9-564e-bca2-97235fd64463")) __declspec(novtable) IIterable<Windows::ApplicationModel::Contacts::ContactList> : impl_IIterable<Windows::ApplicationModel::Contacts::ContactList> {};
#endif

#ifndef WINRT_GENERIC_312f8d4a_0e85_566e_b7aa_dbd40a0343ff
#define WINRT_GENERIC_312f8d4a_0e85_566e_b7aa_dbd40a0343ff
template <> struct __declspec(uuid("312f8d4a-0e85-566e-b7aa-dbd40a0343ff")) __declspec(novtable) IIterator<Windows::ApplicationModel::Email::EmailMailbox> : impl_IIterator<Windows::ApplicationModel::Email::EmailMailbox> {};
#endif

#ifndef WINRT_GENERIC_8fc76b2e_f800_5f1d_a023_de47e5f306e0
#define WINRT_GENERIC_8fc76b2e_f800_5f1d_a023_de47e5f306e0
template <> struct __declspec(uuid("8fc76b2e-f800-5f1d-a023-de47e5f306e0")) __declspec(novtable) IIterable<Windows::ApplicationModel::Email::EmailMailbox> : impl_IIterable<Windows::ApplicationModel::Email::EmailMailbox> {};
#endif

#ifndef WINRT_GENERIC_e38246ab_df01_5d16_923a_17c88cdbac29
#define WINRT_GENERIC_e38246ab_df01_5d16_923a_17c88cdbac29
template <> struct __declspec(uuid("e38246ab-df01-5d16-923a-17c88cdbac29")) __declspec(novtable) IIterator<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> : impl_IIterator<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> {};
#endif

#ifndef WINRT_GENERIC_1bc7f1ff_26b4_5440_9629_cb4cd8c87987
#define WINRT_GENERIC_1bc7f1ff_26b4_5440_9629_cb4cd8c87987
template <> struct __declspec(uuid("1bc7f1ff-26b4-5440-9629-cb4cd8c87987")) __declspec(novtable) IIterable<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> : impl_IIterable<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_ab92e426_2ac6_5ffb_88ca_cbdd91df3927
#define WINRT_GENERIC_ab92e426_2ac6_5ffb_88ca_cbdd91df3927
template <> struct __declspec(uuid("ab92e426-2ac6-5ffb-88ca-cbdd91df3927")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> : impl_AsyncOperationCompletedHandler<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> {};
#endif

#ifndef WINRT_GENERIC_264c2ca9_29b4_5035_b460_8c8d0e8fbcd9
#define WINRT_GENERIC_264c2ca9_29b4_5035_b460_8c8d0e8fbcd9
template <> struct __declspec(uuid("264c2ca9-29b4-5035-b460-8c8d0e8fbcd9")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::ApplicationModel::UserDataAccounts::UserDataAccountStore> : impl_AsyncOperationCompletedHandler<Windows::ApplicationModel::UserDataAccounts::UserDataAccountStore> {};
#endif

#ifndef WINRT_GENERIC_d26021ac_99b4_5c40_b0d2_d6835d2e9202
#define WINRT_GENERIC_d26021ac_99b4_5c40_b0d2_d6835d2e9202
template <> struct __declspec(uuid("d26021ac-99b4-5c40-b0d2-d6835d2e9202")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Appointments::AppointmentCalendar>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Appointments::AppointmentCalendar>> {};
#endif

#ifndef WINRT_GENERIC_a549e2bf_9e24_5352_923d_ff184f96acbb
#define WINRT_GENERIC_a549e2bf_9e24_5352_923d_ff184f96acbb
template <> struct __declspec(uuid("a549e2bf-9e24-5352-923d-ff184f96acbb")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactAnnotationList>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactAnnotationList>> {};
#endif

#ifndef WINRT_GENERIC_79fd4783_5cc9_571b_bc42_e2e2f8ddf967
#define WINRT_GENERIC_79fd4783_5cc9_571b_bc42_e2e2f8ddf967
template <> struct __declspec(uuid("79fd4783-5cc9-571b-bc42-e2e2f8ddf967")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactList>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactList>> {};
#endif

#ifndef WINRT_GENERIC_5bed07ec_f5d5_5b25_b067_9b22a4a762ea
#define WINRT_GENERIC_5bed07ec_f5d5_5b25_b067_9b22a4a762ea
template <> struct __declspec(uuid("5bed07ec-f5d5-5b25-b067-9b22a4a762ea")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Email::EmailMailbox>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Email::EmailMailbox>> {};
#endif

#ifndef WINRT_GENERIC_8461a475_5f2f_5a03_b9f8_01e1324def3b
#define WINRT_GENERIC_8461a475_5f2f_5a03_b9f8_01e1324def3b
template <> struct __declspec(uuid("8461a475-5f2f-5a03-b9f8-01e1324def3b")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::UserDataAccounts::UserDataAccount>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::UserDataAccounts::UserDataAccount>> {};
#endif

#ifndef WINRT_GENERIC_f478469b_9777_553d_beab_1bb5eee1ca8b
#define WINRT_GENERIC_f478469b_9777_553d_beab_1bb5eee1ca8b
template <> struct __declspec(uuid("f478469b-9777-553d-beab-1bb5eee1ca8b")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Appointments::AppointmentCalendar>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Appointments::AppointmentCalendar>> {};
#endif

#ifndef WINRT_GENERIC_dd802265_ec6f_5573_a09e_02b1f18a8a51
#define WINRT_GENERIC_dd802265_ec6f_5573_a09e_02b1f18a8a51
template <> struct __declspec(uuid("dd802265-ec6f-5573-a09e-02b1f18a8a51")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactAnnotationList>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactAnnotationList>> {};
#endif

#ifndef WINRT_GENERIC_eaafaa0f_472b_5cb1_ad7a_ad9fd505e2c5
#define WINRT_GENERIC_eaafaa0f_472b_5cb1_ad7a_ad9fd505e2c5
template <> struct __declspec(uuid("eaafaa0f-472b-5cb1-ad7a-ad9fd505e2c5")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactList>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactList>> {};
#endif

#ifndef WINRT_GENERIC_478ddb6a_e122_5832_8263_f3d90a1f5377
#define WINRT_GENERIC_478ddb6a_e122_5832_8263_f3d90a1f5377
template <> struct __declspec(uuid("478ddb6a-e122-5832-8263-f3d90a1f5377")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Email::EmailMailbox>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Email::EmailMailbox>> {};
#endif

#ifndef WINRT_GENERIC_dc12096d_7e54_54a2_ab99_280f30f0ff81
#define WINRT_GENERIC_dc12096d_7e54_54a2_ab99_280f30f0ff81
template <> struct __declspec(uuid("dc12096d-7e54-54a2-ab99-280f30f0ff81")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::UserDataAccounts::UserDataAccount>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::UserDataAccounts::UserDataAccount>> {};
#endif


}

namespace Windows::ApplicationModel::UserDataAccounts {

template <typename D>
struct WINRT_EBO impl_IUserDataAccount
{
    hstring Id() const;
    hstring UserDisplayName() const;
    void UserDisplayName(hstring_ref value) const;
    Windows::ApplicationModel::UserDataAccounts::UserDataAccountOtherAppReadAccess OtherAppReadAccess() const;
    void OtherAppReadAccess(Windows::ApplicationModel::UserDataAccounts::UserDataAccountOtherAppReadAccess value) const;
    Windows::Storage::Streams::IRandomAccessStreamReference Icon() const;
    hstring DeviceAccountTypeId() const;
    hstring PackageFamilyName() const;
    Windows::Foundation::IAsyncAction SaveAsync() const;
    Windows::Foundation::IAsyncAction DeleteAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Appointments::AppointmentCalendar>> FindAppointmentCalendarsAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Email::EmailMailbox>> FindEmailMailboxesAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactList>> FindContactListsAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactAnnotationList>> FindContactAnnotationListsAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IUserDataAccount2
{
    hstring EnterpriseId() const;
    bool IsProtectedUnderLock() const;
};

template <typename D>
struct WINRT_EBO impl_IUserDataAccount3
{
    Windows::Foundation::Collections::IVector<hstring> ExplictReadAccessPackageFamilyNames() const;
    hstring DisplayName() const;
    void DisplayName(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IUserDataAccountManagerForUser
{
    Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::UserDataAccountStore> RequestStoreAsync(Windows::ApplicationModel::UserDataAccounts::UserDataAccountStoreAccessType storeAccessType) const;
    Windows::System::User User() const;
};

template <typename D>
struct WINRT_EBO impl_IUserDataAccountManagerStatics
{
    Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::UserDataAccountStore> RequestStoreAsync(Windows::ApplicationModel::UserDataAccounts::UserDataAccountStoreAccessType storeAccessType) const;
    Windows::Foundation::IAsyncOperation<hstring> ShowAddAccountAsync(Windows::ApplicationModel::UserDataAccounts::UserDataAccountContentKinds contentKinds) const;
    Windows::Foundation::IAsyncAction ShowAccountSettingsAsync(hstring_ref id) const;
    Windows::Foundation::IAsyncAction ShowAccountErrorResolverAsync(hstring_ref id) const;
};

template <typename D>
struct WINRT_EBO impl_IUserDataAccountManagerStatics2
{
    Windows::ApplicationModel::UserDataAccounts::UserDataAccountManagerForUser GetForUser(const Windows::System::User & user) const;
};

template <typename D>
struct WINRT_EBO impl_IUserDataAccountStore
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::UserDataAccounts::UserDataAccount>> FindAccountsAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> GetAccountAsync(hstring_ref id) const;
    Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> CreateAccountAsync(hstring_ref userDisplayName) const;
};

template <typename D>
struct WINRT_EBO impl_IUserDataAccountStore2
{
    Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::UserDataAccounts::UserDataAccount> CreateAccountAsync(hstring_ref userDisplayName, hstring_ref packageRelativeAppId) const;
    event_token StoreChanged(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::UserDataAccounts::UserDataAccountStore, Windows::ApplicationModel::UserDataAccounts::UserDataAccountStoreChangedEventArgs> & handler) const;
    using StoreChanged_revoker = event_revoker<IUserDataAccountStore2>;
    StoreChanged_revoker StoreChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::UserDataAccounts::UserDataAccountStore, Windows::ApplicationModel::UserDataAccounts::UserDataAccountStoreChangedEventArgs> & handler) const;
    void StoreChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IUserDataAccountStoreChangedEventArgs
{
    Windows::Foundation::Deferral GetDeferral() const;
};

struct IUserDataAccount :
    Windows::IInspectable,
    impl::consume<IUserDataAccount>
{
    IUserDataAccount(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserDataAccount>(m_ptr); }
};

struct IUserDataAccount2 :
    Windows::IInspectable,
    impl::consume<IUserDataAccount2>,
    impl::require<IUserDataAccount2, Windows::ApplicationModel::UserDataAccounts::IUserDataAccount>
{
    IUserDataAccount2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserDataAccount2>(m_ptr); }
};

struct IUserDataAccount3 :
    Windows::IInspectable,
    impl::consume<IUserDataAccount3>
{
    IUserDataAccount3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserDataAccount3>(m_ptr); }
};

struct IUserDataAccountManagerForUser :
    Windows::IInspectable,
    impl::consume<IUserDataAccountManagerForUser>
{
    IUserDataAccountManagerForUser(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserDataAccountManagerForUser>(m_ptr); }
};

struct IUserDataAccountManagerStatics :
    Windows::IInspectable,
    impl::consume<IUserDataAccountManagerStatics>
{
    IUserDataAccountManagerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserDataAccountManagerStatics>(m_ptr); }
};

struct IUserDataAccountManagerStatics2 :
    Windows::IInspectable,
    impl::consume<IUserDataAccountManagerStatics2>
{
    IUserDataAccountManagerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserDataAccountManagerStatics2>(m_ptr); }
};

struct IUserDataAccountStore :
    Windows::IInspectable,
    impl::consume<IUserDataAccountStore>
{
    IUserDataAccountStore(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserDataAccountStore>(m_ptr); }
};

struct IUserDataAccountStore2 :
    Windows::IInspectable,
    impl::consume<IUserDataAccountStore2>,
    impl::require<IUserDataAccountStore2, Windows::ApplicationModel::UserDataAccounts::IUserDataAccountStore>
{
    IUserDataAccountStore2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserDataAccountStore2>(m_ptr); }
    using impl_IUserDataAccountStore::CreateAccountAsync;
    using impl_IUserDataAccountStore2::CreateAccountAsync;
};

struct IUserDataAccountStoreChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IUserDataAccountStoreChangedEventArgs>
{
    IUserDataAccountStoreChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserDataAccountStoreChangedEventArgs>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.ApplicationModel.Search.Core.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Storage.Streams.3.h"
#include "internal/Windows.ApplicationModel.Search.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.ApplicationModel.Search.Core.3.h"
#include "Windows.ApplicationModel.Search.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::ApplicationModel::Search::Core::IRequestingFocusOnKeyboardInputEventArgs> : produce_base<D, Windows::ApplicationModel::Search::Core::IRequestingFocusOnKeyboardInputEventArgs>
{};

template <typename D>
struct produce<D, Windows::ApplicationModel::Search::Core::ISearchSuggestion> : produce_base<D, Windows::ApplicationModel::Search::Core::ISearchSuggestion>
{
    HRESULT __stdcall get_Kind(Windows::ApplicationModel::Search::Core::SearchSuggestionKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Kind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Text(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Text());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Tag(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Tag());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DetailText(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DetailText());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Image(abi_arg_out<Windows::Storage::Streams::IRandomAccessStreamReference> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Image());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ImageAlternateText(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ImageAlternateText());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Search::Core::ISearchSuggestionManager> : produce_base<D, Windows::ApplicationModel::Search::Core::ISearchSuggestionManager>
{
    HRESULT __stdcall get_SearchHistoryEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SearchHistoryEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SearchHistoryEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().SearchHistoryEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SearchHistoryContext(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SearchHistoryContext());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SearchHistoryContext(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().SearchHistoryContext(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetLocalContentSuggestionSettings(abi_arg_in<Windows::ApplicationModel::Search::ILocalContentSuggestionSettings> settings) noexcept override
    {
        try
        {
            this->shim().SetLocalContentSuggestionSettings(*reinterpret_cast<const Windows::ApplicationModel::Search::LocalContentSuggestionSettings *>(&settings));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetQuery(abi_arg_in<hstring> queryText) noexcept override
    {
        try
        {
            this->shim().SetQuery(*reinterpret_cast<const hstring *>(&queryText));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetQueryWithLanguage(abi_arg_in<hstring> queryText, abi_arg_in<hstring> language) noexcept override
    {
        try
        {
            this->shim().SetQuery(*reinterpret_cast<const hstring *>(&queryText), *reinterpret_cast<const hstring *>(&language));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetQueryWithSearchQueryLinguisticDetails(abi_arg_in<hstring> queryText, abi_arg_in<hstring> language, abi_arg_in<Windows::ApplicationModel::Search::ISearchQueryLinguisticDetails> linguisticDetails) noexcept override
    {
        try
        {
            this->shim().SetQuery(*reinterpret_cast<const hstring *>(&queryText), *reinterpret_cast<const hstring *>(&language), *reinterpret_cast<const Windows::ApplicationModel::Search::SearchQueryLinguisticDetails *>(&linguisticDetails));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Suggestions(abi_arg_out<Windows::Foundation::Collections::IObservableVector<Windows::ApplicationModel::Search::Core::SearchSuggestion>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Suggestions());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddToHistory(abi_arg_in<hstring> queryText) noexcept override
    {
        try
        {
            this->shim().AddToHistory(*reinterpret_cast<const hstring *>(&queryText));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddToHistoryWithLanguage(abi_arg_in<hstring> queryText, abi_arg_in<hstring> language) noexcept override
    {
        try
        {
            this->shim().AddToHistory(*reinterpret_cast<const hstring *>(&queryText), *reinterpret_cast<const hstring *>(&language));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ClearHistory() noexcept override
    {
        try
        {
            this->shim().ClearHistory();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_SuggestionsRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Search::Core::SearchSuggestionManager, Windows::ApplicationModel::Search::Core::SearchSuggestionsRequestedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().SuggestionsRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Search::Core::SearchSuggestionManager, Windows::ApplicationModel::Search::Core::SearchSuggestionsRequestedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_SuggestionsRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().SuggestionsRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_RequestingFocusOnKeyboardInput(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Search::Core::SearchSuggestionManager, Windows::ApplicationModel::Search::Core::RequestingFocusOnKeyboardInputEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().RequestingFocusOnKeyboardInput(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Search::Core::SearchSuggestionManager, Windows::ApplicationModel::Search::Core::RequestingFocusOnKeyboardInputEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_RequestingFocusOnKeyboardInput(event_token token) noexcept override
    {
        try
        {
            this->shim().RequestingFocusOnKeyboardInput(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Search::Core::ISearchSuggestionsRequestedEventArgs> : produce_base<D, Windows::ApplicationModel::Search::Core::ISearchSuggestionsRequestedEventArgs>
{
    HRESULT __stdcall get_QueryText(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().QueryText());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Language(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Language());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LinguisticDetails(abi_arg_out<Windows::ApplicationModel::Search::ISearchQueryLinguisticDetails> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LinguisticDetails());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Search::ISearchSuggestionsRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::ApplicationModel::Search::Core {

template <typename D> Windows::ApplicationModel::Search::Core::SearchSuggestionKind impl_ISearchSuggestion<D>::Kind() const
{
    Windows::ApplicationModel::Search::Core::SearchSuggestionKind value {};
    check_hresult(static_cast<const ISearchSuggestion &>(static_cast<const D &>(*this))->get_Kind(&value));
    return value;
}

template <typename D> hstring impl_ISearchSuggestion<D>::Text() const
{
    hstring value;
    check_hresult(static_cast<const ISearchSuggestion &>(static_cast<const D &>(*this))->get_Text(put(value)));
    return value;
}

template <typename D> hstring impl_ISearchSuggestion<D>::Tag() const
{
    hstring value;
    check_hresult(static_cast<const ISearchSuggestion &>(static_cast<const D &>(*this))->get_Tag(put(value)));
    return value;
}

template <typename D> hstring impl_ISearchSuggestion<D>::DetailText() const
{
    hstring value;
    check_hresult(static_cast<const ISearchSuggestion &>(static_cast<const D &>(*this))->get_DetailText(put(value)));
    return value;
}

template <typename D> Windows::Storage::Streams::IRandomAccessStreamReference impl_ISearchSuggestion<D>::Image() const
{
    Windows::Storage::Streams::IRandomAccessStreamReference value;
    check_hresult(static_cast<const ISearchSuggestion &>(static_cast<const D &>(*this))->get_Image(put(value)));
    return value;
}

template <typename D> hstring impl_ISearchSuggestion<D>::ImageAlternateText() const
{
    hstring value;
    check_hresult(static_cast<const ISearchSuggestion &>(static_cast<const D &>(*this))->get_ImageAlternateText(put(value)));
    return value;
}

template <typename D> hstring impl_ISearchSuggestionsRequestedEventArgs<D>::QueryText() const
{
    hstring value;
    check_hresult(static_cast<const ISearchSuggestionsRequestedEventArgs &>(static_cast<const D &>(*this))->get_QueryText(put(value)));
    return value;
}

template <typename D> hstring impl_ISearchSuggestionsRequestedEventArgs<D>::Language() const
{
    hstring value;
    check_hresult(static_cast<const ISearchSuggestionsRequestedEventArgs &>(static_cast<const D &>(*this))->get_Language(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Search::SearchQueryLinguisticDetails impl_ISearchSuggestionsRequestedEventArgs<D>::LinguisticDetails() const
{
    Windows::ApplicationModel::Search::SearchQueryLinguisticDetails value { nullptr };
    check_hresult(static_cast<const ISearchSuggestionsRequestedEventArgs &>(static_cast<const D &>(*this))->get_LinguisticDetails(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Search::SearchSuggestionsRequest impl_ISearchSuggestionsRequestedEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Search::SearchSuggestionsRequest value { nullptr };
    check_hresult(static_cast<const ISearchSuggestionsRequestedEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> bool impl_ISearchSuggestionManager<D>::SearchHistoryEnabled() const
{
    bool value {};
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->get_SearchHistoryEnabled(&value));
    return value;
}

template <typename D> void impl_ISearchSuggestionManager<D>::SearchHistoryEnabled(bool value) const
{
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->put_SearchHistoryEnabled(value));
}

template <typename D> hstring impl_ISearchSuggestionManager<D>::SearchHistoryContext() const
{
    hstring value;
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->get_SearchHistoryContext(put(value)));
    return value;
}

template <typename D> void impl_ISearchSuggestionManager<D>::SearchHistoryContext(hstring_ref value) const
{
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->put_SearchHistoryContext(get(value)));
}

template <typename D> void impl_ISearchSuggestionManager<D>::SetLocalContentSuggestionSettings(const Windows::ApplicationModel::Search::LocalContentSuggestionSettings & settings) const
{
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->abi_SetLocalContentSuggestionSettings(get(settings)));
}

template <typename D> void impl_ISearchSuggestionManager<D>::SetQuery(hstring_ref queryText) const
{
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->abi_SetQuery(get(queryText)));
}

template <typename D> void impl_ISearchSuggestionManager<D>::SetQuery(hstring_ref queryText, hstring_ref language) const
{
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->abi_SetQueryWithLanguage(get(queryText), get(language)));
}

template <typename D> void impl_ISearchSuggestionManager<D>::SetQuery(hstring_ref queryText, hstring_ref language, const Windows::ApplicationModel::Search::SearchQueryLinguisticDetails & linguisticDetails) const
{
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->abi_SetQueryWithSearchQueryLinguisticDetails(get(queryText), get(language), get(linguisticDetails)));
}

template <typename D> Windows::Foundation::Collections::IObservableVector<Windows::ApplicationModel::Search::Core::SearchSuggestion> impl_ISearchSuggestionManager<D>::Suggestions() const
{
    Windows::Foundation::Collections::IObservableVector<Windows::ApplicationModel::Search::Core::SearchSuggestion> value;
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->get_Suggestions(put(value)));
    return value;
}

template <typename D> void impl_ISearchSuggestionManager<D>::AddToHistory(hstring_ref queryText) const
{
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->abi_AddToHistory(get(queryText)));
}

template <typename D> void impl_ISearchSuggestionManager<D>::AddToHistory(hstring_ref queryText, hstring_ref language) const
{
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->abi_AddToHistoryWithLanguage(get(queryText), get(language)));
}

template <typename D> void impl_ISearchSuggestionManager<D>::ClearHistory() const
{
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->abi_ClearHistory());
}

template <typename D> event_token impl_ISearchSuggestionManager<D>::SuggestionsRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Search::Core::SearchSuggestionManager, Windows::ApplicationModel::Search::Core::SearchSuggestionsRequestedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->add_SuggestionsRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ISearchSuggestionManager> impl_ISearchSuggestionManager<D>::SuggestionsRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Search::Core::SearchSuggestionManager, Windows::ApplicationModel::Search::Core::SearchSuggestionsRequestedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, ISearchSuggestionManager>(this, &ABI::Windows::ApplicationModel::Search::Core::ISearchSuggestionManager::remove_SuggestionsRequested, SuggestionsRequested(handler));
}

template <typename D> void impl_ISearchSuggestionManager<D>::SuggestionsRequested(event_token token) const
{
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->remove_SuggestionsRequested(token));
}

template <typename D> event_token impl_ISearchSuggestionManager<D>::RequestingFocusOnKeyboardInput(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Search::Core::SearchSuggestionManager, Windows::ApplicationModel::Search::Core::RequestingFocusOnKeyboardInputEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->add_RequestingFocusOnKeyboardInput(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ISearchSuggestionManager> impl_ISearchSuggestionManager<D>::RequestingFocusOnKeyboardInput(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Search::Core::SearchSuggestionManager, Windows::ApplicationModel::Search::Core::RequestingFocusOnKeyboardInputEventArgs> & handler) const
{
    return impl::make_event_revoker<D, ISearchSuggestionManager>(this, &ABI::Windows::ApplicationModel::Search::Core::ISearchSuggestionManager::remove_RequestingFocusOnKeyboardInput, RequestingFocusOnKeyboardInput(handler));
}

template <typename D> void impl_ISearchSuggestionManager<D>::RequestingFocusOnKeyboardInput(event_token token) const
{
    check_hresult(static_cast<const ISearchSuggestionManager &>(static_cast<const D &>(*this))->remove_RequestingFocusOnKeyboardInput(token));
}

inline SearchSuggestionManager::SearchSuggestionManager() :
    SearchSuggestionManager(activate_instance<SearchSuggestionManager>())
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Contacts.DataProvider.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.ApplicationModel.Contacts.DataProvider.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_bb9f410f_a739_5280_9bb7_b6a938c7a620
#define WINRT_GENERIC_bb9f410f_a739_5280_9bb7_b6a938c7a620
template <> struct __declspec(uuid("bb9f410f-a739-5280-9bb7-b6a938c7a620")) __declspec(novtable) TypedEventHandler<Windows::ApplicationModel::Contacts::DataProvider::ContactDataProviderConnection, Windows::ApplicationModel::Contacts::DataProvider::ContactListSyncManagerSyncRequestEventArgs> : impl_TypedEventHandler<Windows::ApplicationModel::Contacts::DataProvider::ContactDataProviderConnection, Windows::ApplicationModel::Contacts::DataProvider::ContactListSyncManagerSyncRequestEventArgs> {};
#endif

#ifndef WINRT_GENERIC_baee1b2f_a5b6_5a03_ae59_fb18f3e025b7
#define WINRT_GENERIC_baee1b2f_a5b6_5a03_ae59_fb18f3e025b7
template <> struct __declspec(uuid("baee1b2f-a5b6-5a03-ae59-fb18f3e025b7")) __declspec(novtable) TypedEventHandler<Windows::ApplicationModel::Contacts::DataProvider::ContactDataProviderConnection, Windows::ApplicationModel::Contacts::DataProvider::ContactListServerSearchReadBatchRequestEventArgs> : impl_TypedEventHandler<Windows::ApplicationModel::Contacts::DataProvider::ContactDataProviderConnection, Windows::ApplicationModel::Contacts::DataProvider::ContactListServerSearchReadBatchRequestEventArgs> {};
#endif


}

namespace Windows::ApplicationModel::Contacts::DataProvider {

template <typename D>
struct WINRT_EBO impl_IContactDataProviderConnection
{
    event_token SyncRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Contacts::DataProvider::ContactDataProviderConnection, Windows::ApplicationModel::Contacts::DataProvider::ContactListSyncManagerSyncRequestEventArgs> & handler) const;
    using SyncRequested_revoker = event_revoker<IContactDataProviderConnection>;
    SyncRequested_revoker SyncRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Contacts::DataProvider::ContactDataProviderConnection, Windows::ApplicationModel::Contacts::DataProvider::ContactListSyncManagerSyncRequestEventArgs> & handler) const;
    void SyncRequested(event_token token) const;
    event_token ServerSearchReadBatchRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Contacts::DataProvider::ContactDataProviderConnection, Windows::ApplicationModel::Contacts::DataProvider::ContactListServerSearchReadBatchRequestEventArgs> & handler) const;
    using ServerSearchReadBatchRequested_revoker = event_revoker<IContactDataProviderConnection>;
    ServerSearchReadBatchRequested_revoker ServerSearchReadBatchRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Contacts::DataProvider::ContactDataProviderConnection, Windows::ApplicationModel::Contacts::DataProvider::ContactListServerSearchReadBatchRequestEventArgs> & handler) const;
    void ServerSearchReadBatchRequested(event_token token) const;
    void Start() const;
};

template <typename D>
struct WINRT_EBO impl_IContactDataProviderTriggerDetails
{
    Windows::ApplicationModel::Contacts::DataProvider::ContactDataProviderConnection Connection() const;
};

template <typename D>
struct WINRT_EBO impl_IContactListServerSearchReadBatchRequest
{
    hstring SessionId() const;
    hstring ContactListId() const;
    Windows::ApplicationModel::Contacts::ContactQueryOptions Options() const;
    uint32_t SuggestedBatchSize() const;
    Windows::Foundation::IAsyncAction SaveContactAsync(const Windows::ApplicationModel::Contacts::Contact & contact) const;
    Windows::Foundation::IAsyncAction ReportCompletedAsync() const;
    Windows::Foundation::IAsyncAction ReportFailedAsync(Windows::ApplicationModel::Contacts::ContactBatchStatus batchStatus) const;
};

template <typename D>
struct WINRT_EBO impl_IContactListServerSearchReadBatchRequestEventArgs
{
    Windows::ApplicationModel::Contacts::DataProvider::ContactListServerSearchReadBatchRequest Request() const;
    Windows::Foundation::Deferral GetDeferral() const;
};

template <typename D>
struct WINRT_EBO impl_IContactListSyncManagerSyncRequest
{
    hstring ContactListId() const;
    Windows::Foundation::IAsyncAction ReportCompletedAsync() const;
    Windows::Foundation::IAsyncAction ReportFailedAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IContactListSyncManagerSyncRequestEventArgs
{
    Windows::ApplicationModel::Contacts::DataProvider::ContactListSyncManagerSyncRequest Request() const;
    Windows::Foundation::Deferral GetDeferral() const;
};

struct IContactDataProviderConnection :
    Windows::IInspectable,
    impl::consume<IContactDataProviderConnection>
{
    IContactDataProviderConnection(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContactDataProviderConnection>(m_ptr); }
};

struct IContactDataProviderTriggerDetails :
    Windows::IInspectable,
    impl::consume<IContactDataProviderTriggerDetails>
{
    IContactDataProviderTriggerDetails(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContactDataProviderTriggerDetails>(m_ptr); }
};

struct IContactListServerSearchReadBatchRequest :
    Windows::IInspectable,
    impl::consume<IContactListServerSearchReadBatchRequest>
{
    IContactListServerSearchReadBatchRequest(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContactListServerSearchReadBatchRequest>(m_ptr); }
};

struct IContactListServerSearchReadBatchRequestEventArgs :
    Windows::IInspectable,
    impl::consume<IContactListServerSearchReadBatchRequestEventArgs>
{
    IContactListServerSearchReadBatchRequestEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContactListServerSearchReadBatchRequestEventArgs>(m_ptr); }
};

struct IContactListSyncManagerSyncRequest :
    Windows::IInspectable,
    impl::consume<IContactListSyncManagerSyncRequest>
{
    IContactListSyncManagerSyncRequest(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContactListSyncManagerSyncRequest>(m_ptr); }
};

struct IContactListSyncManagerSyncRequestEventArgs :
    Windows::IInspectable,
    impl::consume<IContactListSyncManagerSyncRequestEventArgs>
{
    IContactListSyncManagerSyncRequestEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContactListSyncManagerSyncRequestEventArgs>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.WiFi.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Devices.WiFi.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Devices::WiFi {

struct WINRT_EBO WiFiAdapter :
    Windows::Devices::WiFi::IWiFiAdapter
{
    WiFiAdapter(std::nullptr_t) noexcept {}
    static Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::WiFi::WiFiAdapter>> FindAllAdaptersAsync();
    static hstring GetDeviceSelector();
    static Windows::Foundation::IAsyncOperation<Windows::Devices::WiFi::WiFiAdapter> FromIdAsync(hstring_ref deviceId);
    static Windows::Foundation::IAsyncOperation<winrt::Windows::Devices::WiFi::WiFiAccessStatus> RequestAccessAsync();
};

struct WINRT_EBO WiFiAvailableNetwork :
    Windows::Devices::WiFi::IWiFiAvailableNetwork
{
    WiFiAvailableNetwork(std::nullptr_t) noexcept {}
};

struct WINRT_EBO WiFiConnectionResult :
    Windows::Devices::WiFi::IWiFiConnectionResult
{
    WiFiConnectionResult(std::nullptr_t) noexcept {}
};

struct WINRT_EBO WiFiNetworkReport :
    Windows::Devices::WiFi::IWiFiNetworkReport
{
    WiFiNetworkReport(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Documents.4.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace Windows::UI::Xaml::Documents {

template <typename D, typename A = ABI::Windows::UI::Xaml::Documents::ITextElementOverrides>
class ITextElementOverridesT : public A
{
    D & shim() noexcept { return *static_cast<D *>(this); }

public:

    using ITextElementOverrides = winrt::Windows::UI::Xaml::Documents::ITextElementOverrides;

    void OnDisconnectVisualChildren()
    {
        shim().as<ITextElementOverrides>().OnDisconnectVisualChildren();
    }

    HRESULT __stdcall abi_OnDisconnectVisualChildren() noexcept override
    {
        try
        {
            this->shim().OnDisconnectVisualChildren();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Core.AnimationMetrics.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Core::AnimationMetrics {

struct IAnimationDescription;
struct IAnimationDescriptionFactory;
struct IOpacityAnimation;
struct IPropertyAnimation;
struct IScaleAnimation;
struct AnimationDescription;
struct OpacityAnimation;
struct PropertyAnimation;
struct ScaleAnimation;
struct TranslationAnimation;

}

namespace Windows::UI::Core::AnimationMetrics {

struct IAnimationDescription;
struct IAnimationDescriptionFactory;
struct IOpacityAnimation;
struct IPropertyAnimation;
struct IScaleAnimation;
struct AnimationDescription;
struct OpacityAnimation;
struct PropertyAnimation;
struct ScaleAnimation;
struct TranslationAnimation;

}

namespace Windows::UI::Core::AnimationMetrics {

enum class AnimationEffect
{
    Expand = 0,
    Collapse = 1,
    Reposition = 2,
    FadeIn = 3,
    FadeOut = 4,
    AddToList = 5,
    DeleteFromList = 6,
    AddToGrid = 7,
    DeleteFromGrid = 8,
    AddToSearchGrid = 9,
    DeleteFromSearchGrid = 10,
    AddToSearchList = 11,
    DeleteFromSearchList = 12,
    ShowEdgeUI = 13,
    ShowPanel = 14,
    HideEdgeUI = 15,
    HidePanel = 16,
    ShowPopup = 17,
    HidePopup = 18,
    PointerDown = 19,
    PointerUp = 20,
    DragSourceStart = 21,
    DragSourceEnd = 22,
    TransitionContent = 23,
    Reveal = 24,
    Hide = 25,
    DragBetweenEnter = 26,
    DragBetweenLeave = 27,
    SwipeSelect = 28,
    SwipeDeselect = 29,
    SwipeReveal = 30,
    EnterPage = 31,
    TransitionPage = 32,
    CrossFade = 33,
    Peek = 34,
    UpdateBadge = 35,
};

enum class AnimationEffectTarget
{
    Primary = 0,
    Added = 1,
    Affected = 2,
    Background = 3,
    Content = 4,
    Deleted = 5,
    Deselected = 6,
    DragSource = 7,
    Hidden = 8,
    Incoming = 9,
    Outgoing = 10,
    Outline = 11,
    Remaining = 12,
    Revealed = 13,
    RowIn = 14,
    RowOut = 15,
    Selected = 16,
    Selection = 17,
    Shown = 18,
    Tapped = 19,
};

enum class PropertyAnimationType
{
    Scale = 0,
    Translation = 1,
    Opacity = 2,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Data.Html.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Data.Html.1.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Data::Html {

template <typename D>
struct WINRT_EBO impl_IHtmlUtilities
{
    hstring ConvertToText(hstring_ref html) const;
};

struct IHtmlUtilities :
    Windows::IInspectable,
    impl::consume<IHtmlUtilities>
{
    IHtmlUtilities(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHtmlUtilities>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Store.LicenseManagement.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.ApplicationModel.Store.LicenseManagement.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::ApplicationModel::Store::LicenseManagement {

struct LicenseManager
{
    LicenseManager() = delete;
    static Windows::Foundation::IAsyncAction AddLicenseAsync(const Windows::Storage::Streams::IBuffer & license);
    static Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Store::LicenseManagement::LicenseSatisfactionResult> GetSatisfactionInfosAsync(const Windows::Foundation::Collections::IIterable<hstring> & contentIds, const Windows::Foundation::Collections::IIterable<hstring> & keyIds);
};

struct WINRT_EBO LicenseSatisfactionInfo :
    Windows::ApplicationModel::Store::LicenseManagement::ILicenseSatisfactionInfo
{
    LicenseSatisfactionInfo(std::nullptr_t) noexcept {}
};

struct WINRT_EBO LicenseSatisfactionResult :
    Windows::ApplicationModel::Store::LicenseManagement::ILicenseSatisfactionResult
{
    LicenseSatisfactionResult(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Globalization.NumberFormatting.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Globalization.NumberFormatting.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Globalization::NumberFormatting {

struct WINRT_EBO CurrencyFormatter :
    Windows::Globalization::NumberFormatting::ICurrencyFormatter,
    impl::require<CurrencyFormatter, Windows::Globalization::NumberFormatting::ISignificantDigitsOption, Windows::Globalization::NumberFormatting::INumberRounderOption, Windows::Globalization::NumberFormatting::ISignedZeroOption, Windows::Globalization::NumberFormatting::ICurrencyFormatter2>
{
    CurrencyFormatter(std::nullptr_t) noexcept {}
    CurrencyFormatter(hstring_ref currencyCode);
    CurrencyFormatter(hstring_ref currencyCode, const Windows::Foundation::Collections::IIterable<hstring> & languages, hstring_ref geographicRegion);
};

struct WINRT_EBO DecimalFormatter :
    Windows::Globalization::NumberFormatting::INumberFormatter,
    impl::require<DecimalFormatter, Windows::Globalization::NumberFormatting::INumberFormatter2, Windows::Globalization::NumberFormatting::INumberParser, Windows::Globalization::NumberFormatting::INumberFormatterOptions, Windows::Globalization::NumberFormatting::ISignificantDigitsOption, Windows::Globalization::NumberFormatting::INumberRounderOption, Windows::Globalization::NumberFormatting::ISignedZeroOption>
{
    DecimalFormatter(std::nullptr_t) noexcept {}
    DecimalFormatter();
    DecimalFormatter(const Windows::Foundation::Collections::IIterable<hstring> & languages, hstring_ref geographicRegion);
};

struct WINRT_EBO IncrementNumberRounder :
    Windows::Globalization::NumberFormatting::INumberRounder,
    impl::require<IncrementNumberRounder, Windows::Globalization::NumberFormatting::IIncrementNumberRounder>
{
    IncrementNumberRounder(std::nullptr_t) noexcept {}
    IncrementNumberRounder();
};

struct WINRT_EBO NumeralSystemTranslator :
    Windows::Globalization::NumberFormatting::INumeralSystemTranslator
{
    NumeralSystemTranslator(std::nullptr_t) noexcept {}
    NumeralSystemTranslator();
    NumeralSystemTranslator(const Windows::Foundation::Collections::IIterable<hstring> & languages);
};

struct WINRT_EBO PercentFormatter :
    Windows::Globalization::NumberFormatting::INumberFormatter,
    impl::require<PercentFormatter, Windows::Globalization::NumberFormatting::INumberFormatter2, Windows::Globalization::NumberFormatting::INumberParser, Windows::Globalization::NumberFormatting::INumberFormatterOptions, Windows::Globalization::NumberFormatting::ISignificantDigitsOption, Windows::Globalization::NumberFormatting::INumberRounderOption, Windows::Globalization::NumberFormatting::ISignedZeroOption>
{
    PercentFormatter(std::nullptr_t) noexcept {}
    PercentFormatter();
    PercentFormatter(const Windows::Foundation::Collections::IIterable<hstring> & languages, hstring_ref geographicRegion);
};

struct WINRT_EBO PermilleFormatter :
    Windows::Globalization::NumberFormatting::INumberFormatter,
    impl::require<PermilleFormatter, Windows::Globalization::NumberFormatting::INumberFormatter2, Windows::Globalization::NumberFormatting::INumberParser, Windows::Globalization::NumberFormatting::INumberFormatterOptions, Windows::Globalization::NumberFormatting::ISignificantDigitsOption, Windows::Globalization::NumberFormatting::INumberRounderOption, Windows::Globalization::NumberFormatting::ISignedZeroOption>
{
    PermilleFormatter(std::nullptr_t) noexcept {}
    PermilleFormatter();
    PermilleFormatter(const Windows::Foundation::Collections::IIterable<hstring> & languages, hstring_ref geographicRegion);
};

struct WINRT_EBO SignificantDigitsNumberRounder :
    Windows::Globalization::NumberFormatting::INumberRounder,
    impl::require<SignificantDigitsNumberRounder, Windows::Globalization::NumberFormatting::ISignificantDigitsNumberRounder>
{
    SignificantDigitsNumberRounder(std::nullptr_t) noexcept {}
    SignificantDigitsNumberRounder();
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.System.Profile.SystemManufacturers.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.System.Profile.SystemManufacturers.1.h"

WINRT_EXPORT namespace winrt {

namespace Windows::System::Profile::SystemManufacturers {

template <typename D>
struct WINRT_EBO impl_ISmbiosInformationStatics
{
    hstring SerialNumber() const;
};

struct ISmbiosInformationStatics :
    Windows::IInspectable,
    impl::consume<ISmbiosInformationStatics>
{
    ISmbiosInformationStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmbiosInformationStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Sensors.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Devices.Sensors.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Graphics.Display.0.h"
#include "Windows.Foundation.1.h"
#include "Windows.Foundation.Collections.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::Sensors {

struct __declspec(uuid("df184548-2711-4da7-8098-4b82205d3c7d")) __declspec(novtable) IAccelerometer : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentReading(Windows::Devices::Sensors::IAccelerometerReading ** value) = 0;
    virtual HRESULT __stdcall get_MinimumReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ReportInterval(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Accelerometer, Windows::Devices::Sensors::AccelerometerReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
    virtual HRESULT __stdcall add_Shaken(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Accelerometer, Windows::Devices::Sensors::AccelerometerShakenEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_Shaken(event_token token) = 0;
};

struct __declspec(uuid("e8f092ee-4964-401a-b602-220d7153c60a")) __declspec(novtable) IAccelerometer2 : Windows::IInspectable
{
    virtual HRESULT __stdcall put_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations value) = 0;
    virtual HRESULT __stdcall get_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations * value) = 0;
};

struct __declspec(uuid("87e0022a-ed80-49eb-bf8a-a4ea31e5cd84")) __declspec(novtable) IAccelerometer3 : Windows::IInspectable
{
    virtual HRESULT __stdcall put_ReportLatency(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ReportLatency(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_MaxBatchSize(uint32_t * value) = 0;
};

struct __declspec(uuid("1d373c4f-42d3-45b2-8144-ab7fb665eb59")) __declspec(novtable) IAccelerometer4 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ReadingType(winrt::Windows::Devices::Sensors::AccelerometerReadingType * type) = 0;
};

struct __declspec(uuid("7eac64a9-97d5-446d-ab5a-917df9b96a2c")) __declspec(novtable) IAccelerometerDeviceId : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
};

struct __declspec(uuid("b9fe7acb-d351-40af-8bb6-7aa9ae641fb7")) __declspec(novtable) IAccelerometerReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_AccelerationX(double * value) = 0;
    virtual HRESULT __stdcall get_AccelerationY(double * value) = 0;
    virtual HRESULT __stdcall get_AccelerationZ(double * value) = 0;
};

struct __declspec(uuid("0095c65b-b6ac-475a-9f44-8b32d35a3f25")) __declspec(novtable) IAccelerometerReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::IAccelerometerReading ** value) = 0;
};

struct __declspec(uuid("95ff01d1-4a28-4f35-98e8-8178aae4084a")) __declspec(novtable) IAccelerometerShakenEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
};

struct __declspec(uuid("a5e28b74-5a87-4a2d-becc-0f906ea061dd")) __declspec(novtable) IAccelerometerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefault(Windows::Devices::Sensors::IAccelerometer ** result) = 0;
};

struct __declspec(uuid("c4c4842f-d86b-4685-b2d7-3396f798d57b")) __declspec(novtable) IAccelerometerStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefaultWithAccelerometerReadingType(winrt::Windows::Devices::Sensors::AccelerometerReadingType readingType, Windows::Devices::Sensors::IAccelerometer ** result) = 0;
};

struct __declspec(uuid("cd7a630c-fb5f-48eb-b09b-a2708d1c61ef")) __declspec(novtable) IActivitySensor : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentReadingAsync(Windows::Foundation::IAsyncOperation<Windows::Devices::Sensors::ActivitySensorReading> ** result) = 0;
    virtual HRESULT __stdcall get_SubscribedActivities(Windows::Foundation::Collections::IVector<winrt::Windows::Devices::Sensors::ActivityType> ** value) = 0;
    virtual HRESULT __stdcall get_PowerInMilliwatts(double * value) = 0;
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
    virtual HRESULT __stdcall get_SupportedActivities(Windows::Foundation::Collections::IVectorView<winrt::Windows::Devices::Sensors::ActivityType> ** value) = 0;
    virtual HRESULT __stdcall get_MinimumReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::ActivitySensor, Windows::Devices::Sensors::ActivitySensorReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
};

struct __declspec(uuid("85125a96-1472-40a2-b2ae-e1ef29226c78")) __declspec(novtable) IActivitySensorReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_Activity(winrt::Windows::Devices::Sensors::ActivityType * value) = 0;
    virtual HRESULT __stdcall get_Confidence(winrt::Windows::Devices::Sensors::ActivitySensorReadingConfidence * value) = 0;
};

struct __declspec(uuid("4f3c2915-d93b-47bd-960a-f20fb2f322b9")) __declspec(novtable) IActivitySensorReadingChangeReport : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::IActivitySensorReading ** value) = 0;
};

struct __declspec(uuid("de386717-aeb6-4ec7-946a-d9cc19b951ec")) __declspec(novtable) IActivitySensorReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::IActivitySensorReading ** value) = 0;
};

struct __declspec(uuid("a71e0e9d-ee8b-45d1-b25b-08cc0df92ab6")) __declspec(novtable) IActivitySensorStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefaultAsync(Windows::Foundation::IAsyncOperation<Windows::Devices::Sensors::ActivitySensor> ** result) = 0;
    virtual HRESULT __stdcall abi_GetDeviceSelector(hstring * value) = 0;
    virtual HRESULT __stdcall abi_FromIdAsync(hstring deviceId, Windows::Foundation::IAsyncOperation<Windows::Devices::Sensors::ActivitySensor> ** result) = 0;
    virtual HRESULT __stdcall abi_GetSystemHistoryAsync(Windows::Foundation::DateTime fromTime, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ActivitySensorReading>> ** result) = 0;
    virtual HRESULT __stdcall abi_GetSystemHistoryWithDurationAsync(Windows::Foundation::DateTime fromTime, Windows::Foundation::TimeSpan duration, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ActivitySensorReading>> ** result) = 0;
};

struct __declspec(uuid("2c9e6612-b9ca-4677-b263-243297f79d3a")) __declspec(novtable) IActivitySensorTriggerDetails : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ReadReports(Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ActivitySensorReadingChangeReport> ** value) = 0;
};

struct __declspec(uuid("72f057fd-8f04-49f1-b4a7-f4e363b701a2")) __declspec(novtable) IAltimeter : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentReading(Windows::Devices::Sensors::IAltimeterReading ** value) = 0;
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
    virtual HRESULT __stdcall get_MinimumReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ReportInterval(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Altimeter, Windows::Devices::Sensors::AltimeterReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
};

struct __declspec(uuid("fbe8ef73-7f5e-48c8-aa1a-f1f3befc1144")) __declspec(novtable) IAltimeterReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_AltitudeChangeInMeters(double * value) = 0;
};

struct __declspec(uuid("7069d077-446d-47f7-998c-ebc23b45e4a2")) __declspec(novtable) IAltimeterReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::IAltimeterReading ** value) = 0;
};

struct __declspec(uuid("9eb4d7c3-e5ac-47ce-8eef-d3718168c01f")) __declspec(novtable) IAltimeterStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefault(Windows::Devices::Sensors::IAltimeter ** result) = 0;
};

struct __declspec(uuid("934475a8-78bf-452f-b017-f0209ce6dab4")) __declspec(novtable) IBarometer : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentReading(Windows::Devices::Sensors::IBarometerReading ** value) = 0;
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
    virtual HRESULT __stdcall get_MinimumReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ReportInterval(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Barometer, Windows::Devices::Sensors::BarometerReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
};

struct __declspec(uuid("f5b9d2e6-1df6-4a1a-a7ad-321d4f5db247")) __declspec(novtable) IBarometerReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_StationPressureInHectopascals(double * value) = 0;
};

struct __declspec(uuid("3d84945f-037b-404f-9bbb-6232d69543c3")) __declspec(novtable) IBarometerReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::IBarometerReading ** value) = 0;
};

struct __declspec(uuid("286b270a-02e3-4f86-84fc-fdd892b5940f")) __declspec(novtable) IBarometerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefault(Windows::Devices::Sensors::IBarometer ** result) = 0;
};

struct __declspec(uuid("292ffa94-1b45-403c-ba06-b106dba69a64")) __declspec(novtable) ICompass : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentReading(Windows::Devices::Sensors::ICompassReading ** value) = 0;
    virtual HRESULT __stdcall get_MinimumReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ReportInterval(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Compass, Windows::Devices::Sensors::CompassReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
};

struct __declspec(uuid("36f26d09-c7d7-434f-b461-979ddfc2322f")) __declspec(novtable) ICompass2 : Windows::IInspectable
{
    virtual HRESULT __stdcall put_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations value) = 0;
    virtual HRESULT __stdcall get_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations * value) = 0;
};

struct __declspec(uuid("d181ca29-b085-4b1d-870a-4ff57ba74fd4")) __declspec(novtable) ICompassDeviceId : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
};

struct __declspec(uuid("82911128-513d-4dc9-b781-5eedfbf02d0c")) __declspec(novtable) ICompassReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_HeadingMagneticNorth(double * value) = 0;
    virtual HRESULT __stdcall get_HeadingTrueNorth(Windows::Foundation::IReference<double> ** value) = 0;
};

struct __declspec(uuid("8f1549b0-e8bc-4c7e-b009-4e41df137072")) __declspec(novtable) ICompassReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::ICompassReading ** value) = 0;
};

struct __declspec(uuid("e761354e-8911-40f7-9e16-6ecc7daec5de")) __declspec(novtable) ICompassReadingHeadingAccuracy : Windows::IInspectable
{
    virtual HRESULT __stdcall get_HeadingAccuracy(winrt::Windows::Devices::Sensors::MagnetometerAccuracy * value) = 0;
};

struct __declspec(uuid("9abc97df-56ec-4c25-b54d-40a68bb5b269")) __declspec(novtable) ICompassStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefault(Windows::Devices::Sensors::ICompass ** result) = 0;
};

struct __declspec(uuid("fdb9a9c4-84b1-4ca2-9763-9b589506c70c")) __declspec(novtable) IGyrometer : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentReading(Windows::Devices::Sensors::IGyrometerReading ** value) = 0;
    virtual HRESULT __stdcall get_MinimumReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ReportInterval(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Gyrometer, Windows::Devices::Sensors::GyrometerReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
};

struct __declspec(uuid("63df2443-8ce8-41c3-ac44-8698810b557f")) __declspec(novtable) IGyrometer2 : Windows::IInspectable
{
    virtual HRESULT __stdcall put_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations value) = 0;
    virtual HRESULT __stdcall get_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations * value) = 0;
};

struct __declspec(uuid("1ee5e978-89a2-4275-9e95-7126f4708760")) __declspec(novtable) IGyrometerDeviceId : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
};

struct __declspec(uuid("b3d6de5c-1ee4-456f-9de7-e2493b5c8e03")) __declspec(novtable) IGyrometerReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_AngularVelocityX(double * value) = 0;
    virtual HRESULT __stdcall get_AngularVelocityY(double * value) = 0;
    virtual HRESULT __stdcall get_AngularVelocityZ(double * value) = 0;
};

struct __declspec(uuid("0fdf1895-6f9e-42ce-8d58-388c0ab8356d")) __declspec(novtable) IGyrometerReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::IGyrometerReading ** value) = 0;
};

struct __declspec(uuid("83b6e7c9-e49d-4b39-86e6-cd554be4c5c1")) __declspec(novtable) IGyrometerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefault(Windows::Devices::Sensors::IGyrometer ** result) = 0;
};

struct __declspec(uuid("2648ca6f-2286-406f-9161-f0c4bd806ebf")) __declspec(novtable) IInclinometer : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentReading(Windows::Devices::Sensors::IInclinometerReading ** value) = 0;
    virtual HRESULT __stdcall get_MinimumReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ReportInterval(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Inclinometer, Windows::Devices::Sensors::InclinometerReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
};

struct __declspec(uuid("029f3393-28b2-45f8-bb16-61e86a7fae6e")) __declspec(novtable) IInclinometer2 : Windows::IInspectable
{
    virtual HRESULT __stdcall put_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations value) = 0;
    virtual HRESULT __stdcall get_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations * value) = 0;
    virtual HRESULT __stdcall get_ReadingType(winrt::Windows::Devices::Sensors::SensorReadingType * type) = 0;
};

struct __declspec(uuid("01e91982-41ff-4406-ae83-62210ff16fe3")) __declspec(novtable) IInclinometerDeviceId : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
};

struct __declspec(uuid("9f44f055-b6f6-497f-b127-1a775e501458")) __declspec(novtable) IInclinometerReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_PitchDegrees(float * value) = 0;
    virtual HRESULT __stdcall get_RollDegrees(float * value) = 0;
    virtual HRESULT __stdcall get_YawDegrees(float * value) = 0;
};

struct __declspec(uuid("4ae91dc1-e7eb-4938-8511-ae0d6b440438")) __declspec(novtable) IInclinometerReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::IInclinometerReading ** value) = 0;
};

struct __declspec(uuid("b453e880-1fe3-4986-a257-e6ece2723949")) __declspec(novtable) IInclinometerReadingYawAccuracy : Windows::IInspectable
{
    virtual HRESULT __stdcall get_YawAccuracy(winrt::Windows::Devices::Sensors::MagnetometerAccuracy * value) = 0;
};

struct __declspec(uuid("f22ec551-9c30-453a-8b49-3c3eeb33cb61")) __declspec(novtable) IInclinometerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefault(Windows::Devices::Sensors::IInclinometer ** result) = 0;
};

struct __declspec(uuid("043f9775-6a1e-499c-86e0-638c1a864b00")) __declspec(novtable) IInclinometerStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefaultForRelativeReadings(Windows::Devices::Sensors::IInclinometer ** result) = 0;
};

struct __declspec(uuid("bd9a4280-b91a-4829-9392-abc0b6bdf2b4")) __declspec(novtable) IInclinometerStatics3 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefaultWithSensorReadingType(winrt::Windows::Devices::Sensors::SensorReadingType sensorReadingtype, Windows::Devices::Sensors::IInclinometer ** result) = 0;
};

struct __declspec(uuid("f84c0718-0c54-47ae-922e-789f57fb03a0")) __declspec(novtable) ILightSensor : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentReading(Windows::Devices::Sensors::ILightSensorReading ** value) = 0;
    virtual HRESULT __stdcall get_MinimumReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ReportInterval(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::LightSensor, Windows::Devices::Sensors::LightSensorReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
};

struct __declspec(uuid("7fee49f8-0afb-4f51-87f0-6c26375ce94f")) __declspec(novtable) ILightSensorDeviceId : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
};

struct __declspec(uuid("ffdf6300-227c-4d2b-b302-fc0142485c68")) __declspec(novtable) ILightSensorReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_IlluminanceInLux(float * value) = 0;
};

struct __declspec(uuid("a3a2f4cf-258b-420c-b8ab-8edd601ecf50")) __declspec(novtable) ILightSensorReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::ILightSensorReading ** value) = 0;
};

struct __declspec(uuid("45db8c84-c3a8-471e-9a53-6457fad87c0e")) __declspec(novtable) ILightSensorStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefault(Windows::Devices::Sensors::ILightSensor ** result) = 0;
};

struct __declspec(uuid("484f626e-d3c9-4111-b3f6-2cf1faa418d5")) __declspec(novtable) IMagnetometer : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentReading(Windows::Devices::Sensors::IMagnetometerReading ** value) = 0;
    virtual HRESULT __stdcall get_MinimumReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ReportInterval(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Magnetometer, Windows::Devices::Sensors::MagnetometerReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
};

struct __declspec(uuid("b4656c85-26f6-444b-a9e2-a23f966cd368")) __declspec(novtable) IMagnetometer2 : Windows::IInspectable
{
    virtual HRESULT __stdcall put_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations value) = 0;
    virtual HRESULT __stdcall get_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations * value) = 0;
};

struct __declspec(uuid("58b498c2-7e4b-404c-9fc5-5de8b40ebae3")) __declspec(novtable) IMagnetometerDeviceId : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
};

struct __declspec(uuid("0c2cc40d-ebfd-4e5c-bb11-afc29b3cae61")) __declspec(novtable) IMagnetometerReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_MagneticFieldX(float * value) = 0;
    virtual HRESULT __stdcall get_MagneticFieldY(float * value) = 0;
    virtual HRESULT __stdcall get_MagneticFieldZ(float * value) = 0;
    virtual HRESULT __stdcall get_DirectionalAccuracy(winrt::Windows::Devices::Sensors::MagnetometerAccuracy * value) = 0;
};

struct __declspec(uuid("17eae872-2eb9-4ee7-8ad0-3127537d949b")) __declspec(novtable) IMagnetometerReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::IMagnetometerReading ** value) = 0;
};

struct __declspec(uuid("853c64cc-0698-4dda-a6df-9cb9cc4ab40a")) __declspec(novtable) IMagnetometerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefault(Windows::Devices::Sensors::IMagnetometer ** result) = 0;
};

struct __declspec(uuid("5e354635-cf6b-4c63-abd8-10252b0bf6ec")) __declspec(novtable) IOrientationSensor : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentReading(Windows::Devices::Sensors::IOrientationSensorReading ** value) = 0;
    virtual HRESULT __stdcall get_MinimumReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ReportInterval(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::OrientationSensor, Windows::Devices::Sensors::OrientationSensorReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
};

struct __declspec(uuid("0d924cf9-2f1f-49c9-8042-4a1813d67760")) __declspec(novtable) IOrientationSensor2 : Windows::IInspectable
{
    virtual HRESULT __stdcall put_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations value) = 0;
    virtual HRESULT __stdcall get_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations * value) = 0;
    virtual HRESULT __stdcall get_ReadingType(winrt::Windows::Devices::Sensors::SensorReadingType * type) = 0;
};

struct __declspec(uuid("5a69b648-4c29-49ec-b28f-ea1d117b66f0")) __declspec(novtable) IOrientationSensorDeviceId : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
};

struct __declspec(uuid("4756c993-6595-4897-bcc6-d537ee757564")) __declspec(novtable) IOrientationSensorReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_RotationMatrix(Windows::Devices::Sensors::ISensorRotationMatrix ** value) = 0;
    virtual HRESULT __stdcall get_Quaternion(Windows::Devices::Sensors::ISensorQuaternion ** value) = 0;
};

struct __declspec(uuid("012c1186-c3ba-46bc-ae65-7a98996cbfb8")) __declspec(novtable) IOrientationSensorReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::IOrientationSensorReading ** value) = 0;
};

struct __declspec(uuid("d1ac9824-3f5a-49a2-bc7b-1180bc38cd2b")) __declspec(novtable) IOrientationSensorReadingYawAccuracy : Windows::IInspectable
{
    virtual HRESULT __stdcall get_YawAccuracy(winrt::Windows::Devices::Sensors::MagnetometerAccuracy * value) = 0;
};

struct __declspec(uuid("10ef8712-fb4c-428a-898b-2765e409e669")) __declspec(novtable) IOrientationSensorStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefault(Windows::Devices::Sensors::IOrientationSensor ** result) = 0;
};

struct __declspec(uuid("59da0d0b-d40a-4c71-9276-8a272a0a6619")) __declspec(novtable) IOrientationSensorStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefaultForRelativeReadings(Windows::Devices::Sensors::IOrientationSensor ** result) = 0;
};

struct __declspec(uuid("d82ce920-2777-40ff-9f59-d654b085f12f")) __declspec(novtable) IOrientationSensorStatics3 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefaultWithSensorReadingType(winrt::Windows::Devices::Sensors::SensorReadingType sensorReadingtype, Windows::Devices::Sensors::IOrientationSensor ** result) = 0;
    virtual HRESULT __stdcall abi_GetDefaultWithSensorReadingTypeAndSensorOptimizationGoal(winrt::Windows::Devices::Sensors::SensorReadingType sensorReadingType, winrt::Windows::Devices::Sensors::SensorOptimizationGoal optimizationGoal, Windows::Devices::Sensors::IOrientationSensor ** result) = 0;
};

struct __declspec(uuid("9a1e013d-3d98-45f8-8920-8e4ecaca5f97")) __declspec(novtable) IPedometer : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
    virtual HRESULT __stdcall get_PowerInMilliwatts(double * value) = 0;
    virtual HRESULT __stdcall get_MinimumReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ReportInterval(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ReportInterval(uint32_t * value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Pedometer, Windows::Devices::Sensors::PedometerReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
};

struct __declspec(uuid("e5a406df-2b81-4add-b2ff-77ab6c98ba19")) __declspec(novtable) IPedometer2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentReadings(Windows::Foundation::Collections::IMapView<winrt::Windows::Devices::Sensors::PedometerStepKind, Windows::Devices::Sensors::PedometerReading> ** value) = 0;
};

struct __declspec(uuid("cbad8f50-7a54-466b-9010-77a162fca5d7")) __declspec(novtable) IPedometerDataThresholdFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(Windows::Devices::Sensors::IPedometer * sensor, int32_t stepGoal, Windows::Devices::Sensors::ISensorDataThreshold ** threshold) = 0;
};

struct __declspec(uuid("2245dcf4-a8e1-432f-896a-be0dd9b02d24")) __declspec(novtable) IPedometerReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_StepKind(winrt::Windows::Devices::Sensors::PedometerStepKind * value) = 0;
    virtual HRESULT __stdcall get_CumulativeSteps(int32_t * value) = 0;
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_CumulativeStepsDuration(Windows::Foundation::TimeSpan * value) = 0;
};

struct __declspec(uuid("f855e47e-abbc-4456-86a8-25cf2b333742")) __declspec(novtable) IPedometerReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::IPedometerReading ** value) = 0;
};

struct __declspec(uuid("82980a2f-4083-4dfb-b411-938ea0f4b946")) __declspec(novtable) IPedometerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_FromIdAsync(hstring deviceId, Windows::Foundation::IAsyncOperation<Windows::Devices::Sensors::Pedometer> ** operation) = 0;
    virtual HRESULT __stdcall abi_GetDefaultAsync(Windows::Foundation::IAsyncOperation<Windows::Devices::Sensors::Pedometer> ** operation) = 0;
    virtual HRESULT __stdcall abi_GetDeviceSelector(hstring * result) = 0;
    virtual HRESULT __stdcall abi_GetSystemHistoryAsync(Windows::Foundation::DateTime fromTime, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::PedometerReading>> ** operation) = 0;
    virtual HRESULT __stdcall abi_GetSystemHistoryWithDurationAsync(Windows::Foundation::DateTime fromTime, Windows::Foundation::TimeSpan duration, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::PedometerReading>> ** operation) = 0;
};

struct __declspec(uuid("79f5c6bb-ce0e-4133-b47e-8627ea72f677")) __declspec(novtable) IPedometerStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetReadingsFromTriggerDetails(Windows::Devices::Sensors::ISensorDataThresholdTriggerDetails * triggerDetails, Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::PedometerReading> ** result) = 0;
};

struct __declspec(uuid("54c076b8-ecfb-4944-b928-74fc504d47ee")) __declspec(novtable) IProximitySensor : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
    virtual HRESULT __stdcall get_MaxDistanceInMillimeters(Windows::Foundation::IReference<uint32_t> ** value) = 0;
    virtual HRESULT __stdcall get_MinDistanceInMillimeters(Windows::Foundation::IReference<uint32_t> ** value) = 0;
    virtual HRESULT __stdcall abi_GetCurrentReading(Windows::Devices::Sensors::IProximitySensorReading ** value) = 0;
    virtual HRESULT __stdcall add_ReadingChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::ProximitySensor, Windows::Devices::Sensors::ProximitySensorReadingChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ReadingChanged(event_token token) = 0;
    virtual HRESULT __stdcall abi_CreateDisplayOnOffController(Windows::Foundation::IClosable ** controller) = 0;
};

struct __declspec(uuid("905ac121-6d27-4ad3-9db5-6467f2a5ad9d")) __declspec(novtable) IProximitySensorDataThresholdFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(Windows::Devices::Sensors::IProximitySensor * sensor, Windows::Devices::Sensors::ISensorDataThreshold ** threshold) = 0;
};

struct __declspec(uuid("71228d59-132d-4d5f-8ff9-2f0db8751ced")) __declspec(novtable) IProximitySensorReading : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_IsDetected(bool * value) = 0;
    virtual HRESULT __stdcall get_DistanceInMillimeters(Windows::Foundation::IReference<uint32_t> ** value) = 0;
};

struct __declspec(uuid("cfc2f366-c3e8-40fd-8cc3-67e289004938")) __declspec(novtable) IProximitySensorReadingChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reading(Windows::Devices::Sensors::IProximitySensorReading ** value) = 0;
};

struct __declspec(uuid("29186649-6269-4e57-a5ad-82be80813392")) __declspec(novtable) IProximitySensorStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDeviceSelector(hstring * value) = 0;
    virtual HRESULT __stdcall abi_FromId(hstring sensorId, Windows::Devices::Sensors::IProximitySensor ** result) = 0;
};

struct __declspec(uuid("cbf473ae-e9ca-422f-ad67-4c3d25df350c")) __declspec(novtable) IProximitySensorStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetReadingsFromTriggerDetails(Windows::Devices::Sensors::ISensorDataThresholdTriggerDetails * triggerDetails, Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ProximitySensorReading> ** result) = 0;
};

struct __declspec(uuid("54daec61-fe4b-4e07-b260-3a4cdfbe396e")) __declspec(novtable) ISensorDataThreshold : Windows::IInspectable
{
};

struct __declspec(uuid("9106f1b7-e88d-48b1-bc90-619c7b349391")) __declspec(novtable) ISensorDataThresholdTriggerDetails : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
    virtual HRESULT __stdcall get_SensorType(winrt::Windows::Devices::Sensors::SensorType * value) = 0;
};

struct __declspec(uuid("c9c5c827-c71c-46e7-9da3-36a193b232bc")) __declspec(novtable) ISensorQuaternion : Windows::IInspectable
{
    virtual HRESULT __stdcall get_W(float * value) = 0;
    virtual HRESULT __stdcall get_X(float * value) = 0;
    virtual HRESULT __stdcall get_Y(float * value) = 0;
    virtual HRESULT __stdcall get_Z(float * value) = 0;
};

struct __declspec(uuid("0a3d5a67-22f4-4392-9538-65d0bd064aa6")) __declspec(novtable) ISensorRotationMatrix : Windows::IInspectable
{
    virtual HRESULT __stdcall get_M11(float * value) = 0;
    virtual HRESULT __stdcall get_M12(float * value) = 0;
    virtual HRESULT __stdcall get_M13(float * value) = 0;
    virtual HRESULT __stdcall get_M21(float * value) = 0;
    virtual HRESULT __stdcall get_M22(float * value) = 0;
    virtual HRESULT __stdcall get_M23(float * value) = 0;
    virtual HRESULT __stdcall get_M31(float * value) = 0;
    virtual HRESULT __stdcall get_M32(float * value) = 0;
    virtual HRESULT __stdcall get_M33(float * value) = 0;
};

struct __declspec(uuid("5ff53856-214a-4dee-a3f9-616f1ab06ffd")) __declspec(novtable) ISimpleOrientationSensor : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetCurrentOrientation(winrt::Windows::Devices::Sensors::SimpleOrientation * value) = 0;
    virtual HRESULT __stdcall add_OrientationChanged(Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::SimpleOrientationSensor, Windows::Devices::Sensors::SimpleOrientationSensorOrientationChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_OrientationChanged(event_token token) = 0;
};

struct __declspec(uuid("a277a798-8870-453e-8bd6-b8f5d8d7941b")) __declspec(novtable) ISimpleOrientationSensor2 : Windows::IInspectable
{
    virtual HRESULT __stdcall put_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations value) = 0;
    virtual HRESULT __stdcall get_ReadingTransform(winrt::Windows::Graphics::Display::DisplayOrientations * value) = 0;
};

struct __declspec(uuid("fbc00acb-3b76-41f6-8091-30efe646d3cf")) __declspec(novtable) ISimpleOrientationSensorDeviceId : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
};

struct __declspec(uuid("bcd5c660-23d4-4b4c-a22e-ba81ade0c601")) __declspec(novtable) ISimpleOrientationSensorOrientationChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Timestamp(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_Orientation(winrt::Windows::Devices::Sensors::SimpleOrientation * value) = 0;
};

struct __declspec(uuid("72ed066f-70aa-40c6-9b1b-3433f7459b4e")) __declspec(novtable) ISimpleOrientationSensorStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefault(Windows::Devices::Sensors::ISimpleOrientationSensor ** result) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Devices::Sensors::Accelerometer> { using default_interface = Windows::Devices::Sensors::IAccelerometer; };
template <> struct traits<Windows::Devices::Sensors::AccelerometerReading> { using default_interface = Windows::Devices::Sensors::IAccelerometerReading; };
template <> struct traits<Windows::Devices::Sensors::AccelerometerReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::IAccelerometerReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::AccelerometerShakenEventArgs> { using default_interface = Windows::Devices::Sensors::IAccelerometerShakenEventArgs; };
template <> struct traits<Windows::Devices::Sensors::ActivitySensor> { using default_interface = Windows::Devices::Sensors::IActivitySensor; };
template <> struct traits<Windows::Devices::Sensors::ActivitySensorReading> { using default_interface = Windows::Devices::Sensors::IActivitySensorReading; };
template <> struct traits<Windows::Devices::Sensors::ActivitySensorReadingChangeReport> { using default_interface = Windows::Devices::Sensors::IActivitySensorReadingChangeReport; };
template <> struct traits<Windows::Devices::Sensors::ActivitySensorReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::IActivitySensorReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::ActivitySensorTriggerDetails> { using default_interface = Windows::Devices::Sensors::IActivitySensorTriggerDetails; };
template <> struct traits<Windows::Devices::Sensors::Altimeter> { using default_interface = Windows::Devices::Sensors::IAltimeter; };
template <> struct traits<Windows::Devices::Sensors::AltimeterReading> { using default_interface = Windows::Devices::Sensors::IAltimeterReading; };
template <> struct traits<Windows::Devices::Sensors::AltimeterReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::IAltimeterReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::Barometer> { using default_interface = Windows::Devices::Sensors::IBarometer; };
template <> struct traits<Windows::Devices::Sensors::BarometerReading> { using default_interface = Windows::Devices::Sensors::IBarometerReading; };
template <> struct traits<Windows::Devices::Sensors::BarometerReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::IBarometerReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::Compass> { using default_interface = Windows::Devices::Sensors::ICompass; };
template <> struct traits<Windows::Devices::Sensors::CompassReading> { using default_interface = Windows::Devices::Sensors::ICompassReading; };
template <> struct traits<Windows::Devices::Sensors::CompassReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::ICompassReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::Gyrometer> { using default_interface = Windows::Devices::Sensors::IGyrometer; };
template <> struct traits<Windows::Devices::Sensors::GyrometerReading> { using default_interface = Windows::Devices::Sensors::IGyrometerReading; };
template <> struct traits<Windows::Devices::Sensors::GyrometerReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::IGyrometerReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::Inclinometer> { using default_interface = Windows::Devices::Sensors::IInclinometer; };
template <> struct traits<Windows::Devices::Sensors::InclinometerReading> { using default_interface = Windows::Devices::Sensors::IInclinometerReading; };
template <> struct traits<Windows::Devices::Sensors::InclinometerReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::IInclinometerReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::LightSensor> { using default_interface = Windows::Devices::Sensors::ILightSensor; };
template <> struct traits<Windows::Devices::Sensors::LightSensorReading> { using default_interface = Windows::Devices::Sensors::ILightSensorReading; };
template <> struct traits<Windows::Devices::Sensors::LightSensorReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::ILightSensorReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::Magnetometer> { using default_interface = Windows::Devices::Sensors::IMagnetometer; };
template <> struct traits<Windows::Devices::Sensors::MagnetometerReading> { using default_interface = Windows::Devices::Sensors::IMagnetometerReading; };
template <> struct traits<Windows::Devices::Sensors::MagnetometerReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::IMagnetometerReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::OrientationSensor> { using default_interface = Windows::Devices::Sensors::IOrientationSensor; };
template <> struct traits<Windows::Devices::Sensors::OrientationSensorReading> { using default_interface = Windows::Devices::Sensors::IOrientationSensorReading; };
template <> struct traits<Windows::Devices::Sensors::OrientationSensorReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::IOrientationSensorReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::Pedometer> { using default_interface = Windows::Devices::Sensors::IPedometer; };
template <> struct traits<Windows::Devices::Sensors::PedometerDataThreshold> { using default_interface = Windows::Devices::Sensors::ISensorDataThreshold; };
template <> struct traits<Windows::Devices::Sensors::PedometerReading> { using default_interface = Windows::Devices::Sensors::IPedometerReading; };
template <> struct traits<Windows::Devices::Sensors::PedometerReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::IPedometerReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::ProximitySensor> { using default_interface = Windows::Devices::Sensors::IProximitySensor; };
template <> struct traits<Windows::Devices::Sensors::ProximitySensorDataThreshold> { using default_interface = Windows::Devices::Sensors::ISensorDataThreshold; };
template <> struct traits<Windows::Devices::Sensors::ProximitySensorDisplayOnOffController> { using default_interface = Windows::Foundation::IClosable; };
template <> struct traits<Windows::Devices::Sensors::ProximitySensorReading> { using default_interface = Windows::Devices::Sensors::IProximitySensorReading; };
template <> struct traits<Windows::Devices::Sensors::ProximitySensorReadingChangedEventArgs> { using default_interface = Windows::Devices::Sensors::IProximitySensorReadingChangedEventArgs; };
template <> struct traits<Windows::Devices::Sensors::SensorDataThresholdTriggerDetails> { using default_interface = Windows::Devices::Sensors::ISensorDataThresholdTriggerDetails; };
template <> struct traits<Windows::Devices::Sensors::SensorQuaternion> { using default_interface = Windows::Devices::Sensors::ISensorQuaternion; };
template <> struct traits<Windows::Devices::Sensors::SensorRotationMatrix> { using default_interface = Windows::Devices::Sensors::ISensorRotationMatrix; };
template <> struct traits<Windows::Devices::Sensors::SimpleOrientationSensor> { using default_interface = Windows::Devices::Sensors::ISimpleOrientationSensor; };
template <> struct traits<Windows::Devices::Sensors::SimpleOrientationSensorOrientationChangedEventArgs> { using default_interface = Windows::Devices::Sensors::ISimpleOrientationSensorOrientationChangedEventArgs; };

}

namespace Windows::Devices::Sensors {

template <typename T> struct impl_IAccelerometer;
template <typename T> struct impl_IAccelerometer2;
template <typename T> struct impl_IAccelerometer3;
template <typename T> struct impl_IAccelerometer4;
template <typename T> struct impl_IAccelerometerDeviceId;
template <typename T> struct impl_IAccelerometerReading;
template <typename T> struct impl_IAccelerometerReadingChangedEventArgs;
template <typename T> struct impl_IAccelerometerShakenEventArgs;
template <typename T> struct impl_IAccelerometerStatics;
template <typename T> struct impl_IAccelerometerStatics2;
template <typename T> struct impl_IActivitySensor;
template <typename T> struct impl_IActivitySensorReading;
template <typename T> struct impl_IActivitySensorReadingChangeReport;
template <typename T> struct impl_IActivitySensorReadingChangedEventArgs;
template <typename T> struct impl_IActivitySensorStatics;
template <typename T> struct impl_IActivitySensorTriggerDetails;
template <typename T> struct impl_IAltimeter;
template <typename T> struct impl_IAltimeterReading;
template <typename T> struct impl_IAltimeterReadingChangedEventArgs;
template <typename T> struct impl_IAltimeterStatics;
template <typename T> struct impl_IBarometer;
template <typename T> struct impl_IBarometerReading;
template <typename T> struct impl_IBarometerReadingChangedEventArgs;
template <typename T> struct impl_IBarometerStatics;
template <typename T> struct impl_ICompass;
template <typename T> struct impl_ICompass2;
template <typename T> struct impl_ICompassDeviceId;
template <typename T> struct impl_ICompassReading;
template <typename T> struct impl_ICompassReadingChangedEventArgs;
template <typename T> struct impl_ICompassReadingHeadingAccuracy;
template <typename T> struct impl_ICompassStatics;
template <typename T> struct impl_IGyrometer;
template <typename T> struct impl_IGyrometer2;
template <typename T> struct impl_IGyrometerDeviceId;
template <typename T> struct impl_IGyrometerReading;
template <typename T> struct impl_IGyrometerReadingChangedEventArgs;
template <typename T> struct impl_IGyrometerStatics;
template <typename T> struct impl_IInclinometer;
template <typename T> struct impl_IInclinometer2;
template <typename T> struct impl_IInclinometerDeviceId;
template <typename T> struct impl_IInclinometerReading;
template <typename T> struct impl_IInclinometerReadingChangedEventArgs;
template <typename T> struct impl_IInclinometerReadingYawAccuracy;
template <typename T> struct impl_IInclinometerStatics;
template <typename T> struct impl_IInclinometerStatics2;
template <typename T> struct impl_IInclinometerStatics3;
template <typename T> struct impl_ILightSensor;
template <typename T> struct impl_ILightSensorDeviceId;
template <typename T> struct impl_ILightSensorReading;
template <typename T> struct impl_ILightSensorReadingChangedEventArgs;
template <typename T> struct impl_ILightSensorStatics;
template <typename T> struct impl_IMagnetometer;
template <typename T> struct impl_IMagnetometer2;
template <typename T> struct impl_IMagnetometerDeviceId;
template <typename T> struct impl_IMagnetometerReading;
template <typename T> struct impl_IMagnetometerReadingChangedEventArgs;
template <typename T> struct impl_IMagnetometerStatics;
template <typename T> struct impl_IOrientationSensor;
template <typename T> struct impl_IOrientationSensor2;
template <typename T> struct impl_IOrientationSensorDeviceId;
template <typename T> struct impl_IOrientationSensorReading;
template <typename T> struct impl_IOrientationSensorReadingChangedEventArgs;
template <typename T> struct impl_IOrientationSensorReadingYawAccuracy;
template <typename T> struct impl_IOrientationSensorStatics;
template <typename T> struct impl_IOrientationSensorStatics2;
template <typename T> struct impl_IOrientationSensorStatics3;
template <typename T> struct impl_IPedometer;
template <typename T> struct impl_IPedometer2;
template <typename T> struct impl_IPedometerDataThresholdFactory;
template <typename T> struct impl_IPedometerReading;
template <typename T> struct impl_IPedometerReadingChangedEventArgs;
template <typename T> struct impl_IPedometerStatics;
template <typename T> struct impl_IPedometerStatics2;
template <typename T> struct impl_IProximitySensor;
template <typename T> struct impl_IProximitySensorDataThresholdFactory;
template <typename T> struct impl_IProximitySensorReading;
template <typename T> struct impl_IProximitySensorReadingChangedEventArgs;
template <typename T> struct impl_IProximitySensorStatics;
template <typename T> struct impl_IProximitySensorStatics2;
template <typename T> struct impl_ISensorDataThreshold;
template <typename T> struct impl_ISensorDataThresholdTriggerDetails;
template <typename T> struct impl_ISensorQuaternion;
template <typename T> struct impl_ISensorRotationMatrix;
template <typename T> struct impl_ISimpleOrientationSensor;
template <typename T> struct impl_ISimpleOrientationSensor2;
template <typename T> struct impl_ISimpleOrientationSensorDeviceId;
template <typename T> struct impl_ISimpleOrientationSensorOrientationChangedEventArgs;
template <typename T> struct impl_ISimpleOrientationSensorStatics;

}

namespace impl {

template <> struct traits<Windows::Devices::Sensors::IAccelerometer>
{
    using abi = ABI::Windows::Devices::Sensors::IAccelerometer;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAccelerometer<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAccelerometer2>
{
    using abi = ABI::Windows::Devices::Sensors::IAccelerometer2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAccelerometer2<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAccelerometer3>
{
    using abi = ABI::Windows::Devices::Sensors::IAccelerometer3;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAccelerometer3<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAccelerometer4>
{
    using abi = ABI::Windows::Devices::Sensors::IAccelerometer4;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAccelerometer4<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAccelerometerDeviceId>
{
    using abi = ABI::Windows::Devices::Sensors::IAccelerometerDeviceId;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAccelerometerDeviceId<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAccelerometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::IAccelerometerReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAccelerometerReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAccelerometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::IAccelerometerReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAccelerometerReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAccelerometerShakenEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::IAccelerometerShakenEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAccelerometerShakenEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAccelerometerStatics>
{
    using abi = ABI::Windows::Devices::Sensors::IAccelerometerStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAccelerometerStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAccelerometerStatics2>
{
    using abi = ABI::Windows::Devices::Sensors::IAccelerometerStatics2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAccelerometerStatics2<D>;
};

template <> struct traits<Windows::Devices::Sensors::IActivitySensor>
{
    using abi = ABI::Windows::Devices::Sensors::IActivitySensor;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IActivitySensor<D>;
};

template <> struct traits<Windows::Devices::Sensors::IActivitySensorReading>
{
    using abi = ABI::Windows::Devices::Sensors::IActivitySensorReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IActivitySensorReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::IActivitySensorReadingChangeReport>
{
    using abi = ABI::Windows::Devices::Sensors::IActivitySensorReadingChangeReport;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IActivitySensorReadingChangeReport<D>;
};

template <> struct traits<Windows::Devices::Sensors::IActivitySensorReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::IActivitySensorReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IActivitySensorReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::IActivitySensorStatics>
{
    using abi = ABI::Windows::Devices::Sensors::IActivitySensorStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IActivitySensorStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::IActivitySensorTriggerDetails>
{
    using abi = ABI::Windows::Devices::Sensors::IActivitySensorTriggerDetails;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IActivitySensorTriggerDetails<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAltimeter>
{
    using abi = ABI::Windows::Devices::Sensors::IAltimeter;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAltimeter<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAltimeterReading>
{
    using abi = ABI::Windows::Devices::Sensors::IAltimeterReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAltimeterReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAltimeterReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::IAltimeterReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAltimeterReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::IAltimeterStatics>
{
    using abi = ABI::Windows::Devices::Sensors::IAltimeterStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IAltimeterStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::IBarometer>
{
    using abi = ABI::Windows::Devices::Sensors::IBarometer;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IBarometer<D>;
};

template <> struct traits<Windows::Devices::Sensors::IBarometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::IBarometerReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IBarometerReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::IBarometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::IBarometerReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IBarometerReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::IBarometerStatics>
{
    using abi = ABI::Windows::Devices::Sensors::IBarometerStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IBarometerStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::ICompass>
{
    using abi = ABI::Windows::Devices::Sensors::ICompass;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ICompass<D>;
};

template <> struct traits<Windows::Devices::Sensors::ICompass2>
{
    using abi = ABI::Windows::Devices::Sensors::ICompass2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ICompass2<D>;
};

template <> struct traits<Windows::Devices::Sensors::ICompassDeviceId>
{
    using abi = ABI::Windows::Devices::Sensors::ICompassDeviceId;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ICompassDeviceId<D>;
};

template <> struct traits<Windows::Devices::Sensors::ICompassReading>
{
    using abi = ABI::Windows::Devices::Sensors::ICompassReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ICompassReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::ICompassReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::ICompassReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ICompassReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::ICompassReadingHeadingAccuracy>
{
    using abi = ABI::Windows::Devices::Sensors::ICompassReadingHeadingAccuracy;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ICompassReadingHeadingAccuracy<D>;
};

template <> struct traits<Windows::Devices::Sensors::ICompassStatics>
{
    using abi = ABI::Windows::Devices::Sensors::ICompassStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ICompassStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::IGyrometer>
{
    using abi = ABI::Windows::Devices::Sensors::IGyrometer;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IGyrometer<D>;
};

template <> struct traits<Windows::Devices::Sensors::IGyrometer2>
{
    using abi = ABI::Windows::Devices::Sensors::IGyrometer2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IGyrometer2<D>;
};

template <> struct traits<Windows::Devices::Sensors::IGyrometerDeviceId>
{
    using abi = ABI::Windows::Devices::Sensors::IGyrometerDeviceId;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IGyrometerDeviceId<D>;
};

template <> struct traits<Windows::Devices::Sensors::IGyrometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::IGyrometerReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IGyrometerReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::IGyrometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::IGyrometerReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IGyrometerReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::IGyrometerStatics>
{
    using abi = ABI::Windows::Devices::Sensors::IGyrometerStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IGyrometerStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::IInclinometer>
{
    using abi = ABI::Windows::Devices::Sensors::IInclinometer;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IInclinometer<D>;
};

template <> struct traits<Windows::Devices::Sensors::IInclinometer2>
{
    using abi = ABI::Windows::Devices::Sensors::IInclinometer2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IInclinometer2<D>;
};

template <> struct traits<Windows::Devices::Sensors::IInclinometerDeviceId>
{
    using abi = ABI::Windows::Devices::Sensors::IInclinometerDeviceId;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IInclinometerDeviceId<D>;
};

template <> struct traits<Windows::Devices::Sensors::IInclinometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::IInclinometerReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IInclinometerReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::IInclinometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::IInclinometerReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IInclinometerReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::IInclinometerReadingYawAccuracy>
{
    using abi = ABI::Windows::Devices::Sensors::IInclinometerReadingYawAccuracy;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IInclinometerReadingYawAccuracy<D>;
};

template <> struct traits<Windows::Devices::Sensors::IInclinometerStatics>
{
    using abi = ABI::Windows::Devices::Sensors::IInclinometerStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IInclinometerStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::IInclinometerStatics2>
{
    using abi = ABI::Windows::Devices::Sensors::IInclinometerStatics2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IInclinometerStatics2<D>;
};

template <> struct traits<Windows::Devices::Sensors::IInclinometerStatics3>
{
    using abi = ABI::Windows::Devices::Sensors::IInclinometerStatics3;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IInclinometerStatics3<D>;
};

template <> struct traits<Windows::Devices::Sensors::ILightSensor>
{
    using abi = ABI::Windows::Devices::Sensors::ILightSensor;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ILightSensor<D>;
};

template <> struct traits<Windows::Devices::Sensors::ILightSensorDeviceId>
{
    using abi = ABI::Windows::Devices::Sensors::ILightSensorDeviceId;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ILightSensorDeviceId<D>;
};

template <> struct traits<Windows::Devices::Sensors::ILightSensorReading>
{
    using abi = ABI::Windows::Devices::Sensors::ILightSensorReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ILightSensorReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::ILightSensorReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::ILightSensorReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ILightSensorReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::ILightSensorStatics>
{
    using abi = ABI::Windows::Devices::Sensors::ILightSensorStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ILightSensorStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::IMagnetometer>
{
    using abi = ABI::Windows::Devices::Sensors::IMagnetometer;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IMagnetometer<D>;
};

template <> struct traits<Windows::Devices::Sensors::IMagnetometer2>
{
    using abi = ABI::Windows::Devices::Sensors::IMagnetometer2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IMagnetometer2<D>;
};

template <> struct traits<Windows::Devices::Sensors::IMagnetometerDeviceId>
{
    using abi = ABI::Windows::Devices::Sensors::IMagnetometerDeviceId;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IMagnetometerDeviceId<D>;
};

template <> struct traits<Windows::Devices::Sensors::IMagnetometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::IMagnetometerReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IMagnetometerReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::IMagnetometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::IMagnetometerReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IMagnetometerReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::IMagnetometerStatics>
{
    using abi = ABI::Windows::Devices::Sensors::IMagnetometerStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IMagnetometerStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::IOrientationSensor>
{
    using abi = ABI::Windows::Devices::Sensors::IOrientationSensor;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IOrientationSensor<D>;
};

template <> struct traits<Windows::Devices::Sensors::IOrientationSensor2>
{
    using abi = ABI::Windows::Devices::Sensors::IOrientationSensor2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IOrientationSensor2<D>;
};

template <> struct traits<Windows::Devices::Sensors::IOrientationSensorDeviceId>
{
    using abi = ABI::Windows::Devices::Sensors::IOrientationSensorDeviceId;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IOrientationSensorDeviceId<D>;
};

template <> struct traits<Windows::Devices::Sensors::IOrientationSensorReading>
{
    using abi = ABI::Windows::Devices::Sensors::IOrientationSensorReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IOrientationSensorReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::IOrientationSensorReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::IOrientationSensorReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IOrientationSensorReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::IOrientationSensorReadingYawAccuracy>
{
    using abi = ABI::Windows::Devices::Sensors::IOrientationSensorReadingYawAccuracy;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IOrientationSensorReadingYawAccuracy<D>;
};

template <> struct traits<Windows::Devices::Sensors::IOrientationSensorStatics>
{
    using abi = ABI::Windows::Devices::Sensors::IOrientationSensorStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IOrientationSensorStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::IOrientationSensorStatics2>
{
    using abi = ABI::Windows::Devices::Sensors::IOrientationSensorStatics2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IOrientationSensorStatics2<D>;
};

template <> struct traits<Windows::Devices::Sensors::IOrientationSensorStatics3>
{
    using abi = ABI::Windows::Devices::Sensors::IOrientationSensorStatics3;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IOrientationSensorStatics3<D>;
};

template <> struct traits<Windows::Devices::Sensors::IPedometer>
{
    using abi = ABI::Windows::Devices::Sensors::IPedometer;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IPedometer<D>;
};

template <> struct traits<Windows::Devices::Sensors::IPedometer2>
{
    using abi = ABI::Windows::Devices::Sensors::IPedometer2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IPedometer2<D>;
};

template <> struct traits<Windows::Devices::Sensors::IPedometerDataThresholdFactory>
{
    using abi = ABI::Windows::Devices::Sensors::IPedometerDataThresholdFactory;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IPedometerDataThresholdFactory<D>;
};

template <> struct traits<Windows::Devices::Sensors::IPedometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::IPedometerReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IPedometerReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::IPedometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::IPedometerReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IPedometerReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::IPedometerStatics>
{
    using abi = ABI::Windows::Devices::Sensors::IPedometerStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IPedometerStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::IPedometerStatics2>
{
    using abi = ABI::Windows::Devices::Sensors::IPedometerStatics2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IPedometerStatics2<D>;
};

template <> struct traits<Windows::Devices::Sensors::IProximitySensor>
{
    using abi = ABI::Windows::Devices::Sensors::IProximitySensor;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IProximitySensor<D>;
};

template <> struct traits<Windows::Devices::Sensors::IProximitySensorDataThresholdFactory>
{
    using abi = ABI::Windows::Devices::Sensors::IProximitySensorDataThresholdFactory;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IProximitySensorDataThresholdFactory<D>;
};

template <> struct traits<Windows::Devices::Sensors::IProximitySensorReading>
{
    using abi = ABI::Windows::Devices::Sensors::IProximitySensorReading;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IProximitySensorReading<D>;
};

template <> struct traits<Windows::Devices::Sensors::IProximitySensorReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::IProximitySensorReadingChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IProximitySensorReadingChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::IProximitySensorStatics>
{
    using abi = ABI::Windows::Devices::Sensors::IProximitySensorStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IProximitySensorStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::IProximitySensorStatics2>
{
    using abi = ABI::Windows::Devices::Sensors::IProximitySensorStatics2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_IProximitySensorStatics2<D>;
};

template <> struct traits<Windows::Devices::Sensors::ISensorDataThreshold>
{
    using abi = ABI::Windows::Devices::Sensors::ISensorDataThreshold;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ISensorDataThreshold<D>;
};

template <> struct traits<Windows::Devices::Sensors::ISensorDataThresholdTriggerDetails>
{
    using abi = ABI::Windows::Devices::Sensors::ISensorDataThresholdTriggerDetails;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ISensorDataThresholdTriggerDetails<D>;
};

template <> struct traits<Windows::Devices::Sensors::ISensorQuaternion>
{
    using abi = ABI::Windows::Devices::Sensors::ISensorQuaternion;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ISensorQuaternion<D>;
};

template <> struct traits<Windows::Devices::Sensors::ISensorRotationMatrix>
{
    using abi = ABI::Windows::Devices::Sensors::ISensorRotationMatrix;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ISensorRotationMatrix<D>;
};

template <> struct traits<Windows::Devices::Sensors::ISimpleOrientationSensor>
{
    using abi = ABI::Windows::Devices::Sensors::ISimpleOrientationSensor;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ISimpleOrientationSensor<D>;
};

template <> struct traits<Windows::Devices::Sensors::ISimpleOrientationSensor2>
{
    using abi = ABI::Windows::Devices::Sensors::ISimpleOrientationSensor2;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ISimpleOrientationSensor2<D>;
};

template <> struct traits<Windows::Devices::Sensors::ISimpleOrientationSensorDeviceId>
{
    using abi = ABI::Windows::Devices::Sensors::ISimpleOrientationSensorDeviceId;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ISimpleOrientationSensorDeviceId<D>;
};

template <> struct traits<Windows::Devices::Sensors::ISimpleOrientationSensorOrientationChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::ISimpleOrientationSensorOrientationChangedEventArgs;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ISimpleOrientationSensorOrientationChangedEventArgs<D>;
};

template <> struct traits<Windows::Devices::Sensors::ISimpleOrientationSensorStatics>
{
    using abi = ABI::Windows::Devices::Sensors::ISimpleOrientationSensorStatics;
    template <typename D> using consume = Windows::Devices::Sensors::impl_ISimpleOrientationSensorStatics<D>;
};

template <> struct traits<Windows::Devices::Sensors::Accelerometer>
{
    using abi = ABI::Windows::Devices::Sensors::Accelerometer;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.Accelerometer"; }
};

template <> struct traits<Windows::Devices::Sensors::AccelerometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::AccelerometerReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.AccelerometerReading"; }
};

template <> struct traits<Windows::Devices::Sensors::AccelerometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::AccelerometerReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.AccelerometerReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::AccelerometerShakenEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::AccelerometerShakenEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.AccelerometerShakenEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::ActivitySensor>
{
    using abi = ABI::Windows::Devices::Sensors::ActivitySensor;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.ActivitySensor"; }
};

template <> struct traits<Windows::Devices::Sensors::ActivitySensorReading>
{
    using abi = ABI::Windows::Devices::Sensors::ActivitySensorReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.ActivitySensorReading"; }
};

template <> struct traits<Windows::Devices::Sensors::ActivitySensorReadingChangeReport>
{
    using abi = ABI::Windows::Devices::Sensors::ActivitySensorReadingChangeReport;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.ActivitySensorReadingChangeReport"; }
};

template <> struct traits<Windows::Devices::Sensors::ActivitySensorReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::ActivitySensorReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.ActivitySensorReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::ActivitySensorTriggerDetails>
{
    using abi = ABI::Windows::Devices::Sensors::ActivitySensorTriggerDetails;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.ActivitySensorTriggerDetails"; }
};

template <> struct traits<Windows::Devices::Sensors::Altimeter>
{
    using abi = ABI::Windows::Devices::Sensors::Altimeter;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.Altimeter"; }
};

template <> struct traits<Windows::Devices::Sensors::AltimeterReading>
{
    using abi = ABI::Windows::Devices::Sensors::AltimeterReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.AltimeterReading"; }
};

template <> struct traits<Windows::Devices::Sensors::AltimeterReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::AltimeterReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.AltimeterReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::Barometer>
{
    using abi = ABI::Windows::Devices::Sensors::Barometer;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.Barometer"; }
};

template <> struct traits<Windows::Devices::Sensors::BarometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::BarometerReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.BarometerReading"; }
};

template <> struct traits<Windows::Devices::Sensors::BarometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::BarometerReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.BarometerReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::Compass>
{
    using abi = ABI::Windows::Devices::Sensors::Compass;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.Compass"; }
};

template <> struct traits<Windows::Devices::Sensors::CompassReading>
{
    using abi = ABI::Windows::Devices::Sensors::CompassReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.CompassReading"; }
};

template <> struct traits<Windows::Devices::Sensors::CompassReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::CompassReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.CompassReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::Gyrometer>
{
    using abi = ABI::Windows::Devices::Sensors::Gyrometer;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.Gyrometer"; }
};

template <> struct traits<Windows::Devices::Sensors::GyrometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::GyrometerReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.GyrometerReading"; }
};

template <> struct traits<Windows::Devices::Sensors::GyrometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::GyrometerReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.GyrometerReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::Inclinometer>
{
    using abi = ABI::Windows::Devices::Sensors::Inclinometer;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.Inclinometer"; }
};

template <> struct traits<Windows::Devices::Sensors::InclinometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::InclinometerReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.InclinometerReading"; }
};

template <> struct traits<Windows::Devices::Sensors::InclinometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::InclinometerReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.InclinometerReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::LightSensor>
{
    using abi = ABI::Windows::Devices::Sensors::LightSensor;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.LightSensor"; }
};

template <> struct traits<Windows::Devices::Sensors::LightSensorReading>
{
    using abi = ABI::Windows::Devices::Sensors::LightSensorReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.LightSensorReading"; }
};

template <> struct traits<Windows::Devices::Sensors::LightSensorReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::LightSensorReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.LightSensorReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::Magnetometer>
{
    using abi = ABI::Windows::Devices::Sensors::Magnetometer;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.Magnetometer"; }
};

template <> struct traits<Windows::Devices::Sensors::MagnetometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::MagnetometerReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.MagnetometerReading"; }
};

template <> struct traits<Windows::Devices::Sensors::MagnetometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::MagnetometerReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.MagnetometerReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::OrientationSensor>
{
    using abi = ABI::Windows::Devices::Sensors::OrientationSensor;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.OrientationSensor"; }
};

template <> struct traits<Windows::Devices::Sensors::OrientationSensorReading>
{
    using abi = ABI::Windows::Devices::Sensors::OrientationSensorReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.OrientationSensorReading"; }
};

template <> struct traits<Windows::Devices::Sensors::OrientationSensorReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::OrientationSensorReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.OrientationSensorReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::Pedometer>
{
    using abi = ABI::Windows::Devices::Sensors::Pedometer;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.Pedometer"; }
};

template <> struct traits<Windows::Devices::Sensors::PedometerDataThreshold>
{
    using abi = ABI::Windows::Devices::Sensors::PedometerDataThreshold;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.PedometerDataThreshold"; }
};

template <> struct traits<Windows::Devices::Sensors::PedometerReading>
{
    using abi = ABI::Windows::Devices::Sensors::PedometerReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.PedometerReading"; }
};

template <> struct traits<Windows::Devices::Sensors::PedometerReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::PedometerReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.PedometerReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::ProximitySensor>
{
    using abi = ABI::Windows::Devices::Sensors::ProximitySensor;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.ProximitySensor"; }
};

template <> struct traits<Windows::Devices::Sensors::ProximitySensorDataThreshold>
{
    using abi = ABI::Windows::Devices::Sensors::ProximitySensorDataThreshold;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.ProximitySensorDataThreshold"; }
};

template <> struct traits<Windows::Devices::Sensors::ProximitySensorDisplayOnOffController>
{
    using abi = ABI::Windows::Devices::Sensors::ProximitySensorDisplayOnOffController;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.ProximitySensorDisplayOnOffController"; }
};

template <> struct traits<Windows::Devices::Sensors::ProximitySensorReading>
{
    using abi = ABI::Windows::Devices::Sensors::ProximitySensorReading;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.ProximitySensorReading"; }
};

template <> struct traits<Windows::Devices::Sensors::ProximitySensorReadingChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::ProximitySensorReadingChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.ProximitySensorReadingChangedEventArgs"; }
};

template <> struct traits<Windows::Devices::Sensors::SensorDataThresholdTriggerDetails>
{
    using abi = ABI::Windows::Devices::Sensors::SensorDataThresholdTriggerDetails;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.SensorDataThresholdTriggerDetails"; }
};

template <> struct traits<Windows::Devices::Sensors::SensorQuaternion>
{
    using abi = ABI::Windows::Devices::Sensors::SensorQuaternion;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.SensorQuaternion"; }
};

template <> struct traits<Windows::Devices::Sensors::SensorRotationMatrix>
{
    using abi = ABI::Windows::Devices::Sensors::SensorRotationMatrix;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.SensorRotationMatrix"; }
};

template <> struct traits<Windows::Devices::Sensors::SimpleOrientationSensor>
{
    using abi = ABI::Windows::Devices::Sensors::SimpleOrientationSensor;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.SimpleOrientationSensor"; }
};

template <> struct traits<Windows::Devices::Sensors::SimpleOrientationSensorOrientationChangedEventArgs>
{
    using abi = ABI::Windows::Devices::Sensors::SimpleOrientationSensorOrientationChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Sensors.SimpleOrientationSensorOrientationChangedEventArgs"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Web.Http.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Web.Http.Filters.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Web.Http.Headers.3.h"
#include "internal/Windows.Storage.Streams.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Security.Cryptography.Certificates.3.h"
#include "internal/Windows.Networking.Sockets.3.h"
#include "internal/Windows.Web.Http.3.h"
#include "Windows.Web.h"
#include "Windows.Foundation.h"
#include "Windows.Foundation.Collections.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Web::Http::IHttpBufferContentFactory> : produce_base<D, Windows::Web::Http::IHttpBufferContentFactory>
{
    HRESULT __stdcall abi_CreateFromBuffer(abi_arg_in<Windows::Storage::Streams::IBuffer> content, abi_arg_out<Windows::Web::Http::IHttpContent> bufferContent) noexcept override
    {
        try
        {
            *bufferContent = detach(this->shim().CreateFromBuffer(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&content)));
            return S_OK;
        }
        catch (...)
        {
            *bufferContent = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromBufferWithOffset(abi_arg_in<Windows::Storage::Streams::IBuffer> content, uint32_t offset, uint32_t count, abi_arg_out<Windows::Web::Http::IHttpContent> bufferContent) noexcept override
    {
        try
        {
            *bufferContent = detach(this->shim().CreateFromBufferWithOffset(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&content), offset, count));
            return S_OK;
        }
        catch (...)
        {
            *bufferContent = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpClient> : produce_base<D, Windows::Web::Http::IHttpClient>
{
    HRESULT __stdcall abi_DeleteAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().DeleteAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetWithOptionAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, Windows::Web::Http::HttpCompletionOption completionOption, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri), completionOption));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetBufferAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IBuffer, Windows::Web::Http::HttpProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetBufferAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetInputStreamAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, Windows::Web::Http::HttpProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetInputStreamAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetStringAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<hstring, Windows::Web::Http::HttpProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetStringAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_PostAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_in<Windows::Web::Http::IHttpContent> content, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().PostAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri), *reinterpret_cast<const Windows::Web::Http::IHttpContent *>(&content)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_PutAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_in<Windows::Web::Http::IHttpContent> content, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().PutAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri), *reinterpret_cast<const Windows::Web::Http::IHttpContent *>(&content)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SendRequestAsync(abi_arg_in<Windows::Web::Http::IHttpRequestMessage> request, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().SendRequestAsync(*reinterpret_cast<const Windows::Web::Http::HttpRequestMessage *>(&request)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SendRequestWithOptionAsync(abi_arg_in<Windows::Web::Http::IHttpRequestMessage> request, Windows::Web::Http::HttpCompletionOption completionOption, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().SendRequestAsync(*reinterpret_cast<const Windows::Web::Http::HttpRequestMessage *>(&request), completionOption));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DefaultRequestHeaders(abi_arg_out<Windows::Web::Http::Headers::IHttpRequestHeaderCollection> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DefaultRequestHeaders());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpClientFactory> : produce_base<D, Windows::Web::Http::IHttpClientFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<Windows::Web::Http::Filters::IHttpFilter> filter, abi_arg_out<Windows::Web::Http::IHttpClient> client) noexcept override
    {
        try
        {
            *client = detach(this->shim().Create(*reinterpret_cast<const Windows::Web::Http::Filters::IHttpFilter *>(&filter)));
            return S_OK;
        }
        catch (...)
        {
            *client = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpContent> : produce_base<D, Windows::Web::Http::IHttpContent>
{
    HRESULT __stdcall get_Headers(abi_arg_out<Windows::Web::Http::Headers::IHttpContentHeaderCollection> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Headers());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_BufferAllAsync(abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<uint64_t, uint64_t>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().BufferAllAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadAsBufferAsync(abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IBuffer, uint64_t>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ReadAsBufferAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadAsInputStreamAsync(abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, uint64_t>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ReadAsInputStreamAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadAsStringAsync(abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<hstring, uint64_t>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ReadAsStringAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TryComputeLength(uint64_t * length, bool * succeeded) noexcept override
    {
        try
        {
            *succeeded = detach(this->shim().TryComputeLength(*length));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteToStreamAsync(abi_arg_in<Windows::Storage::Streams::IOutputStream> outputStream, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<uint64_t, uint64_t>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().WriteToStreamAsync(*reinterpret_cast<const Windows::Storage::Streams::IOutputStream *>(&outputStream)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpCookie> : produce_base<D, Windows::Web::Http::IHttpCookie>
{
    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Domain(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Domain());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Path(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Path());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Expires(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Expires());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Expires(abi_arg_in<Windows::Foundation::IReference<Windows::Foundation::DateTime>> value) noexcept override
    {
        try
        {
            this->shim().Expires(*reinterpret_cast<const Windows::Foundation::IReference<Windows::Foundation::DateTime> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HttpOnly(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HttpOnly());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_HttpOnly(bool value) noexcept override
    {
        try
        {
            this->shim().HttpOnly(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Secure(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Secure());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Secure(bool value) noexcept override
    {
        try
        {
            this->shim().Secure(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Value(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Value(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpCookieFactory> : produce_base<D, Windows::Web::Http::IHttpCookieFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<hstring> name, abi_arg_in<hstring> domain, abi_arg_in<hstring> path, abi_arg_out<Windows::Web::Http::IHttpCookie> cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().Create(*reinterpret_cast<const hstring *>(&name), *reinterpret_cast<const hstring *>(&domain), *reinterpret_cast<const hstring *>(&path)));
            return S_OK;
        }
        catch (...)
        {
            *cookie = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpCookieManager> : produce_base<D, Windows::Web::Http::IHttpCookieManager>
{
    HRESULT __stdcall abi_SetCookie(abi_arg_in<Windows::Web::Http::IHttpCookie> cookie, bool * replaced) noexcept override
    {
        try
        {
            *replaced = detach(this->shim().SetCookie(*reinterpret_cast<const Windows::Web::Http::HttpCookie *>(&cookie)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetCookieWithThirdParty(abi_arg_in<Windows::Web::Http::IHttpCookie> cookie, bool thirdParty, bool * replaced) noexcept override
    {
        try
        {
            *replaced = detach(this->shim().SetCookie(*reinterpret_cast<const Windows::Web::Http::HttpCookie *>(&cookie), thirdParty));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_DeleteCookie(abi_arg_in<Windows::Web::Http::IHttpCookie> cookie) noexcept override
    {
        try
        {
            this->shim().DeleteCookie(*reinterpret_cast<const Windows::Web::Http::HttpCookie *>(&cookie));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetCookies(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Web::Http::HttpCookie>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetCookies(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpFormUrlEncodedContentFactory> : produce_base<D, Windows::Web::Http::IHttpFormUrlEncodedContentFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>>> content, abi_arg_out<Windows::Web::Http::IHttpContent> formUrlEncodedContent) noexcept override
    {
        try
        {
            *formUrlEncodedContent = detach(this->shim().Create(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>> *>(&content)));
            return S_OK;
        }
        catch (...)
        {
            *formUrlEncodedContent = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpMethod> : produce_base<D, Windows::Web::Http::IHttpMethod>
{
    HRESULT __stdcall get_Method(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Method());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpMethodFactory> : produce_base<D, Windows::Web::Http::IHttpMethodFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<hstring> method, abi_arg_out<Windows::Web::Http::IHttpMethod> httpMethod) noexcept override
    {
        try
        {
            *httpMethod = detach(this->shim().Create(*reinterpret_cast<const hstring *>(&method)));
            return S_OK;
        }
        catch (...)
        {
            *httpMethod = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpMethodStatics> : produce_base<D, Windows::Web::Http::IHttpMethodStatics>
{
    HRESULT __stdcall get_Delete(abi_arg_out<Windows::Web::Http::IHttpMethod> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Delete());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Get(abi_arg_out<Windows::Web::Http::IHttpMethod> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Get());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Head(abi_arg_out<Windows::Web::Http::IHttpMethod> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Head());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Options(abi_arg_out<Windows::Web::Http::IHttpMethod> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Options());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Patch(abi_arg_out<Windows::Web::Http::IHttpMethod> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Patch());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Post(abi_arg_out<Windows::Web::Http::IHttpMethod> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Post());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Put(abi_arg_out<Windows::Web::Http::IHttpMethod> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Put());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpMultipartContent> : produce_base<D, Windows::Web::Http::IHttpMultipartContent>
{
    HRESULT __stdcall abi_Add(abi_arg_in<Windows::Web::Http::IHttpContent> content) noexcept override
    {
        try
        {
            this->shim().Add(*reinterpret_cast<const Windows::Web::Http::IHttpContent *>(&content));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpMultipartContentFactory> : produce_base<D, Windows::Web::Http::IHttpMultipartContentFactory>
{
    HRESULT __stdcall abi_CreateWithSubtype(abi_arg_in<hstring> subtype, abi_arg_out<Windows::Web::Http::IHttpContent> multipartContent) noexcept override
    {
        try
        {
            *multipartContent = detach(this->shim().CreateWithSubtype(*reinterpret_cast<const hstring *>(&subtype)));
            return S_OK;
        }
        catch (...)
        {
            *multipartContent = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateWithSubtypeAndBoundary(abi_arg_in<hstring> subtype, abi_arg_in<hstring> boundary, abi_arg_out<Windows::Web::Http::IHttpContent> multipartContent) noexcept override
    {
        try
        {
            *multipartContent = detach(this->shim().CreateWithSubtypeAndBoundary(*reinterpret_cast<const hstring *>(&subtype), *reinterpret_cast<const hstring *>(&boundary)));
            return S_OK;
        }
        catch (...)
        {
            *multipartContent = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpMultipartFormDataContent> : produce_base<D, Windows::Web::Http::IHttpMultipartFormDataContent>
{
    HRESULT __stdcall abi_Add(abi_arg_in<Windows::Web::Http::IHttpContent> content) noexcept override
    {
        try
        {
            this->shim().Add(*reinterpret_cast<const Windows::Web::Http::IHttpContent *>(&content));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddWithName(abi_arg_in<Windows::Web::Http::IHttpContent> content, abi_arg_in<hstring> name) noexcept override
    {
        try
        {
            this->shim().Add(*reinterpret_cast<const Windows::Web::Http::IHttpContent *>(&content), *reinterpret_cast<const hstring *>(&name));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddWithNameAndFileName(abi_arg_in<Windows::Web::Http::IHttpContent> content, abi_arg_in<hstring> name, abi_arg_in<hstring> fileName) noexcept override
    {
        try
        {
            this->shim().Add(*reinterpret_cast<const Windows::Web::Http::IHttpContent *>(&content), *reinterpret_cast<const hstring *>(&name), *reinterpret_cast<const hstring *>(&fileName));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpMultipartFormDataContentFactory> : produce_base<D, Windows::Web::Http::IHttpMultipartFormDataContentFactory>
{
    HRESULT __stdcall abi_CreateWithBoundary(abi_arg_in<hstring> boundary, abi_arg_out<Windows::Web::Http::IHttpContent> multipartFormDataContent) noexcept override
    {
        try
        {
            *multipartFormDataContent = detach(this->shim().CreateWithBoundary(*reinterpret_cast<const hstring *>(&boundary)));
            return S_OK;
        }
        catch (...)
        {
            *multipartFormDataContent = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpRequestMessage> : produce_base<D, Windows::Web::Http::IHttpRequestMessage>
{
    HRESULT __stdcall get_Content(abi_arg_out<Windows::Web::Http::IHttpContent> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Content());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Content(abi_arg_in<Windows::Web::Http::IHttpContent> value) noexcept override
    {
        try
        {
            this->shim().Content(*reinterpret_cast<const Windows::Web::Http::IHttpContent *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Headers(abi_arg_out<Windows::Web::Http::Headers::IHttpRequestHeaderCollection> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Headers());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Method(abi_arg_out<Windows::Web::Http::IHttpMethod> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Method());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Method(abi_arg_in<Windows::Web::Http::IHttpMethod> value) noexcept override
    {
        try
        {
            this->shim().Method(*reinterpret_cast<const Windows::Web::Http::HttpMethod *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Properties(abi_arg_out<Windows::Foundation::Collections::IMap<hstring, Windows::IInspectable>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Properties());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RequestUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RequestUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_RequestUri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            this->shim().RequestUri(*reinterpret_cast<const Windows::Foundation::Uri *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TransportInformation(abi_arg_out<Windows::Web::Http::IHttpTransportInformation> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TransportInformation());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpRequestMessageFactory> : produce_base<D, Windows::Web::Http::IHttpRequestMessageFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<Windows::Web::Http::IHttpMethod> method, abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Web::Http::IHttpRequestMessage> httpRequestMessage) noexcept override
    {
        try
        {
            *httpRequestMessage = detach(this->shim().Create(*reinterpret_cast<const Windows::Web::Http::HttpMethod *>(&method), *reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *httpRequestMessage = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpResponseMessage> : produce_base<D, Windows::Web::Http::IHttpResponseMessage>
{
    HRESULT __stdcall get_Content(abi_arg_out<Windows::Web::Http::IHttpContent> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Content());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Content(abi_arg_in<Windows::Web::Http::IHttpContent> value) noexcept override
    {
        try
        {
            this->shim().Content(*reinterpret_cast<const Windows::Web::Http::IHttpContent *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Headers(abi_arg_out<Windows::Web::Http::Headers::IHttpResponseHeaderCollection> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Headers());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsSuccessStatusCode(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsSuccessStatusCode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ReasonPhrase(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ReasonPhrase());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ReasonPhrase(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().ReasonPhrase(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RequestMessage(abi_arg_out<Windows::Web::Http::IHttpRequestMessage> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RequestMessage());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_RequestMessage(abi_arg_in<Windows::Web::Http::IHttpRequestMessage> value) noexcept override
    {
        try
        {
            this->shim().RequestMessage(*reinterpret_cast<const Windows::Web::Http::HttpRequestMessage *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Source(Windows::Web::Http::HttpResponseMessageSource * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Source());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Source(Windows::Web::Http::HttpResponseMessageSource value) noexcept override
    {
        try
        {
            this->shim().Source(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_StatusCode(Windows::Web::Http::HttpStatusCode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().StatusCode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_StatusCode(Windows::Web::Http::HttpStatusCode value) noexcept override
    {
        try
        {
            this->shim().StatusCode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Version(Windows::Web::Http::HttpVersion * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Version());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Version(Windows::Web::Http::HttpVersion value) noexcept override
    {
        try
        {
            this->shim().Version(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EnsureSuccessStatusCode(abi_arg_out<Windows::Web::Http::IHttpResponseMessage> httpResponseMessage) noexcept override
    {
        try
        {
            *httpResponseMessage = detach(this->shim().EnsureSuccessStatusCode());
            return S_OK;
        }
        catch (...)
        {
            *httpResponseMessage = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpResponseMessageFactory> : produce_base<D, Windows::Web::Http::IHttpResponseMessageFactory>
{
    HRESULT __stdcall abi_Create(Windows::Web::Http::HttpStatusCode statusCode, abi_arg_out<Windows::Web::Http::IHttpResponseMessage> httpResponseMessage) noexcept override
    {
        try
        {
            *httpResponseMessage = detach(this->shim().Create(statusCode));
            return S_OK;
        }
        catch (...)
        {
            *httpResponseMessage = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpStreamContentFactory> : produce_base<D, Windows::Web::Http::IHttpStreamContentFactory>
{
    HRESULT __stdcall abi_CreateFromInputStream(abi_arg_in<Windows::Storage::Streams::IInputStream> content, abi_arg_out<Windows::Web::Http::IHttpContent> streamContent) noexcept override
    {
        try
        {
            *streamContent = detach(this->shim().CreateFromInputStream(*reinterpret_cast<const Windows::Storage::Streams::IInputStream *>(&content)));
            return S_OK;
        }
        catch (...)
        {
            *streamContent = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpStringContentFactory> : produce_base<D, Windows::Web::Http::IHttpStringContentFactory>
{
    HRESULT __stdcall abi_CreateFromString(abi_arg_in<hstring> content, abi_arg_out<Windows::Web::Http::IHttpContent> stringContent) noexcept override
    {
        try
        {
            *stringContent = detach(this->shim().CreateFromString(*reinterpret_cast<const hstring *>(&content)));
            return S_OK;
        }
        catch (...)
        {
            *stringContent = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromStringWithEncoding(abi_arg_in<hstring> content, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Web::Http::IHttpContent> stringContent) noexcept override
    {
        try
        {
            *stringContent = detach(this->shim().CreateFromStringWithEncoding(*reinterpret_cast<const hstring *>(&content), encoding));
            return S_OK;
        }
        catch (...)
        {
            *stringContent = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromStringWithEncodingAndMediaType(abi_arg_in<hstring> content, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_in<hstring> mediaType, abi_arg_out<Windows::Web::Http::IHttpContent> stringContent) noexcept override
    {
        try
        {
            *stringContent = detach(this->shim().CreateFromStringWithEncodingAndMediaType(*reinterpret_cast<const hstring *>(&content), encoding, *reinterpret_cast<const hstring *>(&mediaType)));
            return S_OK;
        }
        catch (...)
        {
            *stringContent = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Http::IHttpTransportInformation> : produce_base<D, Windows::Web::Http::IHttpTransportInformation>
{
    HRESULT __stdcall get_ServerCertificate(abi_arg_out<Windows::Security::Cryptography::Certificates::ICertificate> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ServerCertificate());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ServerCertificateErrorSeverity(Windows::Networking::Sockets::SocketSslErrorSeverity * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ServerCertificateErrorSeverity());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ServerCertificateErrors(abi_arg_out<Windows::Foundation::Collections::IVectorView<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ServerCertificateErrors());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ServerIntermediateCertificates(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ServerIntermediateCertificates());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Web::Http {

template <typename D> Windows::Web::Http::HttpClient impl_IHttpClientFactory<D>::Create(const Windows::Web::Http::Filters::IHttpFilter & filter) const
{
    Windows::Web::Http::HttpClient client { nullptr };
    check_hresult(static_cast<const IHttpClientFactory &>(static_cast<const D &>(*this))->abi_Create(get(filter), put(client)));
    return client;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> impl_IHttpClient<D>::DeleteAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> operation;
    check_hresult(static_cast<const IHttpClient &>(static_cast<const D &>(*this))->abi_DeleteAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> impl_IHttpClient<D>::GetAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> operation;
    check_hresult(static_cast<const IHttpClient &>(static_cast<const D &>(*this))->abi_GetAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> impl_IHttpClient<D>::GetAsync(const Windows::Foundation::Uri & uri, Windows::Web::Http::HttpCompletionOption completionOption) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> operation;
    check_hresult(static_cast<const IHttpClient &>(static_cast<const D &>(*this))->abi_GetWithOptionAsync(get(uri), completionOption, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IBuffer, Windows::Web::Http::HttpProgress> impl_IHttpClient<D>::GetBufferAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IBuffer, Windows::Web::Http::HttpProgress> operation;
    check_hresult(static_cast<const IHttpClient &>(static_cast<const D &>(*this))->abi_GetBufferAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, Windows::Web::Http::HttpProgress> impl_IHttpClient<D>::GetInputStreamAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, Windows::Web::Http::HttpProgress> operation;
    check_hresult(static_cast<const IHttpClient &>(static_cast<const D &>(*this))->abi_GetInputStreamAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<hstring, Windows::Web::Http::HttpProgress> impl_IHttpClient<D>::GetStringAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncOperationWithProgress<hstring, Windows::Web::Http::HttpProgress> operation;
    check_hresult(static_cast<const IHttpClient &>(static_cast<const D &>(*this))->abi_GetStringAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> impl_IHttpClient<D>::PostAsync(const Windows::Foundation::Uri & uri, const Windows::Web::Http::IHttpContent & content) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> operation;
    check_hresult(static_cast<const IHttpClient &>(static_cast<const D &>(*this))->abi_PostAsync(get(uri), get(content), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> impl_IHttpClient<D>::PutAsync(const Windows::Foundation::Uri & uri, const Windows::Web::Http::IHttpContent & content) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> operation;
    check_hresult(static_cast<const IHttpClient &>(static_cast<const D &>(*this))->abi_PutAsync(get(uri), get(content), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> impl_IHttpClient<D>::SendRequestAsync(const Windows::Web::Http::HttpRequestMessage & request) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> operation;
    check_hresult(static_cast<const IHttpClient &>(static_cast<const D &>(*this))->abi_SendRequestAsync(get(request), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> impl_IHttpClient<D>::SendRequestAsync(const Windows::Web::Http::HttpRequestMessage & request, Windows::Web::Http::HttpCompletionOption completionOption) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Http::HttpResponseMessage, Windows::Web::Http::HttpProgress> operation;
    check_hresult(static_cast<const IHttpClient &>(static_cast<const D &>(*this))->abi_SendRequestWithOptionAsync(get(request), completionOption, put(operation)));
    return operation;
}

template <typename D> Windows::Web::Http::Headers::HttpRequestHeaderCollection impl_IHttpClient<D>::DefaultRequestHeaders() const
{
    Windows::Web::Http::Headers::HttpRequestHeaderCollection value { nullptr };
    check_hresult(static_cast<const IHttpClient &>(static_cast<const D &>(*this))->get_DefaultRequestHeaders(put(value)));
    return value;
}

template <typename D> Windows::Web::Http::Headers::HttpContentHeaderCollection impl_IHttpContent<D>::Headers() const
{
    Windows::Web::Http::Headers::HttpContentHeaderCollection value { nullptr };
    check_hresult(static_cast<const IHttpContent &>(static_cast<const D &>(*this))->get_Headers(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<uint64_t, uint64_t> impl_IHttpContent<D>::BufferAllAsync() const
{
    Windows::Foundation::IAsyncOperationWithProgress<uint64_t, uint64_t> operation;
    check_hresult(static_cast<const IHttpContent &>(static_cast<const D &>(*this))->abi_BufferAllAsync(put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IBuffer, uint64_t> impl_IHttpContent<D>::ReadAsBufferAsync() const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IBuffer, uint64_t> operation;
    check_hresult(static_cast<const IHttpContent &>(static_cast<const D &>(*this))->abi_ReadAsBufferAsync(put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, uint64_t> impl_IHttpContent<D>::ReadAsInputStreamAsync() const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, uint64_t> operation;
    check_hresult(static_cast<const IHttpContent &>(static_cast<const D &>(*this))->abi_ReadAsInputStreamAsync(put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<hstring, uint64_t> impl_IHttpContent<D>::ReadAsStringAsync() const
{
    Windows::Foundation::IAsyncOperationWithProgress<hstring, uint64_t> operation;
    check_hresult(static_cast<const IHttpContent &>(static_cast<const D &>(*this))->abi_ReadAsStringAsync(put(operation)));
    return operation;
}

template <typename D> bool impl_IHttpContent<D>::TryComputeLength(uint64_t & length) const
{
    bool succeeded {};
    check_hresult(static_cast<const IHttpContent &>(static_cast<const D &>(*this))->abi_TryComputeLength(&length, &succeeded));
    return succeeded;
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<uint64_t, uint64_t> impl_IHttpContent<D>::WriteToStreamAsync(const Windows::Storage::Streams::IOutputStream & outputStream) const
{
    Windows::Foundation::IAsyncOperationWithProgress<uint64_t, uint64_t> operation;
    check_hresult(static_cast<const IHttpContent &>(static_cast<const D &>(*this))->abi_WriteToStreamAsync(get(outputStream), put(operation)));
    return operation;
}

template <typename D> bool impl_IHttpCookieManager<D>::SetCookie(const Windows::Web::Http::HttpCookie & cookie) const
{
    bool replaced {};
    check_hresult(static_cast<const IHttpCookieManager &>(static_cast<const D &>(*this))->abi_SetCookie(get(cookie), &replaced));
    return replaced;
}

template <typename D> bool impl_IHttpCookieManager<D>::SetCookie(const Windows::Web::Http::HttpCookie & cookie, bool thirdParty) const
{
    bool replaced {};
    check_hresult(static_cast<const IHttpCookieManager &>(static_cast<const D &>(*this))->abi_SetCookieWithThirdParty(get(cookie), thirdParty, &replaced));
    return replaced;
}

template <typename D> void impl_IHttpCookieManager<D>::DeleteCookie(const Windows::Web::Http::HttpCookie & cookie) const
{
    check_hresult(static_cast<const IHttpCookieManager &>(static_cast<const D &>(*this))->abi_DeleteCookie(get(cookie)));
}

template <typename D> Windows::Web::Http::HttpCookieCollection impl_IHttpCookieManager<D>::GetCookies(const Windows::Foundation::Uri & uri) const
{
    Windows::Web::Http::HttpCookieCollection value { nullptr };
    check_hresult(static_cast<const IHttpCookieManager &>(static_cast<const D &>(*this))->abi_GetCookies(get(uri), put(value)));
    return value;
}

template <typename D> Windows::Web::Http::HttpCookie impl_IHttpCookieFactory<D>::Create(hstring_ref name, hstring_ref domain, hstring_ref path) const
{
    Windows::Web::Http::HttpCookie cookie { nullptr };
    check_hresult(static_cast<const IHttpCookieFactory &>(static_cast<const D &>(*this))->abi_Create(get(name), get(domain), get(path), put(cookie)));
    return cookie;
}

template <typename D> hstring impl_IHttpCookie<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const IHttpCookie &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> hstring impl_IHttpCookie<D>::Domain() const
{
    hstring value;
    check_hresult(static_cast<const IHttpCookie &>(static_cast<const D &>(*this))->get_Domain(put(value)));
    return value;
}

template <typename D> hstring impl_IHttpCookie<D>::Path() const
{
    hstring value;
    check_hresult(static_cast<const IHttpCookie &>(static_cast<const D &>(*this))->get_Path(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::DateTime> impl_IHttpCookie<D>::Expires() const
{
    Windows::Foundation::IReference<Windows::Foundation::DateTime> value;
    check_hresult(static_cast<const IHttpCookie &>(static_cast<const D &>(*this))->get_Expires(put(value)));
    return value;
}

template <typename D> void impl_IHttpCookie<D>::Expires(const Windows::Foundation::IReference<Windows::Foundation::DateTime> & value) const
{
    check_hresult(static_cast<const IHttpCookie &>(static_cast<const D &>(*this))->put_Expires(get(value)));
}

template <typename D> bool impl_IHttpCookie<D>::HttpOnly() const
{
    bool value {};
    check_hresult(static_cast<const IHttpCookie &>(static_cast<const D &>(*this))->get_HttpOnly(&value));
    return value;
}

template <typename D> void impl_IHttpCookie<D>::HttpOnly(bool value) const
{
    check_hresult(static_cast<const IHttpCookie &>(static_cast<const D &>(*this))->put_HttpOnly(value));
}

template <typename D> bool impl_IHttpCookie<D>::Secure() const
{
    bool value {};
    check_hresult(static_cast<const IHttpCookie &>(static_cast<const D &>(*this))->get_Secure(&value));
    return value;
}

template <typename D> void impl_IHttpCookie<D>::Secure(bool value) const
{
    check_hresult(static_cast<const IHttpCookie &>(static_cast<const D &>(*this))->put_Secure(value));
}

template <typename D> hstring impl_IHttpCookie<D>::Value() const
{
    hstring value;
    check_hresult(static_cast<const IHttpCookie &>(static_cast<const D &>(*this))->get_Value(put(value)));
    return value;
}

template <typename D> void impl_IHttpCookie<D>::Value(hstring_ref value) const
{
    check_hresult(static_cast<const IHttpCookie &>(static_cast<const D &>(*this))->put_Value(get(value)));
}

template <typename D> Windows::Web::Http::HttpMethod impl_IHttpMethodStatics<D>::Delete() const
{
    Windows::Web::Http::HttpMethod value { nullptr };
    check_hresult(static_cast<const IHttpMethodStatics &>(static_cast<const D &>(*this))->get_Delete(put(value)));
    return value;
}

template <typename D> Windows::Web::Http::HttpMethod impl_IHttpMethodStatics<D>::Get() const
{
    Windows::Web::Http::HttpMethod value { nullptr };
    check_hresult(static_cast<const IHttpMethodStatics &>(static_cast<const D &>(*this))->get_Get(put(value)));
    return value;
}

template <typename D> Windows::Web::Http::HttpMethod impl_IHttpMethodStatics<D>::Head() const
{
    Windows::Web::Http::HttpMethod value { nullptr };
    check_hresult(static_cast<const IHttpMethodStatics &>(static_cast<const D &>(*this))->get_Head(put(value)));
    return value;
}

template <typename D> Windows::Web::Http::HttpMethod impl_IHttpMethodStatics<D>::Options() const
{
    Windows::Web::Http::HttpMethod value { nullptr };
    check_hresult(static_cast<const IHttpMethodStatics &>(static_cast<const D &>(*this))->get_Options(put(value)));
    return value;
}

template <typename D> Windows::Web::Http::HttpMethod impl_IHttpMethodStatics<D>::Patch() const
{
    Windows::Web::Http::HttpMethod value { nullptr };
    check_hresult(static_cast<const IHttpMethodStatics &>(static_cast<const D &>(*this))->get_Patch(put(value)));
    return value;
}

template <typename D> Windows::Web::Http::HttpMethod impl_IHttpMethodStatics<D>::Post() const
{
    Windows::Web::Http::HttpMethod value { nullptr };
    check_hresult(static_cast<const IHttpMethodStatics &>(static_cast<const D &>(*this))->get_Post(put(value)));
    return value;
}

template <typename D> Windows::Web::Http::HttpMethod impl_IHttpMethodStatics<D>::Put() const
{
    Windows::Web::Http::HttpMethod value { nullptr };
    check_hresult(static_cast<const IHttpMethodStatics &>(static_cast<const D &>(*this))->get_Put(put(value)));
    return value;
}

template <typename D> Windows::Web::Http::HttpMethod impl_IHttpMethodFactory<D>::Create(hstring_ref method) const
{
    Windows::Web::Http::HttpMethod httpMethod { nullptr };
    check_hresult(static_cast<const IHttpMethodFactory &>(static_cast<const D &>(*this))->abi_Create(get(method), put(httpMethod)));
    return httpMethod;
}

template <typename D> hstring impl_IHttpMethod<D>::Method() const
{
    hstring value;
    check_hresult(static_cast<const IHttpMethod &>(static_cast<const D &>(*this))->get_Method(put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::Certificate impl_IHttpTransportInformation<D>::ServerCertificate() const
{
    Windows::Security::Cryptography::Certificates::Certificate value { nullptr };
    check_hresult(static_cast<const IHttpTransportInformation &>(static_cast<const D &>(*this))->get_ServerCertificate(put(value)));
    return value;
}

template <typename D> Windows::Networking::Sockets::SocketSslErrorSeverity impl_IHttpTransportInformation<D>::ServerCertificateErrorSeverity() const
{
    Windows::Networking::Sockets::SocketSslErrorSeverity value {};
    check_hresult(static_cast<const IHttpTransportInformation &>(static_cast<const D &>(*this))->get_ServerCertificateErrorSeverity(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> impl_IHttpTransportInformation<D>::ServerCertificateErrors() const
{
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Security::Cryptography::Certificates::ChainValidationResult> value;
    check_hresult(static_cast<const IHttpTransportInformation &>(static_cast<const D &>(*this))->get_ServerCertificateErrors(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> impl_IHttpTransportInformation<D>::ServerIntermediateCertificates() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> value;
    check_hresult(static_cast<const IHttpTransportInformation &>(static_cast<const D &>(*this))->get_ServerIntermediateCertificates(put(value)));
    return value;
}

template <typename D> Windows::Web::Http::HttpRequestMessage impl_IHttpRequestMessageFactory<D>::Create(const Windows::Web::Http::HttpMethod & method, const Windows::Foundation::Uri & uri) const
{
    Windows::Web::Http::HttpRequestMessage httpRequestMessage { nullptr };
    check_hresult(static_cast<const IHttpRequestMessageFactory &>(static_cast<const D &>(*this))->abi_Create(get(method), get(uri), put(httpRequestMessage)));
    return httpRequestMessage;
}

template <typename D> Windows::Web::Http::IHttpContent impl_IHttpRequestMessage<D>::Content() const
{
    Windows::Web::Http::IHttpContent value;
    check_hresult(static_cast<const IHttpRequestMessage &>(static_cast<const D &>(*this))->get_Content(put(value)));
    return value;
}

template <typename D> void impl_IHttpRequestMessage<D>::Content(const Windows::Web::Http::IHttpContent & value) const
{
    check_hresult(static_cast<const IHttpRequestMessage &>(static_cast<const D &>(*this))->put_Content(get(value)));
}

template <typename D> Windows::Web::Http::Headers::HttpRequestHeaderCollection impl_IHttpRequestMessage<D>::Headers() const
{
    Windows::Web::Http::Headers::HttpRequestHeaderCollection value { nullptr };
    check_hresult(static_cast<const IHttpRequestMessage &>(static_cast<const D &>(*this))->get_Headers(put(value)));
    return value;
}

template <typename D> Windows::Web::Http::HttpMethod impl_IHttpRequestMessage<D>::Method() const
{
    Windows::Web::Http::HttpMethod value { nullptr };
    check_hresult(static_cast<const IHttpRequestMessage &>(static_cast<const D &>(*this))->get_Method(put(value)));
    return value;
}

template <typename D> void impl_IHttpRequestMessage<D>::Method(const Windows::Web::Http::HttpMethod & value) const
{
    check_hresult(static_cast<const IHttpRequestMessage &>(static_cast<const D &>(*this))->put_Method(get(value)));
}

template <typename D> Windows::Foundation::Collections::IMap<hstring, Windows::IInspectable> impl_IHttpRequestMessage<D>::Properties() const
{
    Windows::Foundation::Collections::IMap<hstring, Windows::IInspectable> value;
    check_hresult(static_cast<const IHttpRequestMessage &>(static_cast<const D &>(*this))->get_Properties(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Uri impl_IHttpRequestMessage<D>::RequestUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const IHttpRequestMessage &>(static_cast<const D &>(*this))->get_RequestUri(put(value)));
    return value;
}

template <typename D> void impl_IHttpRequestMessage<D>::RequestUri(const Windows::Foundation::Uri & value) const
{
    check_hresult(static_cast<const IHttpRequestMessage &>(static_cast<const D &>(*this))->put_RequestUri(get(value)));
}

template <typename D> Windows::Web::Http::HttpTransportInformation impl_IHttpRequestMessage<D>::TransportInformation() const
{
    Windows::Web::Http::HttpTransportInformation value { nullptr };
    check_hresult(static_cast<const IHttpRequestMessage &>(static_cast<const D &>(*this))->get_TransportInformation(put(value)));
    return value;
}

template <typename D> Windows::Web::Http::HttpResponseMessage impl_IHttpResponseMessageFactory<D>::Create(Windows::Web::Http::HttpStatusCode statusCode) const
{
    Windows::Web::Http::HttpResponseMessage httpResponseMessage { nullptr };
    check_hresult(static_cast<const IHttpResponseMessageFactory &>(static_cast<const D &>(*this))->abi_Create(statusCode, put(httpResponseMessage)));
    return httpResponseMessage;
}

template <typename D> Windows::Web::Http::IHttpContent impl_IHttpResponseMessage<D>::Content() const
{
    Windows::Web::Http::IHttpContent value;
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->get_Content(put(value)));
    return value;
}

template <typename D> void impl_IHttpResponseMessage<D>::Content(const Windows::Web::Http::IHttpContent & value) const
{
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->put_Content(get(value)));
}

template <typename D> Windows::Web::Http::Headers::HttpResponseHeaderCollection impl_IHttpResponseMessage<D>::Headers() const
{
    Windows::Web::Http::Headers::HttpResponseHeaderCollection value { nullptr };
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->get_Headers(put(value)));
    return value;
}

template <typename D> bool impl_IHttpResponseMessage<D>::IsSuccessStatusCode() const
{
    bool value {};
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->get_IsSuccessStatusCode(&value));
    return value;
}

template <typename D> hstring impl_IHttpResponseMessage<D>::ReasonPhrase() const
{
    hstring value;
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->get_ReasonPhrase(put(value)));
    return value;
}

template <typename D> void impl_IHttpResponseMessage<D>::ReasonPhrase(hstring_ref value) const
{
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->put_ReasonPhrase(get(value)));
}

template <typename D> Windows::Web::Http::HttpRequestMessage impl_IHttpResponseMessage<D>::RequestMessage() const
{
    Windows::Web::Http::HttpRequestMessage value { nullptr };
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->get_RequestMessage(put(value)));
    return value;
}

template <typename D> void impl_IHttpResponseMessage<D>::RequestMessage(const Windows::Web::Http::HttpRequestMessage & value) const
{
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->put_RequestMessage(get(value)));
}

template <typename D> Windows::Web::Http::HttpResponseMessageSource impl_IHttpResponseMessage<D>::Source() const
{
    Windows::Web::Http::HttpResponseMessageSource value {};
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->get_Source(&value));
    return value;
}

template <typename D> void impl_IHttpResponseMessage<D>::Source(Windows::Web::Http::HttpResponseMessageSource value) const
{
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->put_Source(value));
}

template <typename D> Windows::Web::Http::HttpStatusCode impl_IHttpResponseMessage<D>::StatusCode() const
{
    Windows::Web::Http::HttpStatusCode value {};
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->get_StatusCode(&value));
    return value;
}

template <typename D> void impl_IHttpResponseMessage<D>::StatusCode(Windows::Web::Http::HttpStatusCode value) const
{
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->put_StatusCode(value));
}

template <typename D> Windows::Web::Http::HttpVersion impl_IHttpResponseMessage<D>::Version() const
{
    Windows::Web::Http::HttpVersion value {};
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->get_Version(&value));
    return value;
}

template <typename D> void impl_IHttpResponseMessage<D>::Version(Windows::Web::Http::HttpVersion value) const
{
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->put_Version(value));
}

template <typename D> Windows::Web::Http::HttpResponseMessage impl_IHttpResponseMessage<D>::EnsureSuccessStatusCode() const
{
    Windows::Web::Http::HttpResponseMessage httpResponseMessage { nullptr };
    check_hresult(static_cast<const IHttpResponseMessage &>(static_cast<const D &>(*this))->abi_EnsureSuccessStatusCode(put(httpResponseMessage)));
    return httpResponseMessage;
}

template <typename D> Windows::Web::Http::HttpStringContent impl_IHttpStringContentFactory<D>::CreateFromString(hstring_ref content) const
{
    Windows::Web::Http::HttpStringContent stringContent { nullptr };
    check_hresult(static_cast<const IHttpStringContentFactory &>(static_cast<const D &>(*this))->abi_CreateFromString(get(content), put(stringContent)));
    return stringContent;
}

template <typename D> Windows::Web::Http::HttpStringContent impl_IHttpStringContentFactory<D>::CreateFromStringWithEncoding(hstring_ref content, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Web::Http::HttpStringContent stringContent { nullptr };
    check_hresult(static_cast<const IHttpStringContentFactory &>(static_cast<const D &>(*this))->abi_CreateFromStringWithEncoding(get(content), encoding, put(stringContent)));
    return stringContent;
}

template <typename D> Windows::Web::Http::HttpStringContent impl_IHttpStringContentFactory<D>::CreateFromStringWithEncodingAndMediaType(hstring_ref content, Windows::Storage::Streams::UnicodeEncoding encoding, hstring_ref mediaType) const
{
    Windows::Web::Http::HttpStringContent stringContent { nullptr };
    check_hresult(static_cast<const IHttpStringContentFactory &>(static_cast<const D &>(*this))->abi_CreateFromStringWithEncodingAndMediaType(get(content), encoding, get(mediaType), put(stringContent)));
    return stringContent;
}

template <typename D> Windows::Web::Http::HttpBufferContent impl_IHttpBufferContentFactory<D>::CreateFromBuffer(const Windows::Storage::Streams::IBuffer & content) const
{
    Windows::Web::Http::HttpBufferContent bufferContent { nullptr };
    check_hresult(static_cast<const IHttpBufferContentFactory &>(static_cast<const D &>(*this))->abi_CreateFromBuffer(get(content), put(bufferContent)));
    return bufferContent;
}

template <typename D> Windows::Web::Http::HttpBufferContent impl_IHttpBufferContentFactory<D>::CreateFromBufferWithOffset(const Windows::Storage::Streams::IBuffer & content, uint32_t offset, uint32_t count) const
{
    Windows::Web::Http::HttpBufferContent bufferContent { nullptr };
    check_hresult(static_cast<const IHttpBufferContentFactory &>(static_cast<const D &>(*this))->abi_CreateFromBufferWithOffset(get(content), offset, count, put(bufferContent)));
    return bufferContent;
}

template <typename D> Windows::Web::Http::HttpStreamContent impl_IHttpStreamContentFactory<D>::CreateFromInputStream(const Windows::Storage::Streams::IInputStream & content) const
{
    Windows::Web::Http::HttpStreamContent streamContent { nullptr };
    check_hresult(static_cast<const IHttpStreamContentFactory &>(static_cast<const D &>(*this))->abi_CreateFromInputStream(get(content), put(streamContent)));
    return streamContent;
}

template <typename D> Windows::Web::Http::HttpFormUrlEncodedContent impl_IHttpFormUrlEncodedContentFactory<D>::Create(const Windows::Foundation::Collections::IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>> & content) const
{
    Windows::Web::Http::HttpFormUrlEncodedContent formUrlEncodedContent { nullptr };
    check_hresult(static_cast<const IHttpFormUrlEncodedContentFactory &>(static_cast<const D &>(*this))->abi_Create(get(content), put(formUrlEncodedContent)));
    return formUrlEncodedContent;
}

template <typename D> Windows::Web::Http::HttpMultipartContent impl_IHttpMultipartContentFactory<D>::CreateWithSubtype(hstring_ref subtype) const
{
    Windows::Web::Http::HttpMultipartContent multipartContent { nullptr };
    check_hresult(static_cast<const IHttpMultipartContentFactory &>(static_cast<const D &>(*this))->abi_CreateWithSubtype(get(subtype), put(multipartContent)));
    return multipartContent;
}

template <typename D> Windows::Web::Http::HttpMultipartContent impl_IHttpMultipartContentFactory<D>::CreateWithSubtypeAndBoundary(hstring_ref subtype, hstring_ref boundary) const
{
    Windows::Web::Http::HttpMultipartContent multipartContent { nullptr };
    check_hresult(static_cast<const IHttpMultipartContentFactory &>(static_cast<const D &>(*this))->abi_CreateWithSubtypeAndBoundary(get(subtype), get(boundary), put(multipartContent)));
    return multipartContent;
}

template <typename D> void impl_IHttpMultipartContent<D>::Add(const Windows::Web::Http::IHttpContent & content) const
{
    check_hresult(static_cast<const IHttpMultipartContent &>(static_cast<const D &>(*this))->abi_Add(get(content)));
}

template <typename D> Windows::Web::Http::HttpMultipartFormDataContent impl_IHttpMultipartFormDataContentFactory<D>::CreateWithBoundary(hstring_ref boundary) const
{
    Windows::Web::Http::HttpMultipartFormDataContent multipartFormDataContent { nullptr };
    check_hresult(static_cast<const IHttpMultipartFormDataContentFactory &>(static_cast<const D &>(*this))->abi_CreateWithBoundary(get(boundary), put(multipartFormDataContent)));
    return multipartFormDataContent;
}

template <typename D> void impl_IHttpMultipartFormDataContent<D>::Add(const Windows::Web::Http::IHttpContent & content) const
{
    check_hresult(static_cast<const IHttpMultipartFormDataContent &>(static_cast<const D &>(*this))->abi_Add(get(content)));
}

template <typename D> void impl_IHttpMultipartFormDataContent<D>::Add(const Windows::Web::Http::IHttpContent & content, hstring_ref name) const
{
    check_hresult(static_cast<const IHttpMultipartFormDataContent &>(static_cast<const D &>(*this))->abi_AddWithName(get(content), get(name)));
}

template <typename D> void impl_IHttpMultipartFormDataContent<D>::Add(const Windows::Web::Http::IHttpContent & content, hstring_ref name, hstring_ref fileName) const
{
    check_hresult(static_cast<const IHttpMultipartFormDataContent &>(static_cast<const D &>(*this))->abi_AddWithNameAndFileName(get(content), get(name), get(fileName)));
}

inline HttpBufferContent::HttpBufferContent(const Windows::Storage::Streams::IBuffer & content) :
    HttpBufferContent(get_activation_factory<HttpBufferContent, IHttpBufferContentFactory>().CreateFromBuffer(content))
{}

inline HttpBufferContent::HttpBufferContent(const Windows::Storage::Streams::IBuffer & content, uint32_t offset, uint32_t count) :
    HttpBufferContent(get_activation_factory<HttpBufferContent, IHttpBufferContentFactory>().CreateFromBufferWithOffset(content, offset, count))
{}

inline HttpClient::HttpClient() :
    HttpClient(activate_instance<HttpClient>())
{}

inline HttpClient::HttpClient(const Windows::Web::Http::Filters::IHttpFilter & filter) :
    HttpClient(get_activation_factory<HttpClient, IHttpClientFactory>().Create(filter))
{}

inline HttpCookie::HttpCookie(hstring_ref name, hstring_ref domain, hstring_ref path) :
    HttpCookie(get_activation_factory<HttpCookie, IHttpCookieFactory>().Create(name, domain, path))
{}

inline HttpFormUrlEncodedContent::HttpFormUrlEncodedContent(const Windows::Foundation::Collections::IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>> & content) :
    HttpFormUrlEncodedContent(get_activation_factory<HttpFormUrlEncodedContent, IHttpFormUrlEncodedContentFactory>().Create(content))
{}

inline HttpMethod::HttpMethod(hstring_ref method) :
    HttpMethod(get_activation_factory<HttpMethod, IHttpMethodFactory>().Create(method))
{}

inline Windows::Web::Http::HttpMethod HttpMethod::Delete()
{
    return get_activation_factory<HttpMethod, IHttpMethodStatics>().Delete();
}

inline Windows::Web::Http::HttpMethod HttpMethod::Get()
{
    return get_activation_factory<HttpMethod, IHttpMethodStatics>().Get();
}

inline Windows::Web::Http::HttpMethod HttpMethod::Head()
{
    return get_activation_factory<HttpMethod, IHttpMethodStatics>().Head();
}

inline Windows::Web::Http::HttpMethod HttpMethod::Options()
{
    return get_activation_factory<HttpMethod, IHttpMethodStatics>().Options();
}

inline Windows::Web::Http::HttpMethod HttpMethod::Patch()
{
    return get_activation_factory<HttpMethod, IHttpMethodStatics>().Patch();
}

inline Windows::Web::Http::HttpMethod HttpMethod::Post()
{
    return get_activation_factory<HttpMethod, IHttpMethodStatics>().Post();
}

inline Windows::Web::Http::HttpMethod HttpMethod::Put()
{
    return get_activation_factory<HttpMethod, IHttpMethodStatics>().Put();
}

inline HttpMultipartContent::HttpMultipartContent() :
    HttpMultipartContent(activate_instance<HttpMultipartContent>())
{}

inline HttpMultipartContent::HttpMultipartContent(hstring_ref subtype) :
    HttpMultipartContent(get_activation_factory<HttpMultipartContent, IHttpMultipartContentFactory>().CreateWithSubtype(subtype))
{}

inline HttpMultipartContent::HttpMultipartContent(hstring_ref subtype, hstring_ref boundary) :
    HttpMultipartContent(get_activation_factory<HttpMultipartContent, IHttpMultipartContentFactory>().CreateWithSubtypeAndBoundary(subtype, boundary))
{}

inline HttpMultipartFormDataContent::HttpMultipartFormDataContent() :
    HttpMultipartFormDataContent(activate_instance<HttpMultipartFormDataContent>())
{}

inline HttpMultipartFormDataContent::HttpMultipartFormDataContent(hstring_ref boundary) :
    HttpMultipartFormDataContent(get_activation_factory<HttpMultipartFormDataContent, IHttpMultipartFormDataContentFactory>().CreateWithBoundary(boundary))
{}

inline HttpRequestMessage::HttpRequestMessage() :
    HttpRequestMessage(activate_instance<HttpRequestMessage>())
{}

inline HttpRequestMessage::HttpRequestMessage(const Windows::Web::Http::HttpMethod & method, const Windows::Foundation::Uri & uri) :
    HttpRequestMessage(get_activation_factory<HttpRequestMessage, IHttpRequestMessageFactory>().Create(method, uri))
{}

inline HttpResponseMessage::HttpResponseMessage() :
    HttpResponseMessage(activate_instance<HttpResponseMessage>())
{}

inline HttpResponseMessage::HttpResponseMessage(Windows::Web::Http::HttpStatusCode statusCode) :
    HttpResponseMessage(get_activation_factory<HttpResponseMessage, IHttpResponseMessageFactory>().Create(statusCode))
{}

inline HttpStreamContent::HttpStreamContent(const Windows::Storage::Streams::IInputStream & content) :
    HttpStreamContent(get_activation_factory<HttpStreamContent, IHttpStreamContentFactory>().CreateFromInputStream(content))
{}

inline HttpStringContent::HttpStringContent(hstring_ref content) :
    HttpStringContent(get_activation_factory<HttpStringContent, IHttpStringContentFactory>().CreateFromString(content))
{}

inline HttpStringContent::HttpStringContent(hstring_ref content, Windows::Storage::Streams::UnicodeEncoding encoding) :
    HttpStringContent(get_activation_factory<HttpStringContent, IHttpStringContentFactory>().CreateFromStringWithEncoding(content, encoding))
{}

inline HttpStringContent::HttpStringContent(hstring_ref content, Windows::Storage::Streams::UnicodeEncoding encoding, hstring_ref mediaType) :
    HttpStringContent(get_activation_factory<HttpStringContent, IHttpStringContentFactory>().CreateFromStringWithEncodingAndMediaType(content, encoding, mediaType))
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Input.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.UI.Input.1.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_b62d7f11_c7b1_5bf0_a347_3366252db4ce
#define WINRT_GENERIC_b62d7f11_c7b1_5bf0_a347_3366252db4ce
template <> struct __declspec(uuid("b62d7f11-c7b1-5bf0-a347-3366252db4ce")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::EdgeGesture, Windows::UI::Input::EdgeGestureEventArgs> : impl_TypedEventHandler<Windows::UI::Input::EdgeGesture, Windows::UI::Input::EdgeGestureEventArgs> {};
#endif

#ifndef WINRT_GENERIC_719cc2ba_3e76_5def_9f1a_38d85a145ea8
#define WINRT_GENERIC_719cc2ba_3e76_5def_9f1a_38d85a145ea8
template <> struct __declspec(uuid("719cc2ba-3e76-5def-9f1a-38d85a145ea8")) __declspec(novtable) IReference<float> : impl_IReference<float> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_dfa655cf_fde7_5048_b4bf_c909231b7edb
#define WINRT_GENERIC_dfa655cf_fde7_5048_b4bf_c909231b7edb
template <> struct __declspec(uuid("dfa655cf-fde7-5048-b4bf-c909231b7edb")) __declspec(novtable) IVector<Windows::UI::Input::PointerPoint> : impl_IVector<Windows::UI::Input::PointerPoint> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_2c1caf11_9d6f_5e0f_a9ea_4c7c734d73d6
#define WINRT_GENERIC_2c1caf11_9d6f_5e0f_a9ea_4c7c734d73d6
template <> struct __declspec(uuid("2c1caf11-9d6f-5e0f-a9ea-4c7c734d73d6")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::KeyboardDeliveryInterceptor, Windows::UI::Core::KeyEventArgs> : impl_TypedEventHandler<Windows::UI::Input::KeyboardDeliveryInterceptor, Windows::UI::Core::KeyEventArgs> {};
#endif

#ifndef WINRT_GENERIC_27f3ad57_8994_5712_8b83_a93ba17c03c2
#define WINRT_GENERIC_27f3ad57_8994_5712_8b83_a93ba17c03c2
template <> struct __declspec(uuid("27f3ad57-8994-5712-8b83-a93ba17c03c2")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::TappedEventArgs> : impl_TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::TappedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_8420d242_ba34_5b17_92f3_8f767f1d0de4
#define WINRT_GENERIC_8420d242_ba34_5b17_92f3_8f767f1d0de4
template <> struct __declspec(uuid("8420d242-ba34-5b17-92f3-8f767f1d0de4")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::RightTappedEventArgs> : impl_TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::RightTappedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_0027bdf5_6948_53f7_afbe_d4d8fe500feb
#define WINRT_GENERIC_0027bdf5_6948_53f7_afbe_d4d8fe500feb
template <> struct __declspec(uuid("0027bdf5-6948-53f7-afbe-d4d8fe500feb")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::HoldingEventArgs> : impl_TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::HoldingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_be7cca42_98dd_5d72_9e91_976113d7985e
#define WINRT_GENERIC_be7cca42_98dd_5d72_9e91_976113d7985e
template <> struct __declspec(uuid("be7cca42-98dd-5d72-9e91-976113d7985e")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::DraggingEventArgs> : impl_TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::DraggingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_110d75c8_ba5e_5462_8b2d_4a1582574b61
#define WINRT_GENERIC_110d75c8_ba5e_5462_8b2d_4a1582574b61
template <> struct __declspec(uuid("110d75c8-ba5e-5462-8b2d-4a1582574b61")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationStartedEventArgs> : impl_TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationStartedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_eb5216f5_020a_5e40_9c4b_48912c690e2d
#define WINRT_GENERIC_eb5216f5_020a_5e40_9c4b_48912c690e2d
template <> struct __declspec(uuid("eb5216f5-020a-5e40-9c4b-48912c690e2d")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationUpdatedEventArgs> : impl_TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationUpdatedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_350a72ab_34a5_5193_913d_3d4c5983842c
#define WINRT_GENERIC_350a72ab_34a5_5193_913d_3d4c5983842c
template <> struct __declspec(uuid("350a72ab-34a5-5193-913d-3d4c5983842c")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationInertiaStartingEventArgs> : impl_TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationInertiaStartingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_c24f5605_3059_52cc_bdf3_7098146d34d7
#define WINRT_GENERIC_c24f5605_3059_52cc_bdf3_7098146d34d7
template <> struct __declspec(uuid("c24f5605-3059-52cc-bdf3-7098146d34d7")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationCompletedEventArgs> : impl_TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationCompletedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_1fc1eb70_0c26_5cf0_9e50_843a34083613
#define WINRT_GENERIC_1fc1eb70_0c26_5cf0_9e50_843a34083613
template <> struct __declspec(uuid("1fc1eb70-0c26-5cf0-9e50-843a34083613")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::CrossSlidingEventArgs> : impl_TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::CrossSlidingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_1f2d584e_3ad8_5049_b451_3a44a102fa82
#define WINRT_GENERIC_1f2d584e_3ad8_5049_b451_3a44a102fa82
template <> struct __declspec(uuid("1f2d584e-3ad8-5049-b451-3a44a102fa82")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerScreenContactStartedEventArgs> : impl_TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerScreenContactStartedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_5e0f93b1_c2f2_5351_82aa_6cf5f4c2d068
#define WINRT_GENERIC_5e0f93b1_c2f2_5351_82aa_6cf5f4c2d068
template <> struct __declspec(uuid("5e0f93b1-c2f2-5351-82aa-6cf5f4c2d068")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::RadialController, Windows::IInspectable> : impl_TypedEventHandler<Windows::UI::Input::RadialController, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_30579e67_fb4f_5d38_83b4_9cb610090def
#define WINRT_GENERIC_30579e67_fb4f_5d38_83b4_9cb610090def
template <> struct __declspec(uuid("30579e67-fb4f-5d38-83b4-9cb610090def")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerScreenContactContinuedEventArgs> : impl_TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerScreenContactContinuedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_8fe73ac9_8a36_5152_815d_03310ee8bf85
#define WINRT_GENERIC_8fe73ac9_8a36_5152_815d_03310ee8bf85
template <> struct __declspec(uuid("8fe73ac9-8a36-5152-815d-03310ee8bf85")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerRotationChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerRotationChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_d09d9fcc_edb8_56c0_856d_70e477a9ddf3
#define WINRT_GENERIC_d09d9fcc_edb8_56c0_856d_70e477a9ddf3
template <> struct __declspec(uuid("d09d9fcc-edb8-56c0-856d-70e477a9ddf3")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerButtonClickedEventArgs> : impl_TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerButtonClickedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_4ec5f3fd_b217_5452_a2bd_9725ce9f6675
#define WINRT_GENERIC_4ec5f3fd_b217_5452_a2bd_9725ce9f6675
template <> struct __declspec(uuid("4ec5f3fd-b217-5452-a2bd-9725ce9f6675")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerControlAcquiredEventArgs> : impl_TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerControlAcquiredEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_bfde94e7_70f8_5cc0_98e2_8c0f8ce524ab
#define WINRT_GENERIC_bfde94e7_70f8_5cc0_98e2_8c0f8ce524ab
template <> struct __declspec(uuid("bfde94e7-70f8-5cc0-98e2-8c0f8ce524ab")) __declspec(novtable) IVector<Windows::UI::Input::RadialControllerMenuItem> : impl_IVector<Windows::UI::Input::RadialControllerMenuItem> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_5c90d6fb_e4f8_5be2_8544_9de33f82c41a
#define WINRT_GENERIC_5c90d6fb_e4f8_5be2_8544_9de33f82c41a
template <> struct __declspec(uuid("5c90d6fb-e4f8-5be2-8544-9de33f82c41a")) __declspec(novtable) TypedEventHandler<Windows::UI::Input::RadialControllerMenuItem, Windows::IInspectable> : impl_TypedEventHandler<Windows::UI::Input::RadialControllerMenuItem, Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_4516010f_fd98_5e1d_bf3f_aeaf79f1f3da
#define WINRT_GENERIC_4516010f_fd98_5e1d_bf3f_aeaf79f1f3da
template <> struct __declspec(uuid("4516010f-fd98-5e1d-bf3f-aeaf79f1f3da")) __declspec(novtable) IIterable<winrt::Windows::UI::Input::RadialControllerSystemMenuItemKind> : impl_IIterable<winrt::Windows::UI::Input::RadialControllerSystemMenuItemKind> {};
#endif

#ifndef WINRT_GENERIC_721fe01c_5ad4_5262_b078_3ab345105db8
#define WINRT_GENERIC_721fe01c_5ad4_5262_b078_3ab345105db8
template <> struct __declspec(uuid("721fe01c-5ad4-5262-b078-3ab345105db8")) __declspec(novtable) IIterator<Windows::UI::Input::PointerPoint> : impl_IIterator<Windows::UI::Input::PointerPoint> {};
#endif

#ifndef WINRT_GENERIC_f6f2cba6_7076_5b59_9631_f6ac32b57695
#define WINRT_GENERIC_f6f2cba6_7076_5b59_9631_f6ac32b57695
template <> struct __declspec(uuid("f6f2cba6-7076-5b59-9631-f6ac32b57695")) __declspec(novtable) IIterable<Windows::UI::Input::PointerPoint> : impl_IIterable<Windows::UI::Input::PointerPoint> {};
#endif

#ifndef WINRT_GENERIC_f0f57411_7786_5174_8752_4c5e834b6da2
#define WINRT_GENERIC_f0f57411_7786_5174_8752_4c5e834b6da2
template <> struct __declspec(uuid("f0f57411-7786-5174-8752-4c5e834b6da2")) __declspec(novtable) IVectorView<Windows::UI::Input::PointerPoint> : impl_IVectorView<Windows::UI::Input::PointerPoint> {};
#endif

#ifndef WINRT_GENERIC_5a773e24_d968_535e_969a_76ce3602a637
#define WINRT_GENERIC_5a773e24_d968_535e_969a_76ce3602a637
template <> struct __declspec(uuid("5a773e24-d968-535e-969a-76ce3602a637")) __declspec(novtable) IIterator<Windows::UI::Input::RadialControllerMenuItem> : impl_IIterator<Windows::UI::Input::RadialControllerMenuItem> {};
#endif

#ifndef WINRT_GENERIC_1aa752b3_dc11_5bce_b2b9_cd1bf8f235be
#define WINRT_GENERIC_1aa752b3_dc11_5bce_b2b9_cd1bf8f235be
template <> struct __declspec(uuid("1aa752b3-dc11-5bce-b2b9-cd1bf8f235be")) __declspec(novtable) IIterable<Windows::UI::Input::RadialControllerMenuItem> : impl_IIterable<Windows::UI::Input::RadialControllerMenuItem> {};
#endif

#ifndef WINRT_GENERIC_b91a7342_3fcb_512b_aef1_fda4712e5817
#define WINRT_GENERIC_b91a7342_3fcb_512b_aef1_fda4712e5817
template <> struct __declspec(uuid("b91a7342-3fcb-512b-aef1-fda4712e5817")) __declspec(novtable) IVectorView<Windows::UI::Input::RadialControllerMenuItem> : impl_IVectorView<Windows::UI::Input::RadialControllerMenuItem> {};
#endif

#ifndef WINRT_GENERIC_3fbc1858_a43e_54dc_b0e2_8b098bddacf6
#define WINRT_GENERIC_3fbc1858_a43e_54dc_b0e2_8b098bddacf6
template <> struct __declspec(uuid("3fbc1858-a43e-54dc-b0e2-8b098bddacf6")) __declspec(novtable) IIterator<winrt::Windows::UI::Input::RadialControllerSystemMenuItemKind> : impl_IIterator<winrt::Windows::UI::Input::RadialControllerSystemMenuItemKind> {};
#endif


}

namespace Windows::UI::Input {

template <typename D>
struct WINRT_EBO impl_ICrossSlidingEventArgs
{
    Windows::Devices::Input::PointerDeviceType PointerDeviceType() const;
    Windows::Foundation::Point Position() const;
    Windows::UI::Input::CrossSlidingState CrossSlidingState() const;
};

template <typename D>
struct WINRT_EBO impl_IDraggingEventArgs
{
    Windows::Devices::Input::PointerDeviceType PointerDeviceType() const;
    Windows::Foundation::Point Position() const;
    Windows::UI::Input::DraggingState DraggingState() const;
};

template <typename D>
struct WINRT_EBO impl_IEdgeGesture
{
    event_token Starting(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::EdgeGesture, Windows::UI::Input::EdgeGestureEventArgs> & handler) const;
    using Starting_revoker = event_revoker<IEdgeGesture>;
    Starting_revoker Starting(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::EdgeGesture, Windows::UI::Input::EdgeGestureEventArgs> & handler) const;
    void Starting(event_token token) const;
    event_token Completed(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::EdgeGesture, Windows::UI::Input::EdgeGestureEventArgs> & handler) const;
    using Completed_revoker = event_revoker<IEdgeGesture>;
    Completed_revoker Completed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::EdgeGesture, Windows::UI::Input::EdgeGestureEventArgs> & handler) const;
    void Completed(event_token token) const;
    event_token Canceled(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::EdgeGesture, Windows::UI::Input::EdgeGestureEventArgs> & handler) const;
    using Canceled_revoker = event_revoker<IEdgeGesture>;
    Canceled_revoker Canceled(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::EdgeGesture, Windows::UI::Input::EdgeGestureEventArgs> & handler) const;
    void Canceled(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IEdgeGestureEventArgs
{
    Windows::UI::Input::EdgeGestureKind Kind() const;
};

template <typename D>
struct WINRT_EBO impl_IEdgeGestureStatics
{
    Windows::UI::Input::EdgeGesture GetForCurrentView() const;
};

template <typename D>
struct WINRT_EBO impl_IGestureRecognizer
{
    Windows::UI::Input::GestureSettings GestureSettings() const;
    void GestureSettings(Windows::UI::Input::GestureSettings value) const;
    bool IsInertial() const;
    bool IsActive() const;
    bool ShowGestureFeedback() const;
    void ShowGestureFeedback(bool value) const;
    Windows::Foundation::Point PivotCenter() const;
    void PivotCenter(const Windows::Foundation::Point & value) const;
    float PivotRadius() const;
    void PivotRadius(float value) const;
    float InertiaTranslationDeceleration() const;
    void InertiaTranslationDeceleration(float value) const;
    float InertiaRotationDeceleration() const;
    void InertiaRotationDeceleration(float value) const;
    float InertiaExpansionDeceleration() const;
    void InertiaExpansionDeceleration(float value) const;
    float InertiaTranslationDisplacement() const;
    void InertiaTranslationDisplacement(float value) const;
    float InertiaRotationAngle() const;
    void InertiaRotationAngle(float value) const;
    float InertiaExpansion() const;
    void InertiaExpansion(float value) const;
    bool ManipulationExact() const;
    void ManipulationExact(bool value) const;
    Windows::UI::Input::CrossSlideThresholds CrossSlideThresholds() const;
    void CrossSlideThresholds(const Windows::UI::Input::CrossSlideThresholds & value) const;
    bool CrossSlideHorizontally() const;
    void CrossSlideHorizontally(bool value) const;
    bool CrossSlideExact() const;
    void CrossSlideExact(bool value) const;
    bool AutoProcessInertia() const;
    void AutoProcessInertia(bool value) const;
    Windows::UI::Input::MouseWheelParameters MouseWheelParameters() const;
    bool CanBeDoubleTap(const Windows::UI::Input::PointerPoint & value) const;
    void ProcessDownEvent(const Windows::UI::Input::PointerPoint & value) const;
    void ProcessMoveEvents(const Windows::Foundation::Collections::IVector<Windows::UI::Input::PointerPoint> & value) const;
    void ProcessUpEvent(const Windows::UI::Input::PointerPoint & value) const;
    void ProcessMouseWheelEvent(const Windows::UI::Input::PointerPoint & value, bool isShiftKeyDown, bool isControlKeyDown) const;
    void ProcessInertia() const;
    void CompleteGesture() const;
    event_token Tapped(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::TappedEventArgs> & handler) const;
    using Tapped_revoker = event_revoker<IGestureRecognizer>;
    Tapped_revoker Tapped(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::TappedEventArgs> & handler) const;
    void Tapped(event_token cookie) const;
    event_token RightTapped(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::RightTappedEventArgs> & handler) const;
    using RightTapped_revoker = event_revoker<IGestureRecognizer>;
    RightTapped_revoker RightTapped(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::RightTappedEventArgs> & handler) const;
    void RightTapped(event_token cookie) const;
    event_token Holding(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::HoldingEventArgs> & handler) const;
    using Holding_revoker = event_revoker<IGestureRecognizer>;
    Holding_revoker Holding(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::HoldingEventArgs> & handler) const;
    void Holding(event_token cookie) const;
    event_token Dragging(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::DraggingEventArgs> & handler) const;
    using Dragging_revoker = event_revoker<IGestureRecognizer>;
    Dragging_revoker Dragging(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::DraggingEventArgs> & handler) const;
    void Dragging(event_token cookie) const;
    event_token ManipulationStarted(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationStartedEventArgs> & handler) const;
    using ManipulationStarted_revoker = event_revoker<IGestureRecognizer>;
    ManipulationStarted_revoker ManipulationStarted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationStartedEventArgs> & handler) const;
    void ManipulationStarted(event_token cookie) const;
    event_token ManipulationUpdated(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationUpdatedEventArgs> & handler) const;
    using ManipulationUpdated_revoker = event_revoker<IGestureRecognizer>;
    ManipulationUpdated_revoker ManipulationUpdated(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationUpdatedEventArgs> & handler) const;
    void ManipulationUpdated(event_token cookie) const;
    event_token ManipulationInertiaStarting(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationInertiaStartingEventArgs> & handler) const;
    using ManipulationInertiaStarting_revoker = event_revoker<IGestureRecognizer>;
    ManipulationInertiaStarting_revoker ManipulationInertiaStarting(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationInertiaStartingEventArgs> & handler) const;
    void ManipulationInertiaStarting(event_token cookie) const;
    event_token ManipulationCompleted(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationCompletedEventArgs> & handler) const;
    using ManipulationCompleted_revoker = event_revoker<IGestureRecognizer>;
    ManipulationCompleted_revoker ManipulationCompleted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::ManipulationCompletedEventArgs> & handler) const;
    void ManipulationCompleted(event_token cookie) const;
    event_token CrossSliding(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::CrossSlidingEventArgs> & handler) const;
    using CrossSliding_revoker = event_revoker<IGestureRecognizer>;
    CrossSliding_revoker CrossSliding(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::GestureRecognizer, Windows::UI::Input::CrossSlidingEventArgs> & handler) const;
    void CrossSliding(event_token cookie) const;
};

template <typename D>
struct WINRT_EBO impl_IHoldingEventArgs
{
    Windows::Devices::Input::PointerDeviceType PointerDeviceType() const;
    Windows::Foundation::Point Position() const;
    Windows::UI::Input::HoldingState HoldingState() const;
};

template <typename D>
struct WINRT_EBO impl_IKeyboardDeliveryInterceptor
{
    bool IsInterceptionEnabledWhenInForeground() const;
    void IsInterceptionEnabledWhenInForeground(bool value) const;
    event_token KeyDown(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::KeyboardDeliveryInterceptor, Windows::UI::Core::KeyEventArgs> & handler) const;
    using KeyDown_revoker = event_revoker<IKeyboardDeliveryInterceptor>;
    KeyDown_revoker KeyDown(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::KeyboardDeliveryInterceptor, Windows::UI::Core::KeyEventArgs> & handler) const;
    void KeyDown(event_token token) const;
    event_token KeyUp(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::KeyboardDeliveryInterceptor, Windows::UI::Core::KeyEventArgs> & handler) const;
    using KeyUp_revoker = event_revoker<IKeyboardDeliveryInterceptor>;
    KeyUp_revoker KeyUp(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::KeyboardDeliveryInterceptor, Windows::UI::Core::KeyEventArgs> & handler) const;
    void KeyUp(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IKeyboardDeliveryInterceptorStatics
{
    Windows::UI::Input::KeyboardDeliveryInterceptor GetForCurrentView() const;
};

template <typename D>
struct WINRT_EBO impl_IManipulationCompletedEventArgs
{
    Windows::Devices::Input::PointerDeviceType PointerDeviceType() const;
    Windows::Foundation::Point Position() const;
    Windows::UI::Input::ManipulationDelta Cumulative() const;
    Windows::UI::Input::ManipulationVelocities Velocities() const;
};

template <typename D>
struct WINRT_EBO impl_IManipulationInertiaStartingEventArgs
{
    Windows::Devices::Input::PointerDeviceType PointerDeviceType() const;
    Windows::Foundation::Point Position() const;
    Windows::UI::Input::ManipulationDelta Delta() const;
    Windows::UI::Input::ManipulationDelta Cumulative() const;
    Windows::UI::Input::ManipulationVelocities Velocities() const;
};

template <typename D>
struct WINRT_EBO impl_IManipulationStartedEventArgs
{
    Windows::Devices::Input::PointerDeviceType PointerDeviceType() const;
    Windows::Foundation::Point Position() const;
    Windows::UI::Input::ManipulationDelta Cumulative() const;
};

template <typename D>
struct WINRT_EBO impl_IManipulationUpdatedEventArgs
{
    Windows::Devices::Input::PointerDeviceType PointerDeviceType() const;
    Windows::Foundation::Point Position() const;
    Windows::UI::Input::ManipulationDelta Delta() const;
    Windows::UI::Input::ManipulationDelta Cumulative() const;
    Windows::UI::Input::ManipulationVelocities Velocities() const;
};

template <typename D>
struct WINRT_EBO impl_IMouseWheelParameters
{
    Windows::Foundation::Point CharTranslation() const;
    void CharTranslation(const Windows::Foundation::Point & value) const;
    float DeltaScale() const;
    void DeltaScale(float value) const;
    float DeltaRotationAngle() const;
    void DeltaRotationAngle(float value) const;
    Windows::Foundation::Point PageTranslation() const;
    void PageTranslation(const Windows::Foundation::Point & value) const;
};

template <typename D>
struct WINRT_EBO impl_IPointerPoint
{
    Windows::Devices::Input::PointerDevice PointerDevice() const;
    Windows::Foundation::Point Position() const;
    Windows::Foundation::Point RawPosition() const;
    uint32_t PointerId() const;
    uint32_t FrameId() const;
    uint64_t Timestamp() const;
    bool IsInContact() const;
    Windows::UI::Input::PointerPointProperties Properties() const;
};

template <typename D>
struct WINRT_EBO impl_IPointerPointProperties
{
    float Pressure() const;
    bool IsInverted() const;
    bool IsEraser() const;
    float Orientation() const;
    float XTilt() const;
    float YTilt() const;
    float Twist() const;
    Windows::Foundation::Rect ContactRect() const;
    Windows::Foundation::Rect ContactRectRaw() const;
    bool TouchConfidence() const;
    bool IsLeftButtonPressed() const;
    bool IsRightButtonPressed() const;
    bool IsMiddleButtonPressed() const;
    int32_t MouseWheelDelta() const;
    bool IsHorizontalMouseWheel() const;
    bool IsPrimary() const;
    bool IsInRange() const;
    bool IsCanceled() const;
    bool IsBarrelButtonPressed() const;
    bool IsXButton1Pressed() const;
    bool IsXButton2Pressed() const;
    Windows::UI::Input::PointerUpdateKind PointerUpdateKind() const;
    bool HasUsage(uint32_t usagePage, uint32_t usageId) const;
    int32_t GetUsageValue(uint32_t usagePage, uint32_t usageId) const;
};

template <typename D>
struct WINRT_EBO impl_IPointerPointProperties2
{
    Windows::Foundation::IReference<float> ZDistance() const;
};

template <typename D>
struct WINRT_EBO impl_IPointerPointStatics
{
    Windows::UI::Input::PointerPoint GetCurrentPoint(uint32_t pointerId) const;
    Windows::Foundation::Collections::IVector<Windows::UI::Input::PointerPoint> GetIntermediatePoints(uint32_t pointerId) const;
    Windows::UI::Input::PointerPoint GetCurrentPoint(uint32_t pointerId, const Windows::UI::Input::IPointerPointTransform & transform) const;
    Windows::Foundation::Collections::IVector<Windows::UI::Input::PointerPoint> GetIntermediatePoints(uint32_t pointerId, const Windows::UI::Input::IPointerPointTransform & transform) const;
};

template <typename D>
struct WINRT_EBO impl_IPointerPointTransform
{
    Windows::UI::Input::IPointerPointTransform Inverse() const;
    bool TryTransform(const Windows::Foundation::Point & inPoint, Windows::Foundation::Point & outPoint) const;
    Windows::Foundation::Rect TransformBounds(const Windows::Foundation::Rect & rect) const;
};

template <typename D>
struct WINRT_EBO impl_IPointerVisualizationSettings
{
    void IsContactFeedbackEnabled(bool value) const;
    bool IsContactFeedbackEnabled() const;
    void IsBarrelButtonFeedbackEnabled(bool value) const;
    bool IsBarrelButtonFeedbackEnabled() const;
};

template <typename D>
struct WINRT_EBO impl_IPointerVisualizationSettingsStatics
{
    Windows::UI::Input::PointerVisualizationSettings GetForCurrentView() const;
};

template <typename D>
struct WINRT_EBO impl_IRadialController
{
    Windows::UI::Input::RadialControllerMenu Menu() const;
    double RotationResolutionInDegrees() const;
    void RotationResolutionInDegrees(double value) const;
    bool UseAutomaticHapticFeedback() const;
    void UseAutomaticHapticFeedback(bool value) const;
    event_token ScreenContactStarted(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerScreenContactStartedEventArgs> & handler) const;
    using ScreenContactStarted_revoker = event_revoker<IRadialController>;
    ScreenContactStarted_revoker ScreenContactStarted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerScreenContactStartedEventArgs> & handler) const;
    void ScreenContactStarted(event_token cookie) const;
    event_token ScreenContactEnded(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::IInspectable> & handler) const;
    using ScreenContactEnded_revoker = event_revoker<IRadialController>;
    ScreenContactEnded_revoker ScreenContactEnded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::IInspectable> & handler) const;
    void ScreenContactEnded(event_token cookie) const;
    event_token ScreenContactContinued(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerScreenContactContinuedEventArgs> & handler) const;
    using ScreenContactContinued_revoker = event_revoker<IRadialController>;
    ScreenContactContinued_revoker ScreenContactContinued(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerScreenContactContinuedEventArgs> & handler) const;
    void ScreenContactContinued(event_token cookie) const;
    event_token ControlLost(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::IInspectable> & handler) const;
    using ControlLost_revoker = event_revoker<IRadialController>;
    ControlLost_revoker ControlLost(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::IInspectable> & handler) const;
    void ControlLost(event_token cookie) const;
    event_token RotationChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerRotationChangedEventArgs> & handler) const;
    using RotationChanged_revoker = event_revoker<IRadialController>;
    RotationChanged_revoker RotationChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerRotationChangedEventArgs> & handler) const;
    void RotationChanged(event_token token) const;
    event_token ButtonClicked(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerButtonClickedEventArgs> & handler) const;
    using ButtonClicked_revoker = event_revoker<IRadialController>;
    ButtonClicked_revoker ButtonClicked(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerButtonClickedEventArgs> & handler) const;
    void ButtonClicked(event_token token) const;
    event_token ControlAcquired(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerControlAcquiredEventArgs> & handler) const;
    using ControlAcquired_revoker = event_revoker<IRadialController>;
    ControlAcquired_revoker ControlAcquired(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialController, Windows::UI::Input::RadialControllerControlAcquiredEventArgs> & handler) const;
    void ControlAcquired(event_token cookie) const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerButtonClickedEventArgs
{
    Windows::UI::Input::RadialControllerScreenContact Contact() const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerConfiguration
{
    void SetDefaultMenuItems(const Windows::Foundation::Collections::IIterable<winrt::Windows::UI::Input::RadialControllerSystemMenuItemKind> & buttons) const;
    void ResetToDefaultMenuItems() const;
    bool TrySelectDefaultMenuItem(Windows::UI::Input::RadialControllerSystemMenuItemKind type) const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerConfigurationStatics
{
    Windows::UI::Input::RadialControllerConfiguration GetForCurrentView() const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerControlAcquiredEventArgs
{
    Windows::UI::Input::RadialControllerScreenContact Contact() const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerMenu
{
    Windows::Foundation::Collections::IVector<Windows::UI::Input::RadialControllerMenuItem> Items() const;
    bool IsEnabled() const;
    void IsEnabled(bool value) const;
    Windows::UI::Input::RadialControllerMenuItem GetSelectedMenuItem() const;
    void SelectMenuItem(const Windows::UI::Input::RadialControllerMenuItem & menuItem) const;
    bool TrySelectPreviouslySelectedMenuItem() const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerMenuItem
{
    hstring DisplayText() const;
    Windows::IInspectable Tag() const;
    void Tag(const Windows::IInspectable & value) const;
    event_token Invoked(const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialControllerMenuItem, Windows::IInspectable> & handler) const;
    using Invoked_revoker = event_revoker<IRadialControllerMenuItem>;
    Invoked_revoker Invoked(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Input::RadialControllerMenuItem, Windows::IInspectable> & handler) const;
    void Invoked(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerMenuItemStatics
{
    Windows::UI::Input::RadialControllerMenuItem CreateFromIcon(hstring_ref displayText, const Windows::Storage::Streams::RandomAccessStreamReference & icon) const;
    Windows::UI::Input::RadialControllerMenuItem CreateFromKnownIcon(hstring_ref displayText, Windows::UI::Input::RadialControllerMenuKnownIcon value) const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerRotationChangedEventArgs
{
    double RotationDeltaInDegrees() const;
    Windows::UI::Input::RadialControllerScreenContact Contact() const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerScreenContact
{
    Windows::Foundation::Rect Bounds() const;
    Windows::Foundation::Point Position() const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerScreenContactContinuedEventArgs
{
    Windows::UI::Input::RadialControllerScreenContact Contact() const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerScreenContactStartedEventArgs
{
    Windows::UI::Input::RadialControllerScreenContact Contact() const;
};

template <typename D>
struct WINRT_EBO impl_IRadialControllerStatics
{
    bool IsSupported() const;
    Windows::UI::Input::RadialController CreateForCurrentView() const;
};

template <typename D>
struct WINRT_EBO impl_IRightTappedEventArgs
{
    Windows::Devices::Input::PointerDeviceType PointerDeviceType() const;
    Windows::Foundation::Point Position() const;
};

template <typename D>
struct WINRT_EBO impl_ITappedEventArgs
{
    Windows::Devices::Input::PointerDeviceType PointerDeviceType() const;
    Windows::Foundation::Point Position() const;
    uint32_t TapCount() const;
};

struct ICrossSlidingEventArgs :
    Windows::IInspectable,
    impl::consume<ICrossSlidingEventArgs>
{
    ICrossSlidingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICrossSlidingEventArgs>(m_ptr); }
};

struct IDraggingEventArgs :
    Windows::IInspectable,
    impl::consume<IDraggingEventArgs>
{
    IDraggingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDraggingEventArgs>(m_ptr); }
};

struct IEdgeGesture :
    Windows::IInspectable,
    impl::consume<IEdgeGesture>
{
    IEdgeGesture(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IEdgeGesture>(m_ptr); }
};

struct IEdgeGestureEventArgs :
    Windows::IInspectable,
    impl::consume<IEdgeGestureEventArgs>
{
    IEdgeGestureEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IEdgeGestureEventArgs>(m_ptr); }
};

struct IEdgeGestureStatics :
    Windows::IInspectable,
    impl::consume<IEdgeGestureStatics>
{
    IEdgeGestureStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IEdgeGestureStatics>(m_ptr); }
};

struct IGestureRecognizer :
    Windows::IInspectable,
    impl::consume<IGestureRecognizer>
{
    IGestureRecognizer(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGestureRecognizer>(m_ptr); }
};

struct IHoldingEventArgs :
    Windows::IInspectable,
    impl::consume<IHoldingEventArgs>
{
    IHoldingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHoldingEventArgs>(m_ptr); }
};

struct IKeyboardDeliveryInterceptor :
    Windows::IInspectable,
    impl::consume<IKeyboardDeliveryInterceptor>
{
    IKeyboardDeliveryInterceptor(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IKeyboardDeliveryInterceptor>(m_ptr); }
};

struct IKeyboardDeliveryInterceptorStatics :
    Windows::IInspectable,
    impl::consume<IKeyboardDeliveryInterceptorStatics>
{
    IKeyboardDeliveryInterceptorStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IKeyboardDeliveryInterceptorStatics>(m_ptr); }
};

struct IManipulationCompletedEventArgs :
    Windows::IInspectable,
    impl::consume<IManipulationCompletedEventArgs>
{
    IManipulationCompletedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IManipulationCompletedEventArgs>(m_ptr); }
};

struct IManipulationInertiaStartingEventArgs :
    Windows::IInspectable,
    impl::consume<IManipulationInertiaStartingEventArgs>
{
    IManipulationInertiaStartingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IManipulationInertiaStartingEventArgs>(m_ptr); }
};

struct IManipulationStartedEventArgs :
    Windows::IInspectable,
    impl::consume<IManipulationStartedEventArgs>
{
    IManipulationStartedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IManipulationStartedEventArgs>(m_ptr); }
};

struct IManipulationUpdatedEventArgs :
    Windows::IInspectable,
    impl::consume<IManipulationUpdatedEventArgs>
{
    IManipulationUpdatedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IManipulationUpdatedEventArgs>(m_ptr); }
};

struct IMouseWheelParameters :
    Windows::IInspectable,
    impl::consume<IMouseWheelParameters>
{
    IMouseWheelParameters(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMouseWheelParameters>(m_ptr); }
};

struct IPointerPoint :
    Windows::IInspectable,
    impl::consume<IPointerPoint>
{
    IPointerPoint(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPointerPoint>(m_ptr); }
};

struct IPointerPointProperties :
    Windows::IInspectable,
    impl::consume<IPointerPointProperties>
{
    IPointerPointProperties(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPointerPointProperties>(m_ptr); }
};

struct IPointerPointProperties2 :
    Windows::IInspectable,
    impl::consume<IPointerPointProperties2>
{
    IPointerPointProperties2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPointerPointProperties2>(m_ptr); }
};

struct IPointerPointStatics :
    Windows::IInspectable,
    impl::consume<IPointerPointStatics>
{
    IPointerPointStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPointerPointStatics>(m_ptr); }
};

struct IPointerPointTransform :
    Windows::IInspectable,
    impl::consume<IPointerPointTransform>
{
    IPointerPointTransform(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPointerPointTransform>(m_ptr); }
};

struct IPointerVisualizationSettings :
    Windows::IInspectable,
    impl::consume<IPointerVisualizationSettings>
{
    IPointerVisualizationSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPointerVisualizationSettings>(m_ptr); }
};

struct IPointerVisualizationSettingsStatics :
    Windows::IInspectable,
    impl::consume<IPointerVisualizationSettingsStatics>
{
    IPointerVisualizationSettingsStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPointerVisualizationSettingsStatics>(m_ptr); }
};

struct IRadialController :
    Windows::IInspectable,
    impl::consume<IRadialController>
{
    IRadialController(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialController>(m_ptr); }
};

struct IRadialControllerButtonClickedEventArgs :
    Windows::IInspectable,
    impl::consume<IRadialControllerButtonClickedEventArgs>
{
    IRadialControllerButtonClickedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerButtonClickedEventArgs>(m_ptr); }
};

struct IRadialControllerConfiguration :
    Windows::IInspectable,
    impl::consume<IRadialControllerConfiguration>
{
    IRadialControllerConfiguration(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerConfiguration>(m_ptr); }
};

struct IRadialControllerConfigurationStatics :
    Windows::IInspectable,
    impl::consume<IRadialControllerConfigurationStatics>
{
    IRadialControllerConfigurationStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerConfigurationStatics>(m_ptr); }
};

struct IRadialControllerControlAcquiredEventArgs :
    Windows::IInspectable,
    impl::consume<IRadialControllerControlAcquiredEventArgs>
{
    IRadialControllerControlAcquiredEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerControlAcquiredEventArgs>(m_ptr); }
};

struct IRadialControllerMenu :
    Windows::IInspectable,
    impl::consume<IRadialControllerMenu>
{
    IRadialControllerMenu(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerMenu>(m_ptr); }
};

struct IRadialControllerMenuItem :
    Windows::IInspectable,
    impl::consume<IRadialControllerMenuItem>
{
    IRadialControllerMenuItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerMenuItem>(m_ptr); }
};

struct IRadialControllerMenuItemStatics :
    Windows::IInspectable,
    impl::consume<IRadialControllerMenuItemStatics>
{
    IRadialControllerMenuItemStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerMenuItemStatics>(m_ptr); }
};

struct IRadialControllerRotationChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IRadialControllerRotationChangedEventArgs>
{
    IRadialControllerRotationChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerRotationChangedEventArgs>(m_ptr); }
};

struct IRadialControllerScreenContact :
    Windows::IInspectable,
    impl::consume<IRadialControllerScreenContact>
{
    IRadialControllerScreenContact(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerScreenContact>(m_ptr); }
};

struct IRadialControllerScreenContactContinuedEventArgs :
    Windows::IInspectable,
    impl::consume<IRadialControllerScreenContactContinuedEventArgs>
{
    IRadialControllerScreenContactContinuedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerScreenContactContinuedEventArgs>(m_ptr); }
};

struct IRadialControllerScreenContactStartedEventArgs :
    Windows::IInspectable,
    impl::consume<IRadialControllerScreenContactStartedEventArgs>
{
    IRadialControllerScreenContactStartedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerScreenContactStartedEventArgs>(m_ptr); }
};

struct IRadialControllerStatics :
    Windows::IInspectable,
    impl::consume<IRadialControllerStatics>
{
    IRadialControllerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadialControllerStatics>(m_ptr); }
};

struct IRightTappedEventArgs :
    Windows::IInspectable,
    impl::consume<IRightTappedEventArgs>
{
    IRightTappedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRightTappedEventArgs>(m_ptr); }
};

struct ITappedEventArgs :
    Windows::IInspectable,
    impl::consume<ITappedEventArgs>
{
    ITappedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITappedEventArgs>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Globalization.DateTimeFormatting.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Globalization.DateTimeFormatting.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
#define WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
template <> struct __declspec(uuid("2f13c006-a03a-5f69-b090-75a43e33423e")) __declspec(novtable) IVectorView<hstring> : impl_IVectorView<hstring> {};
#endif

#ifndef WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
#define WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
template <> struct __declspec(uuid("e2fcc7c1-3bfc-5a0b-b2b0-72e769d1cb7e")) __declspec(novtable) IIterable<hstring> : impl_IIterable<hstring> {};
#endif

#ifndef WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
#define WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
template <> struct __declspec(uuid("8c304ebb-6615-50a4-8829-879ecd443236")) __declspec(novtable) IIterator<hstring> : impl_IIterator<hstring> {};
#endif


}

namespace Windows::Globalization::DateTimeFormatting {

template <typename D>
struct WINRT_EBO impl_IDateTimeFormatter
{
    Windows::Foundation::Collections::IVectorView<hstring> Languages() const;
    hstring GeographicRegion() const;
    hstring Calendar() const;
    hstring Clock() const;
    hstring NumeralSystem() const;
    void NumeralSystem(hstring_ref value) const;
    Windows::Foundation::Collections::IVectorView<hstring> Patterns() const;
    hstring Template() const;
    hstring Format(const Windows::Foundation::DateTime & value) const;
    Windows::Globalization::DateTimeFormatting::YearFormat IncludeYear() const;
    Windows::Globalization::DateTimeFormatting::MonthFormat IncludeMonth() const;
    Windows::Globalization::DateTimeFormatting::DayOfWeekFormat IncludeDayOfWeek() const;
    Windows::Globalization::DateTimeFormatting::DayFormat IncludeDay() const;
    Windows::Globalization::DateTimeFormatting::HourFormat IncludeHour() const;
    Windows::Globalization::DateTimeFormatting::MinuteFormat IncludeMinute() const;
    Windows::Globalization::DateTimeFormatting::SecondFormat IncludeSecond() const;
    hstring ResolvedLanguage() const;
    hstring ResolvedGeographicRegion() const;
};

template <typename D>
struct WINRT_EBO impl_IDateTimeFormatter2
{
    hstring Format(const Windows::Foundation::DateTime & datetime, hstring_ref timeZoneId) const;
};

template <typename D>
struct WINRT_EBO impl_IDateTimeFormatterFactory
{
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter CreateDateTimeFormatter(hstring_ref formatTemplate) const;
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter CreateDateTimeFormatterLanguages(hstring_ref formatTemplate, const Windows::Foundation::Collections::IIterable<hstring> & languages) const;
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter CreateDateTimeFormatterContext(hstring_ref formatTemplate, const Windows::Foundation::Collections::IIterable<hstring> & languages, hstring_ref geographicRegion, hstring_ref calendar, hstring_ref clock) const;
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter CreateDateTimeFormatterDate(Windows::Globalization::DateTimeFormatting::YearFormat yearFormat, Windows::Globalization::DateTimeFormatting::MonthFormat monthFormat, Windows::Globalization::DateTimeFormatting::DayFormat dayFormat, Windows::Globalization::DateTimeFormatting::DayOfWeekFormat dayOfWeekFormat) const;
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter CreateDateTimeFormatterTime(Windows::Globalization::DateTimeFormatting::HourFormat hourFormat, Windows::Globalization::DateTimeFormatting::MinuteFormat minuteFormat, Windows::Globalization::DateTimeFormatting::SecondFormat secondFormat) const;
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter CreateDateTimeFormatterDateTimeLanguages(Windows::Globalization::DateTimeFormatting::YearFormat yearFormat, Windows::Globalization::DateTimeFormatting::MonthFormat monthFormat, Windows::Globalization::DateTimeFormatting::DayFormat dayFormat, Windows::Globalization::DateTimeFormatting::DayOfWeekFormat dayOfWeekFormat, Windows::Globalization::DateTimeFormatting::HourFormat hourFormat, Windows::Globalization::DateTimeFormatting::MinuteFormat minuteFormat, Windows::Globalization::DateTimeFormatting::SecondFormat secondFormat, const Windows::Foundation::Collections::IIterable<hstring> & languages) const;
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter CreateDateTimeFormatterDateTimeContext(Windows::Globalization::DateTimeFormatting::YearFormat yearFormat, Windows::Globalization::DateTimeFormatting::MonthFormat monthFormat, Windows::Globalization::DateTimeFormatting::DayFormat dayFormat, Windows::Globalization::DateTimeFormatting::DayOfWeekFormat dayOfWeekFormat, Windows::Globalization::DateTimeFormatting::HourFormat hourFormat, Windows::Globalization::DateTimeFormatting::MinuteFormat minuteFormat, Windows::Globalization::DateTimeFormatting::SecondFormat secondFormat, const Windows::Foundation::Collections::IIterable<hstring> & languages, hstring_ref geographicRegion, hstring_ref calendar, hstring_ref clock) const;
};

template <typename D>
struct WINRT_EBO impl_IDateTimeFormatterStatics
{
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter LongDate() const;
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter LongTime() const;
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter ShortDate() const;
    Windows::Globalization::DateTimeFormatting::DateTimeFormatter ShortTime() const;
};

struct IDateTimeFormatter :
    Windows::IInspectable,
    impl::consume<IDateTimeFormatter>
{
    IDateTimeFormatter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDateTimeFormatter>(m_ptr); }
};

struct IDateTimeFormatter2 :
    Windows::IInspectable,
    impl::consume<IDateTimeFormatter2>
{
    IDateTimeFormatter2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDateTimeFormatter2>(m_ptr); }
};

struct IDateTimeFormatterFactory :
    Windows::IInspectable,
    impl::consume<IDateTimeFormatterFactory>
{
    IDateTimeFormatterFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDateTimeFormatterFactory>(m_ptr); }
};

struct IDateTimeFormatterStatics :
    Windows::IInspectable,
    impl::consume<IDateTimeFormatterStatics>
{
    IDateTimeFormatterStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDateTimeFormatterStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Web.AtomPub.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Web.AtomPub.1.h"
#include "Windows.Web.Syndication.2.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
#define WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
template <> struct __declspec(uuid("2f13c006-a03a-5f69-b090-75a43e33423e")) __declspec(novtable) IVectorView<hstring> : impl_IVectorView<hstring> {};
#endif

#ifndef WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
#define WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
template <> struct __declspec(uuid("e2fcc7c1-3bfc-5a0b-b2b0-72e769d1cb7e")) __declspec(novtable) IIterable<hstring> : impl_IIterable<hstring> {};
#endif

#ifndef WINRT_GENERIC_a1ac007c_9d94_552e_840e_139f109a9b88
#define WINRT_GENERIC_a1ac007c_9d94_552e_840e_139f109a9b88
template <> struct __declspec(uuid("a1ac007c-9d94-552e-840e-139f109a9b88")) __declspec(novtable) IVectorView<Windows::Web::Syndication::SyndicationCategory> : impl_IVectorView<Windows::Web::Syndication::SyndicationCategory> {};
#endif

#ifndef WINRT_GENERIC_32f021c7_368b_5cfa_829c_4acf8a36c810
#define WINRT_GENERIC_32f021c7_368b_5cfa_829c_4acf8a36c810
template <> struct __declspec(uuid("32f021c7-368b-5cfa-829c-4acf8a36c810")) __declspec(novtable) IVectorView<Windows::Web::AtomPub::ResourceCollection> : impl_IVectorView<Windows::Web::AtomPub::ResourceCollection> {};
#endif

#ifndef WINRT_GENERIC_d0d7b58d_d97e_5761_be66_42b85b3d19c8
#define WINRT_GENERIC_d0d7b58d_d97e_5761_be66_42b85b3d19c8
template <> struct __declspec(uuid("d0d7b58d-d97e-5761-be66-42b85b3d19c8")) __declspec(novtable) IVectorView<Windows::Web::AtomPub::Workspace> : impl_IVectorView<Windows::Web::AtomPub::Workspace> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_da07abf4_91fa_5c96_84cb_459ea97b934d
#define WINRT_GENERIC_da07abf4_91fa_5c96_84cb_459ea97b934d
template <> struct __declspec(uuid("da07abf4-91fa-5c96-84cb-459ea97b934d")) __declspec(novtable) IAsyncOperationWithProgress<Windows::Web::AtomPub::ServiceDocument, Windows::Web::Syndication::RetrievalProgress> : impl_IAsyncOperationWithProgress<Windows::Web::AtomPub::ServiceDocument, Windows::Web::Syndication::RetrievalProgress> {};
#endif

#ifndef WINRT_GENERIC_f71cff65_e737_5345_b38f_fd445d2dc7e2
#define WINRT_GENERIC_f71cff65_e737_5345_b38f_fd445d2dc7e2
template <> struct __declspec(uuid("f71cff65-e737-5345-b38f-fd445d2dc7e2")) __declspec(novtable) IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, Windows::Web::Syndication::RetrievalProgress> : impl_IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, Windows::Web::Syndication::RetrievalProgress> {};
#endif

#ifndef WINRT_GENERIC_44fa5a15_1204_521c_85e5_01259301d527
#define WINRT_GENERIC_44fa5a15_1204_521c_85e5_01259301d527
template <> struct __declspec(uuid("44fa5a15-1204-521c-85e5-01259301d527")) __declspec(novtable) IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::RetrievalProgress> : impl_IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::RetrievalProgress> {};
#endif

#ifndef WINRT_GENERIC_e57d0717_27c0_561e_b4b3_72aa2b1e3fc9
#define WINRT_GENERIC_e57d0717_27c0_561e_b4b3_72aa2b1e3fc9
template <> struct __declspec(uuid("e57d0717-27c0-561e-b4b3-72aa2b1e3fc9")) __declspec(novtable) IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> : impl_IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> {};
#endif

#ifndef WINRT_GENERIC_b7eb83f5_a746_50f2_b91f_31803161ccc7
#define WINRT_GENERIC_b7eb83f5_a746_50f2_b91f_31803161ccc7
template <> struct __declspec(uuid("b7eb83f5-a746-50f2-b91f-31803161ccc7")) __declspec(novtable) IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> : impl_IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
#define WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
template <> struct __declspec(uuid("8c304ebb-6615-50a4-8829-879ecd443236")) __declspec(novtable) IIterator<hstring> : impl_IIterator<hstring> {};
#endif

#ifndef WINRT_GENERIC_2a9228fa_b088_5690_bb38_b7044e0b502b
#define WINRT_GENERIC_2a9228fa_b088_5690_bb38_b7044e0b502b
template <> struct __declspec(uuid("2a9228fa-b088-5690-bb38-b7044e0b502b")) __declspec(novtable) IIterator<Windows::Web::Syndication::SyndicationCategory> : impl_IIterator<Windows::Web::Syndication::SyndicationCategory> {};
#endif

#ifndef WINRT_GENERIC_d151f7d1_eabd_5300_b55c_149eb289cc71
#define WINRT_GENERIC_d151f7d1_eabd_5300_b55c_149eb289cc71
template <> struct __declspec(uuid("d151f7d1-eabd-5300-b55c-149eb289cc71")) __declspec(novtable) IIterable<Windows::Web::Syndication::SyndicationCategory> : impl_IIterable<Windows::Web::Syndication::SyndicationCategory> {};
#endif

#ifndef WINRT_GENERIC_2b175876_0920_52f0_80bf_dfe79744128d
#define WINRT_GENERIC_2b175876_0920_52f0_80bf_dfe79744128d
template <> struct __declspec(uuid("2b175876-0920-52f0-80bf-dfe79744128d")) __declspec(novtable) IIterator<Windows::Web::AtomPub::ResourceCollection> : impl_IIterator<Windows::Web::AtomPub::ResourceCollection> {};
#endif

#ifndef WINRT_GENERIC_d4372a2d_7ab0_5d8e_bd5c_6e9c0a67a8d8
#define WINRT_GENERIC_d4372a2d_7ab0_5d8e_bd5c_6e9c0a67a8d8
template <> struct __declspec(uuid("d4372a2d-7ab0-5d8e-bd5c-6e9c0a67a8d8")) __declspec(novtable) IIterable<Windows::Web::AtomPub::ResourceCollection> : impl_IIterable<Windows::Web::AtomPub::ResourceCollection> {};
#endif

#ifndef WINRT_GENERIC_0cc8c426_d68a_5136_9741_de326764ca32
#define WINRT_GENERIC_0cc8c426_d68a_5136_9741_de326764ca32
template <> struct __declspec(uuid("0cc8c426-d68a-5136-9741-de326764ca32")) __declspec(novtable) IIterator<Windows::Web::AtomPub::Workspace> : impl_IIterator<Windows::Web::AtomPub::Workspace> {};
#endif

#ifndef WINRT_GENERIC_f02d0ebe_eac2_502f_9836_1c5482333bfe
#define WINRT_GENERIC_f02d0ebe_eac2_502f_9836_1c5482333bfe
template <> struct __declspec(uuid("f02d0ebe-eac2-502f-9836-1c5482333bfe")) __declspec(novtable) IIterable<Windows::Web::AtomPub::Workspace> : impl_IIterable<Windows::Web::AtomPub::Workspace> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_dd2a6d54_55aa_5d09_b790_9520d4eb4f19
#define WINRT_GENERIC_dd2a6d54_55aa_5d09_b790_9520d4eb4f19
template <> struct __declspec(uuid("dd2a6d54-55aa-5d09-b790-9520d4eb4f19")) __declspec(novtable) AsyncOperationProgressHandler<Windows::Web::AtomPub::ServiceDocument, Windows::Web::Syndication::RetrievalProgress> : impl_AsyncOperationProgressHandler<Windows::Web::AtomPub::ServiceDocument, Windows::Web::Syndication::RetrievalProgress> {};
#endif

#ifndef WINRT_GENERIC_5f03b1d3_470d_5be7_8176_1c9a46010900
#define WINRT_GENERIC_5f03b1d3_470d_5be7_8176_1c9a46010900
template <> struct __declspec(uuid("5f03b1d3-470d-5be7-8176-1c9a46010900")) __declspec(novtable) AsyncOperationWithProgressCompletedHandler<Windows::Web::AtomPub::ServiceDocument, Windows::Web::Syndication::RetrievalProgress> : impl_AsyncOperationWithProgressCompletedHandler<Windows::Web::AtomPub::ServiceDocument, Windows::Web::Syndication::RetrievalProgress> {};
#endif

#ifndef WINRT_GENERIC_6136b327_4152_54e3_aa34_38a0c121dc4d
#define WINRT_GENERIC_6136b327_4152_54e3_aa34_38a0c121dc4d
template <> struct __declspec(uuid("6136b327-4152-54e3-aa34-38a0c121dc4d")) __declspec(novtable) AsyncOperationProgressHandler<Windows::Storage::Streams::IInputStream, Windows::Web::Syndication::RetrievalProgress> : impl_AsyncOperationProgressHandler<Windows::Storage::Streams::IInputStream, Windows::Web::Syndication::RetrievalProgress> {};
#endif

#ifndef WINRT_GENERIC_76772ec1_c26f_5f6e_8d3b_8314107cefeb
#define WINRT_GENERIC_76772ec1_c26f_5f6e_8d3b_8314107cefeb
template <> struct __declspec(uuid("76772ec1-c26f-5f6e-8d3b-8314107cefeb")) __declspec(novtable) AsyncOperationWithProgressCompletedHandler<Windows::Storage::Streams::IInputStream, Windows::Web::Syndication::RetrievalProgress> : impl_AsyncOperationWithProgressCompletedHandler<Windows::Storage::Streams::IInputStream, Windows::Web::Syndication::RetrievalProgress> {};
#endif

#ifndef WINRT_GENERIC_b670d335_e83b_58b1_ad7b_840396085c65
#define WINRT_GENERIC_b670d335_e83b_58b1_ad7b_840396085c65
template <> struct __declspec(uuid("b670d335-e83b-58b1-ad7b-840396085c65")) __declspec(novtable) AsyncOperationProgressHandler<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::RetrievalProgress> : impl_AsyncOperationProgressHandler<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::RetrievalProgress> {};
#endif

#ifndef WINRT_GENERIC_9de7422b_4bc3_5546_87b8_2eebfd60be48
#define WINRT_GENERIC_9de7422b_4bc3_5546_87b8_2eebfd60be48
template <> struct __declspec(uuid("9de7422b-4bc3-5546-87b8-2eebfd60be48")) __declspec(novtable) AsyncOperationWithProgressCompletedHandler<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::RetrievalProgress> : impl_AsyncOperationWithProgressCompletedHandler<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::RetrievalProgress> {};
#endif

#ifndef WINRT_GENERIC_1ffb57b2_d2de_5559_8de2_50109c63539b
#define WINRT_GENERIC_1ffb57b2_d2de_5559_8de2_50109c63539b
template <> struct __declspec(uuid("1ffb57b2-d2de-5559-8de2-50109c63539b")) __declspec(novtable) AsyncOperationProgressHandler<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> : impl_AsyncOperationProgressHandler<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> {};
#endif

#ifndef WINRT_GENERIC_8a796ea9_ff95_50ef_93ea_711bf7946473
#define WINRT_GENERIC_8a796ea9_ff95_50ef_93ea_711bf7946473
template <> struct __declspec(uuid("8a796ea9-ff95-50ef-93ea-711bf7946473")) __declspec(novtable) AsyncOperationWithProgressCompletedHandler<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> : impl_AsyncOperationWithProgressCompletedHandler<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> {};
#endif

#ifndef WINRT_GENERIC_c1610085_94d0_5706_9ac6_10179d7deb92
#define WINRT_GENERIC_c1610085_94d0_5706_9ac6_10179d7deb92
template <> struct __declspec(uuid("c1610085-94d0-5706-9ac6-10179d7deb92")) __declspec(novtable) AsyncActionProgressHandler<Windows::Web::Syndication::TransferProgress> : impl_AsyncActionProgressHandler<Windows::Web::Syndication::TransferProgress> {};
#endif

#ifndef WINRT_GENERIC_f1c031c8_90bf_5cae_adf6_155b4aedfb60
#define WINRT_GENERIC_f1c031c8_90bf_5cae_adf6_155b4aedfb60
template <> struct __declspec(uuid("f1c031c8-90bf-5cae-adf6-155b4aedfb60")) __declspec(novtable) AsyncActionWithProgressCompletedHandler<Windows::Web::Syndication::TransferProgress> : impl_AsyncActionWithProgressCompletedHandler<Windows::Web::Syndication::TransferProgress> {};
#endif


}

namespace Windows::Web::AtomPub {

template <typename D>
struct WINRT_EBO impl_IAtomPubClient
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::AtomPub::ServiceDocument, Windows::Web::Syndication::RetrievalProgress> RetrieveServiceDocumentAsync(const Windows::Foundation::Uri & uri) const;
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Storage::Streams::IInputStream, Windows::Web::Syndication::RetrievalProgress> RetrieveMediaResourceAsync(const Windows::Foundation::Uri & uri) const;
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::RetrievalProgress> RetrieveResourceAsync(const Windows::Foundation::Uri & uri) const;
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> CreateResourceAsync(const Windows::Foundation::Uri & uri, hstring_ref description, const Windows::Web::Syndication::SyndicationItem & item) const;
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationItem, Windows::Web::Syndication::TransferProgress> CreateMediaResourceAsync(const Windows::Foundation::Uri & uri, hstring_ref mediaType, hstring_ref description, const Windows::Storage::Streams::IInputStream & mediaStream) const;
    Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> UpdateMediaResourceAsync(const Windows::Foundation::Uri & uri, hstring_ref mediaType, const Windows::Storage::Streams::IInputStream & mediaStream) const;
    Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> UpdateResourceAsync(const Windows::Foundation::Uri & uri, const Windows::Web::Syndication::SyndicationItem & item) const;
    Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> UpdateResourceItemAsync(const Windows::Web::Syndication::SyndicationItem & item) const;
    Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> DeleteResourceAsync(const Windows::Foundation::Uri & uri) const;
    Windows::Foundation::IAsyncActionWithProgress<Windows::Web::Syndication::TransferProgress> DeleteResourceItemAsync(const Windows::Web::Syndication::SyndicationItem & item) const;
    void CancelAsyncOperations() const;
};

template <typename D>
struct WINRT_EBO impl_IAtomPubClientFactory
{
    Windows::Web::AtomPub::AtomPubClient CreateAtomPubClientWithCredentials(const Windows::Security::Credentials::PasswordCredential & serverCredential) const;
};

template <typename D>
struct WINRT_EBO impl_IResourceCollection
{
    Windows::Web::Syndication::ISyndicationText Title() const;
    Windows::Foundation::Uri Uri() const;
    Windows::Foundation::Collections::IVectorView<Windows::Web::Syndication::SyndicationCategory> Categories() const;
    Windows::Foundation::Collections::IVectorView<hstring> Accepts() const;
};

template <typename D>
struct WINRT_EBO impl_IServiceDocument
{
    Windows::Foundation::Collections::IVectorView<Windows::Web::AtomPub::Workspace> Workspaces() const;
};

template <typename D>
struct WINRT_EBO impl_IWorkspace
{
    Windows::Web::Syndication::ISyndicationText Title() const;
    Windows::Foundation::Collections::IVectorView<Windows::Web::AtomPub::ResourceCollection> Collections() const;
};

struct IAtomPubClient :
    Windows::IInspectable,
    impl::consume<IAtomPubClient>,
    impl::require<IAtomPubClient, Windows::Web::Syndication::ISyndicationClient>
{
    IAtomPubClient(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAtomPubClient>(m_ptr); }
};

struct IAtomPubClientFactory :
    Windows::IInspectable,
    impl::consume<IAtomPubClientFactory>
{
    IAtomPubClientFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAtomPubClientFactory>(m_ptr); }
};

struct IResourceCollection :
    Windows::IInspectable,
    impl::consume<IResourceCollection>,
    impl::require<IResourceCollection, Windows::Web::Syndication::ISyndicationNode>
{
    IResourceCollection(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceCollection>(m_ptr); }
};

struct IServiceDocument :
    Windows::IInspectable,
    impl::consume<IServiceDocument>,
    impl::require<IServiceDocument, Windows::Web::Syndication::ISyndicationNode>
{
    IServiceDocument(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IServiceDocument>(m_ptr); }
};

struct IWorkspace :
    Windows::IInspectable,
    impl::consume<IWorkspace>,
    impl::require<IWorkspace, Windows::Web::Syndication::ISyndicationNode>
{
    IWorkspace(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWorkspace>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.Capture.Frames.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Media::Capture::Frames {

struct IBufferMediaFrame;
struct IDepthMediaFrame;
struct IDepthMediaFrameFormat;
struct IInfraredMediaFrame;
struct IMediaFrameArrivedEventArgs;
struct IMediaFrameFormat;
struct IMediaFrameReader;
struct IMediaFrameReference;
struct IMediaFrameSource;
struct IMediaFrameSourceController;
struct IMediaFrameSourceGetPropertyResult;
struct IMediaFrameSourceGroup;
struct IMediaFrameSourceGroupStatics;
struct IMediaFrameSourceInfo;
struct IVideoMediaFrame;
struct IVideoMediaFrameFormat;
struct BufferMediaFrame;
struct DepthMediaFrame;
struct DepthMediaFrameFormat;
struct InfraredMediaFrame;
struct MediaFrameArrivedEventArgs;
struct MediaFrameFormat;
struct MediaFrameReader;
struct MediaFrameReference;
struct MediaFrameSource;
struct MediaFrameSourceController;
struct MediaFrameSourceGetPropertyResult;
struct MediaFrameSourceGroup;
struct MediaFrameSourceInfo;
struct VideoMediaFrame;
struct VideoMediaFrameFormat;

}

namespace Windows::Media::Capture::Frames {

struct IBufferMediaFrame;
struct IDepthMediaFrame;
struct IDepthMediaFrameFormat;
struct IInfraredMediaFrame;
struct IMediaFrameArrivedEventArgs;
struct IMediaFrameFormat;
struct IMediaFrameReader;
struct IMediaFrameReference;
struct IMediaFrameSource;
struct IMediaFrameSourceController;
struct IMediaFrameSourceGetPropertyResult;
struct IMediaFrameSourceGroup;
struct IMediaFrameSourceGroupStatics;
struct IMediaFrameSourceInfo;
struct IVideoMediaFrame;
struct IVideoMediaFrameFormat;
struct BufferMediaFrame;
struct DepthMediaFrame;
struct DepthMediaFrameFormat;
struct InfraredMediaFrame;
struct MediaFrameArrivedEventArgs;
struct MediaFrameFormat;
struct MediaFrameReader;
struct MediaFrameReference;
struct MediaFrameSource;
struct MediaFrameSourceController;
struct MediaFrameSourceGetPropertyResult;
struct MediaFrameSourceGroup;
struct MediaFrameSourceInfo;
struct VideoMediaFrame;
struct VideoMediaFrameFormat;

}

namespace Windows::Media::Capture::Frames {

enum class MediaFrameReaderStartStatus
{
    Success = 0,
    UnknownFailure = 1,
    DeviceNotAvailable = 2,
    OutputFormatNotSupported = 3,
};

enum class MediaFrameSourceGetPropertyStatus
{
    Success = 0,
    UnknownFailure = 1,
    NotSupported = 2,
    DeviceNotAvailable = 3,
};

enum class MediaFrameSourceKind
{
    Custom = 0,
    Color = 1,
    Infrared = 2,
    Depth = 3,
};

enum class MediaFrameSourceSetPropertyStatus
{
    Success = 0,
    UnknownFailure = 1,
    NotSupported = 2,
    InvalidValue = 3,
    DeviceNotAvailable = 4,
    NotInControl = 5,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Pwm.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Devices.Pwm.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Devices::Pwm {

struct WINRT_EBO PwmController :
    Windows::Devices::Pwm::IPwmController
{
    PwmController(std::nullptr_t) noexcept {}
    static Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Pwm::PwmController>> GetControllersAsync(const Windows::Devices::Pwm::Provider::IPwmProvider & provider);
    static Windows::Foundation::IAsyncOperation<Windows::Devices::Pwm::PwmController> GetDefaultAsync();
};

struct WINRT_EBO PwmPin :
    Windows::Devices::Pwm::IPwmPin
{
    PwmPin(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Phone.UI.Input.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Phone.UI.Input.0.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Phone::UI::Input {

struct __declspec(uuid("f6f555ff-64ec-42a2-b93b-2fbc0c36a121")) __declspec(novtable) IBackPressedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Handled(bool * value) = 0;
    virtual HRESULT __stdcall put_Handled(bool value) = 0;
};

struct __declspec(uuid("b4063bda-201f-473d-bc69-e9e4ac57c9d0")) __declspec(novtable) ICameraEventArgs : Windows::IInspectable
{
};

struct __declspec(uuid("594b8780-da66-4fd8-a776-7506bd0cbfa7")) __declspec(novtable) IHardwareButtonsStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall add_BackPressed(Windows::Foundation::EventHandler<Windows::Phone::UI::Input::BackPressedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_BackPressed(event_token token) = 0;
};

struct __declspec(uuid("39c6c274-993f-40dd-854c-831a8934b92e")) __declspec(novtable) IHardwareButtonsStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall add_CameraHalfPressed(Windows::Foundation::EventHandler<Windows::Phone::UI::Input::CameraEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_CameraHalfPressed(event_token token) = 0;
    virtual HRESULT __stdcall add_CameraPressed(Windows::Foundation::EventHandler<Windows::Phone::UI::Input::CameraEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_CameraPressed(event_token token) = 0;
    virtual HRESULT __stdcall add_CameraReleased(Windows::Foundation::EventHandler<Windows::Phone::UI::Input::CameraEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_CameraReleased(event_token token) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Phone::UI::Input::BackPressedEventArgs> { using default_interface = Windows::Phone::UI::Input::IBackPressedEventArgs; };
template <> struct traits<Windows::Phone::UI::Input::CameraEventArgs> { using default_interface = Windows::Phone::UI::Input::ICameraEventArgs; };

}

namespace Windows::Phone::UI::Input {

template <typename T> struct impl_IBackPressedEventArgs;
template <typename T> struct impl_ICameraEventArgs;
template <typename T> struct impl_IHardwareButtonsStatics;
template <typename T> struct impl_IHardwareButtonsStatics2;

}

namespace impl {

template <> struct traits<Windows::Phone::UI::Input::IBackPressedEventArgs>
{
    using abi = ABI::Windows::Phone::UI::Input::IBackPressedEventArgs;
    template <typename D> using consume = Windows::Phone::UI::Input::impl_IBackPressedEventArgs<D>;
};

template <> struct traits<Windows::Phone::UI::Input::ICameraEventArgs>
{
    using abi = ABI::Windows::Phone::UI::Input::ICameraEventArgs;
    template <typename D> using consume = Windows::Phone::UI::Input::impl_ICameraEventArgs<D>;
};

template <> struct traits<Windows::Phone::UI::Input::IHardwareButtonsStatics>
{
    using abi = ABI::Windows::Phone::UI::Input::IHardwareButtonsStatics;
    template <typename D> using consume = Windows::Phone::UI::Input::impl_IHardwareButtonsStatics<D>;
};

template <> struct traits<Windows::Phone::UI::Input::IHardwareButtonsStatics2>
{
    using abi = ABI::Windows::Phone::UI::Input::IHardwareButtonsStatics2;
    template <typename D> using consume = Windows::Phone::UI::Input::impl_IHardwareButtonsStatics2<D>;
};

template <> struct traits<Windows::Phone::UI::Input::BackPressedEventArgs>
{
    using abi = ABI::Windows::Phone::UI::Input::BackPressedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Phone.UI.Input.BackPressedEventArgs"; }
};

template <> struct traits<Windows::Phone::UI::Input::CameraEventArgs>
{
    using abi = ABI::Windows::Phone::UI::Input::CameraEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Phone.UI.Input.CameraEventArgs"; }
};

template <> struct traits<Windows::Phone::UI::Input::HardwareButtons>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Phone.UI.Input.HardwareButtons"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Devices.Portable.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Storage.3.h"
#include "internal/Windows.Devices.Portable.3.h"
#include "Windows.Devices.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Devices::Portable::IServiceDeviceStatics> : produce_base<D, Windows::Devices::Portable::IServiceDeviceStatics>
{
    HRESULT __stdcall abi_GetDeviceSelector(Windows::Devices::Portable::ServiceDeviceType serviceType, abi_arg_out<hstring> selector) noexcept override
    {
        try
        {
            *selector = detach(this->shim().GetDeviceSelector(serviceType));
            return S_OK;
        }
        catch (...)
        {
            *selector = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeviceSelectorFromServiceId(GUID serviceId, abi_arg_out<hstring> selector) noexcept override
    {
        try
        {
            *selector = detach(this->shim().GetDeviceSelectorFromServiceId(serviceId));
            return S_OK;
        }
        catch (...)
        {
            *selector = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Portable::IStorageDeviceStatics> : produce_base<D, Windows::Devices::Portable::IStorageDeviceStatics>
{
    HRESULT __stdcall abi_FromId(abi_arg_in<hstring> deviceId, abi_arg_out<Windows::Storage::IStorageFolder> deviceRoot) noexcept override
    {
        try
        {
            *deviceRoot = detach(this->shim().FromId(*reinterpret_cast<const hstring *>(&deviceId)));
            return S_OK;
        }
        catch (...)
        {
            *deviceRoot = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeviceSelector(abi_arg_out<hstring> selector) noexcept override
    {
        try
        {
            *selector = detach(this->shim().GetDeviceSelector());
            return S_OK;
        }
        catch (...)
        {
            *selector = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Devices::Portable {

template <typename D> Windows::Storage::StorageFolder impl_IStorageDeviceStatics<D>::FromId(hstring_ref deviceId) const
{
    Windows::Storage::StorageFolder deviceRoot { nullptr };
    check_hresult(static_cast<const IStorageDeviceStatics &>(static_cast<const D &>(*this))->abi_FromId(get(deviceId), put(deviceRoot)));
    return deviceRoot;
}

template <typename D> hstring impl_IStorageDeviceStatics<D>::GetDeviceSelector() const
{
    hstring selector;
    check_hresult(static_cast<const IStorageDeviceStatics &>(static_cast<const D &>(*this))->abi_GetDeviceSelector(put(selector)));
    return selector;
}

template <typename D> hstring impl_IServiceDeviceStatics<D>::GetDeviceSelector(Windows::Devices::Portable::ServiceDeviceType serviceType) const
{
    hstring selector;
    check_hresult(static_cast<const IServiceDeviceStatics &>(static_cast<const D &>(*this))->abi_GetDeviceSelector(serviceType, put(selector)));
    return selector;
}

template <typename D> hstring impl_IServiceDeviceStatics<D>::GetDeviceSelectorFromServiceId(GUID serviceId) const
{
    hstring selector;
    check_hresult(static_cast<const IServiceDeviceStatics &>(static_cast<const D &>(*this))->abi_GetDeviceSelectorFromServiceId(serviceId, put(selector)));
    return selector;
}

inline hstring ServiceDevice::GetDeviceSelector(Windows::Devices::Portable::ServiceDeviceType serviceType)
{
    return get_activation_factory<ServiceDevice, IServiceDeviceStatics>().GetDeviceSelector(serviceType);
}

inline hstring ServiceDevice::GetDeviceSelectorFromServiceId(GUID serviceId)
{
    return get_activation_factory<ServiceDevice, IServiceDeviceStatics>().GetDeviceSelectorFromServiceId(serviceId);
}

inline Windows::Storage::StorageFolder StorageDevice::FromId(hstring_ref deviceId)
{
    return get_activation_factory<StorageDevice, IStorageDeviceStatics>().FromId(deviceId);
}

inline hstring StorageDevice::GetDeviceSelector()
{
    return get_activation_factory<StorageDevice, IStorageDeviceStatics>().GetDeviceSelector();
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Resources.Core.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.ApplicationModel.Resources.Core.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_f6d1f700_49c2_52ae_8154_826f9908773c
#define WINRT_GENERIC_f6d1f700_49c2_52ae_8154_826f9908773c
template <> struct __declspec(uuid("f6d1f700-49c2-52ae-8154-826f9908773c")) __declspec(novtable) IMap<hstring, hstring> : impl_IMap<hstring, hstring> {};
#endif

#ifndef WINRT_GENERIC_60310303_49c5_52e6_abc6_a9b36eccc716
#define WINRT_GENERIC_60310303_49c5_52e6_abc6_a9b36eccc716
template <> struct __declspec(uuid("60310303-49c5-52e6-abc6-a9b36eccc716")) __declspec(novtable) IKeyValuePair<hstring, hstring> : impl_IKeyValuePair<hstring, hstring> {};
#endif

#ifndef WINRT_GENERIC_1e036276_2f60_55f6_b7f3_f86079e6900b
#define WINRT_GENERIC_1e036276_2f60_55f6_b7f3_f86079e6900b
template <> struct __declspec(uuid("1e036276-2f60-55f6-b7f3-f86079e6900b")) __declspec(novtable) IObservableMap<hstring, hstring> : impl_IObservableMap<hstring, hstring> {};
#endif

#ifndef WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
#define WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
template <> struct __declspec(uuid("2f13c006-a03a-5f69-b090-75a43e33423e")) __declspec(novtable) IVectorView<hstring> : impl_IVectorView<hstring> {};
#endif

#ifndef WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
#define WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
template <> struct __declspec(uuid("e2fcc7c1-3bfc-5a0b-b2b0-72e769d1cb7e")) __declspec(novtable) IIterable<hstring> : impl_IIterable<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_430ecece_1418_5d19_81b2_5ddb381603cc
#define WINRT_GENERIC_430ecece_1418_5d19_81b2_5ddb381603cc
template <> struct __declspec(uuid("430ecece-1418-5d19-81b2-5ddb381603cc")) __declspec(novtable) IAsyncOperation<Windows::Storage::Streams::IRandomAccessStream> : impl_IAsyncOperation<Windows::Storage::Streams::IRandomAccessStream> {};
#endif

#ifndef WINRT_GENERIC_5e52f8ce_aced_5a42_95b4_f674dd84885e
#define WINRT_GENERIC_5e52f8ce_aced_5a42_95b4_f674dd84885e
template <> struct __declspec(uuid("5e52f8ce-aced-5a42-95b4-f674dd84885e")) __declspec(novtable) IAsyncOperation<Windows::Storage::StorageFile> : impl_IAsyncOperation<Windows::Storage::StorageFile> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_d4349ade_93b1_5325_ba5c_05f35eeffc55
#define WINRT_GENERIC_d4349ade_93b1_5325_ba5c_05f35eeffc55
template <> struct __declspec(uuid("d4349ade-93b1-5325-ba5c-05f35eeffc55")) __declspec(novtable) IMapView<hstring, Windows::ApplicationModel::Resources::Core::ResourceMap> : impl_IMapView<hstring, Windows::ApplicationModel::Resources::Core::ResourceMap> {};
#endif

#ifndef WINRT_GENERIC_76d43c7e_fd09_5908_a2b9_a49b4848294b
#define WINRT_GENERIC_76d43c7e_fd09_5908_a2b9_a49b4848294b
template <> struct __declspec(uuid("76d43c7e-fd09-5908-a2b9-a49b4848294b")) __declspec(novtable) IIterable<Windows::Storage::IStorageFile> : impl_IIterable<Windows::Storage::IStorageFile> {};
#endif

#ifndef WINRT_GENERIC_4825d6c4_835a_5da1_9bdd_12e97e16fb7a
#define WINRT_GENERIC_4825d6c4_835a_5da1_9bdd_12e97e16fb7a
template <> struct __declspec(uuid("4825d6c4-835a-5da1-9bdd-12e97e16fb7a")) __declspec(novtable) IMapView<hstring, Windows::ApplicationModel::Resources::Core::NamedResource> : impl_IMapView<hstring, Windows::ApplicationModel::Resources::Core::NamedResource> {};
#endif

#ifndef WINRT_GENERIC_bd4b0143_3a22_5ee2_92ed_7bc3c129e52b
#define WINRT_GENERIC_bd4b0143_3a22_5ee2_92ed_7bc3c129e52b
template <> struct __declspec(uuid("bd4b0143-3a22-5ee2-92ed-7bc3c129e52b")) __declspec(novtable) IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::NamedResource> : impl_IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::NamedResource> {};
#endif

#ifndef WINRT_GENERIC_66c9da16_d345_5bdb_b953_d86dd9ea8409
#define WINRT_GENERIC_66c9da16_d345_5bdb_b953_d86dd9ea8409
template <> struct __declspec(uuid("66c9da16-d345-5bdb-b953-d86dd9ea8409")) __declspec(novtable) IVectorView<Windows::ApplicationModel::Resources::Core::NamedResource> : impl_IVectorView<Windows::ApplicationModel::Resources::Core::NamedResource> {};
#endif

#ifndef WINRT_GENERIC_f2656ef5_fc27_5c24_a8c2_1697e0be736f
#define WINRT_GENERIC_f2656ef5_fc27_5c24_a8c2_1697e0be736f
template <> struct __declspec(uuid("f2656ef5-fc27-5c24-a8c2-1697e0be736f")) __declspec(novtable) IVectorView<Windows::ApplicationModel::Resources::Core::ResourceMap> : impl_IVectorView<Windows::ApplicationModel::Resources::Core::ResourceMap> {};
#endif

#ifndef WINRT_GENERIC_2eee68e2_687c_5f7a_a14e_588c4d3089e1
#define WINRT_GENERIC_2eee68e2_687c_5f7a_a14e_588c4d3089e1
template <> struct __declspec(uuid("2eee68e2-687c-5f7a-a14e-588c4d3089e1")) __declspec(novtable) IIterable<Windows::ApplicationModel::Resources::Core::ResourceQualifier> : impl_IIterable<Windows::ApplicationModel::Resources::Core::ResourceQualifier> {};
#endif

#ifndef WINRT_GENERIC_b82c58dc_1cc0_53f0_b0f4_66ef39a81cd6
#define WINRT_GENERIC_b82c58dc_1cc0_53f0_b0f4_66ef39a81cd6
template <> struct __declspec(uuid("b82c58dc-1cc0-53f0-b0f4-66ef39a81cd6")) __declspec(novtable) IVectorView<Windows::ApplicationModel::Resources::Core::ResourceQualifier> : impl_IVectorView<Windows::ApplicationModel::Resources::Core::ResourceQualifier> {};
#endif

#ifndef WINRT_GENERIC_e28e92f0_9ffb_5ea7_9fc9_a73bda471886
#define WINRT_GENERIC_e28e92f0_9ffb_5ea7_9fc9_a73bda471886
template <> struct __declspec(uuid("e28e92f0-9ffb-5ea7-9fc9-a73bda471886")) __declspec(novtable) IVectorView<Windows::ApplicationModel::Resources::Core::ResourceCandidate> : impl_IVectorView<Windows::ApplicationModel::Resources::Core::ResourceCandidate> {};
#endif

#ifndef WINRT_GENERIC_159782ba_798d_5ae6_85c7_c7bb551aae61
#define WINRT_GENERIC_159782ba_798d_5ae6_85c7_c7bb551aae61
template <> struct __declspec(uuid("159782ba-798d-5ae6-85c7-c7bb551aae61")) __declspec(novtable) IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::ResourceMap> : impl_IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::ResourceMap> {};
#endif

#ifndef WINRT_GENERIC_ac7f26f2_feb7_5b2a_8ac4_345bc62caede
#define WINRT_GENERIC_ac7f26f2_feb7_5b2a_8ac4_345bc62caede
template <> struct __declspec(uuid("ac7f26f2-feb7-5b2a-8ac4-345bc62caede")) __declspec(novtable) IMapView<hstring, hstring> : impl_IMapView<hstring, hstring> {};
#endif

#ifndef WINRT_GENERIC_d89c9498_8869_57f8_a883_9c2dfeecb6c6
#define WINRT_GENERIC_d89c9498_8869_57f8_a883_9c2dfeecb6c6
template <> struct __declspec(uuid("d89c9498-8869-57f8-a883-9c2dfeecb6c6")) __declspec(novtable) IIterable<Windows::ApplicationModel::Resources::Core::ResourceCandidate> : impl_IIterable<Windows::ApplicationModel::Resources::Core::ResourceCandidate> {};
#endif

#ifndef WINRT_GENERIC_60141efb_f2f9_5377_96fd_f8c60d9558b5
#define WINRT_GENERIC_60141efb_f2f9_5377_96fd_f8c60d9558b5
template <> struct __declspec(uuid("60141efb-f2f9-5377-96fd-f8c60d9558b5")) __declspec(novtable) IMapChangedEventArgs<hstring> : impl_IMapChangedEventArgs<hstring> {};
#endif

#ifndef WINRT_GENERIC_e2663f37_2e1b_500c_ad68_c3ed7a8f74c8
#define WINRT_GENERIC_e2663f37_2e1b_500c_ad68_c3ed7a8f74c8
template <> struct __declspec(uuid("e2663f37-2e1b-500c-ad68-c3ed7a8f74c8")) __declspec(novtable) MapChangedEventHandler<hstring, hstring> : impl_MapChangedEventHandler<hstring, hstring> {};
#endif

#ifndef WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
#define WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
template <> struct __declspec(uuid("8c304ebb-6615-50a4-8829-879ecd443236")) __declspec(novtable) IIterator<hstring> : impl_IIterator<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_398c4183_793d_5b00_819b_4aef92485e94
#define WINRT_GENERIC_398c4183_793d_5b00_819b_4aef92485e94
template <> struct __declspec(uuid("398c4183-793d-5b00-819b-4aef92485e94")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Storage::Streams::IRandomAccessStream> : impl_AsyncOperationCompletedHandler<Windows::Storage::Streams::IRandomAccessStream> {};
#endif

#ifndef WINRT_GENERIC_e521c894_2c26_5946_9e61_2b5e188d01ed
#define WINRT_GENERIC_e521c894_2c26_5946_9e61_2b5e188d01ed
template <> struct __declspec(uuid("e521c894-2c26-5946-9e61-2b5e188d01ed")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Storage::StorageFile> : impl_AsyncOperationCompletedHandler<Windows::Storage::StorageFile> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_314d2318_74ee_535c_b361_2144dbc573a0
#define WINRT_GENERIC_314d2318_74ee_535c_b361_2144dbc573a0
template <> struct __declspec(uuid("314d2318-74ee-535c-b361-2144dbc573a0")) __declspec(novtable) IIterator<Windows::Storage::IStorageFile> : impl_IIterator<Windows::Storage::IStorageFile> {};
#endif

#ifndef WINRT_GENERIC_0c5a605f_a7f1_5030_a179_9fd363caf3b5
#define WINRT_GENERIC_0c5a605f_a7f1_5030_a179_9fd363caf3b5
template <> struct __declspec(uuid("0c5a605f-a7f1-5030-a179-9fd363caf3b5")) __declspec(novtable) IIterator<Windows::ApplicationModel::Resources::Core::NamedResource> : impl_IIterator<Windows::ApplicationModel::Resources::Core::NamedResource> {};
#endif

#ifndef WINRT_GENERIC_e80d3d9d_96c9_579e_8e42_d550700de925
#define WINRT_GENERIC_e80d3d9d_96c9_579e_8e42_d550700de925
template <> struct __declspec(uuid("e80d3d9d-96c9-579e-8e42-d550700de925")) __declspec(novtable) IIterable<Windows::ApplicationModel::Resources::Core::NamedResource> : impl_IIterable<Windows::ApplicationModel::Resources::Core::NamedResource> {};
#endif

#ifndef WINRT_GENERIC_3dedcae6_d048_5eaa_afa2_fb4a7970ef68
#define WINRT_GENERIC_3dedcae6_d048_5eaa_afa2_fb4a7970ef68
template <> struct __declspec(uuid("3dedcae6-d048-5eaa-afa2-fb4a7970ef68")) __declspec(novtable) IIterator<Windows::ApplicationModel::Resources::Core::ResourceMap> : impl_IIterator<Windows::ApplicationModel::Resources::Core::ResourceMap> {};
#endif

#ifndef WINRT_GENERIC_8bbe1154_19aa_53e7_9d6e_dc7d358580f4
#define WINRT_GENERIC_8bbe1154_19aa_53e7_9d6e_dc7d358580f4
template <> struct __declspec(uuid("8bbe1154-19aa-53e7-9d6e-dc7d358580f4")) __declspec(novtable) IIterable<Windows::ApplicationModel::Resources::Core::ResourceMap> : impl_IIterable<Windows::ApplicationModel::Resources::Core::ResourceMap> {};
#endif

#ifndef WINRT_GENERIC_fedb74db_e74f_597a_b9bf_704b0dadca38
#define WINRT_GENERIC_fedb74db_e74f_597a_b9bf_704b0dadca38
template <> struct __declspec(uuid("fedb74db-e74f-597a-b9bf-704b0dadca38")) __declspec(novtable) IIterator<Windows::ApplicationModel::Resources::Core::ResourceQualifier> : impl_IIterator<Windows::ApplicationModel::Resources::Core::ResourceQualifier> {};
#endif

#ifndef WINRT_GENERIC_e151bd8c_a286_57ab_bcea_79b7bc2687a1
#define WINRT_GENERIC_e151bd8c_a286_57ab_bcea_79b7bc2687a1
template <> struct __declspec(uuid("e151bd8c-a286-57ab-bcea-79b7bc2687a1")) __declspec(novtable) IIterator<Windows::ApplicationModel::Resources::Core::ResourceCandidate> : impl_IIterator<Windows::ApplicationModel::Resources::Core::ResourceCandidate> {};
#endif

#ifndef WINRT_GENERIC_e9bdaaf0_cbf6_5c72_be90_29cbf3a1319b
#define WINRT_GENERIC_e9bdaaf0_cbf6_5c72_be90_29cbf3a1319b
template <> struct __declspec(uuid("e9bdaaf0-cbf6-5c72-be90-29cbf3a1319b")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>> {};
#endif

#ifndef WINRT_GENERIC_bf16482e_80ed_51f0_b9c9_3a804e2d6403
#define WINRT_GENERIC_bf16482e_80ed_51f0_b9c9_3a804e2d6403
template <> struct __declspec(uuid("bf16482e-80ed-51f0-b9c9-3a804e2d6403")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::NamedResource>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::NamedResource>> {};
#endif

#ifndef WINRT_GENERIC_7fdcc3d7_e13e_5f76_afc6_0769c4086399
#define WINRT_GENERIC_7fdcc3d7_e13e_5f76_afc6_0769c4086399
template <> struct __declspec(uuid("7fdcc3d7-e13e-5f76-afc6-0769c4086399")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::NamedResource>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::NamedResource>> {};
#endif

#ifndef WINRT_GENERIC_9895431e_a817_5509_91e6_d90a933ed830
#define WINRT_GENERIC_9895431e_a817_5509_91e6_d90a933ed830
template <> struct __declspec(uuid("9895431e-a817-5509-91e6-d90a933ed830")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::ResourceMap>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::ResourceMap>> {};
#endif

#ifndef WINRT_GENERIC_28cf8d5e_69f6_59f6_9865_bca97d59f74f
#define WINRT_GENERIC_28cf8d5e_69f6_59f6_9865_bca97d59f74f
template <> struct __declspec(uuid("28cf8d5e-69f6-59f6-9865-bca97d59f74f")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::ResourceMap>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::ResourceMap>> {};
#endif

#ifndef WINRT_GENERIC_05eb86f1_7140_5517_b88d_cbaebe57e6b1
#define WINRT_GENERIC_05eb86f1_7140_5517_b88d_cbaebe57e6b1
template <> struct __declspec(uuid("05eb86f1-7140-5517-b88d-cbaebe57e6b1")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>> {};
#endif


}

namespace Windows::ApplicationModel::Resources::Core {

template <typename D>
struct WINRT_EBO impl_INamedResource
{
    Windows::Foundation::Uri Uri() const;
    Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Resources::Core::ResourceCandidate> Candidates() const;
    Windows::ApplicationModel::Resources::Core::ResourceCandidate Resolve() const;
    Windows::ApplicationModel::Resources::Core::ResourceCandidate Resolve(const Windows::ApplicationModel::Resources::Core::ResourceContext & resourceContext) const;
    Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Resources::Core::ResourceCandidate> ResolveAll() const;
    Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Resources::Core::ResourceCandidate> ResolveAll(const Windows::ApplicationModel::Resources::Core::ResourceContext & resourceContext) const;
};

template <typename D>
struct WINRT_EBO impl_IResourceCandidate
{
    Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Resources::Core::ResourceQualifier> Qualifiers() const;
    bool IsMatch() const;
    bool IsMatchAsDefault() const;
    bool IsDefault() const;
    hstring ValueAsString() const;
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> GetValueAsFileAsync() const;
    hstring GetQualifierValue(hstring_ref qualifierName) const;
};

template <typename D>
struct WINRT_EBO impl_IResourceCandidate2
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IRandomAccessStream> GetValueAsStreamAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IResourceContext
{
    Windows::Foundation::Collections::IObservableMap<hstring, hstring> QualifierValues() const;
    void Reset() const;
    void Reset(const Windows::Foundation::Collections::IIterable<hstring> & qualifierNames) const;
    void OverrideToMatch(const Windows::Foundation::Collections::IIterable<Windows::ApplicationModel::Resources::Core::ResourceQualifier> & result) const;
    Windows::ApplicationModel::Resources::Core::ResourceContext Clone() const;
    Windows::Foundation::Collections::IVectorView<hstring> Languages() const;
    void Languages(const Windows::Foundation::Collections::IVectorView<hstring> & languages) const;
};

template <typename D>
struct WINRT_EBO impl_IResourceContextStatics
{
    Windows::ApplicationModel::Resources::Core::ResourceContext CreateMatchingContext(const Windows::Foundation::Collections::IIterable<Windows::ApplicationModel::Resources::Core::ResourceQualifier> & result) const;
};

template <typename D>
struct WINRT_EBO impl_IResourceContextStatics2
{
    Windows::ApplicationModel::Resources::Core::ResourceContext GetForCurrentView() const;
    void SetGlobalQualifierValue(hstring_ref key, hstring_ref value) const;
    void ResetGlobalQualifierValues() const;
    void ResetGlobalQualifierValues(const Windows::Foundation::Collections::IIterable<hstring> & qualifierNames) const;
    Windows::ApplicationModel::Resources::Core::ResourceContext GetForViewIndependentUse() const;
};

template <typename D>
struct WINRT_EBO impl_IResourceContextStatics3
{
    void SetGlobalQualifierValue(hstring_ref key, hstring_ref value, Windows::ApplicationModel::Resources::Core::ResourceQualifierPersistence persistence) const;
};

template <typename D>
struct WINRT_EBO impl_IResourceManager
{
    Windows::ApplicationModel::Resources::Core::ResourceMap MainResourceMap() const;
    Windows::Foundation::Collections::IMapView<hstring, Windows::ApplicationModel::Resources::Core::ResourceMap> AllResourceMaps() const;
    Windows::ApplicationModel::Resources::Core::ResourceContext DefaultContext() const;
    void LoadPriFiles(const Windows::Foundation::Collections::IIterable<Windows::Storage::IStorageFile> & files) const;
    void UnloadPriFiles(const Windows::Foundation::Collections::IIterable<Windows::Storage::IStorageFile> & files) const;
};

template <typename D>
struct WINRT_EBO impl_IResourceManager2
{
    Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Resources::Core::NamedResource> GetAllNamedResourcesForPackage(hstring_ref packageName, const Windows::ApplicationModel::Resources::Core::ResourceLayoutInfo & resourceLayoutInfo) const;
    Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Resources::Core::ResourceMap> GetAllSubtreesForPackage(hstring_ref packageName, const Windows::ApplicationModel::Resources::Core::ResourceLayoutInfo & resourceLayoutInfo) const;
};

template <typename D>
struct WINRT_EBO impl_IResourceManagerStatics
{
    Windows::ApplicationModel::Resources::Core::ResourceManager Current() const;
    bool IsResourceReference(hstring_ref resourceReference) const;
};

template <typename D>
struct WINRT_EBO impl_IResourceMap
{
    Windows::Foundation::Uri Uri() const;
    Windows::ApplicationModel::Resources::Core::ResourceCandidate GetValue(hstring_ref resource) const;
    Windows::ApplicationModel::Resources::Core::ResourceCandidate GetValue(hstring_ref resource, const Windows::ApplicationModel::Resources::Core::ResourceContext & context) const;
    Windows::ApplicationModel::Resources::Core::ResourceMap GetSubtree(hstring_ref reference) const;
};

template <typename D>
struct WINRT_EBO impl_IResourceQualifier
{
    hstring QualifierName() const;
    hstring QualifierValue() const;
    bool IsDefault() const;
    bool IsMatch() const;
    double Score() const;
};

struct INamedResource :
    Windows::IInspectable,
    impl::consume<INamedResource>
{
    INamedResource(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<INamedResource>(m_ptr); }
};

struct IResourceCandidate :
    Windows::IInspectable,
    impl::consume<IResourceCandidate>
{
    IResourceCandidate(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceCandidate>(m_ptr); }
};

struct IResourceCandidate2 :
    Windows::IInspectable,
    impl::consume<IResourceCandidate2>
{
    IResourceCandidate2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceCandidate2>(m_ptr); }
};

struct IResourceContext :
    Windows::IInspectable,
    impl::consume<IResourceContext>
{
    IResourceContext(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceContext>(m_ptr); }
};

struct IResourceContextStatics :
    Windows::IInspectable,
    impl::consume<IResourceContextStatics>
{
    IResourceContextStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceContextStatics>(m_ptr); }
};

struct IResourceContextStatics2 :
    Windows::IInspectable,
    impl::consume<IResourceContextStatics2>
{
    IResourceContextStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceContextStatics2>(m_ptr); }
};

struct IResourceContextStatics3 :
    Windows::IInspectable,
    impl::consume<IResourceContextStatics3>
{
    IResourceContextStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceContextStatics3>(m_ptr); }
};

struct IResourceManager :
    Windows::IInspectable,
    impl::consume<IResourceManager>
{
    IResourceManager(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceManager>(m_ptr); }
};

struct IResourceManager2 :
    Windows::IInspectable,
    impl::consume<IResourceManager2>
{
    IResourceManager2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceManager2>(m_ptr); }
};

struct IResourceManagerStatics :
    Windows::IInspectable,
    impl::consume<IResourceManagerStatics>
{
    IResourceManagerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceManagerStatics>(m_ptr); }
};

struct IResourceMap :
    Windows::IInspectable,
    impl::consume<IResourceMap>,
    impl::require<IResourceMap, Windows::Foundation::Collections::IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::ApplicationModel::Resources::Core::NamedResource>>, Windows::Foundation::Collections::IMapView<hstring, Windows::ApplicationModel::Resources::Core::NamedResource>>
{
    IResourceMap(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceMap>(m_ptr); }
};

struct IResourceQualifier :
    Windows::IInspectable,
    impl::consume<IResourceQualifier>
{
    IResourceQualifier(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IResourceQualifier>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Sensors.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Devices.Sensors.1.h"
#include "Windows.Foundation.2.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_513ef3af_e784_5325_a91e_97c2b8111cf3
#define WINRT_GENERIC_513ef3af_e784_5325_a91e_97c2b8111cf3
template <> struct __declspec(uuid("513ef3af-e784-5325-a91e-97c2b8111cf3")) __declspec(novtable) IReference<uint32_t> : impl_IReference<uint32_t> {};
#endif

#ifndef WINRT_GENERIC_2f2d6c29_5473_5f3e_92e7_96572bb990e2
#define WINRT_GENERIC_2f2d6c29_5473_5f3e_92e7_96572bb990e2
template <> struct __declspec(uuid("2f2d6c29-5473-5f3e-92e7-96572bb990e2")) __declspec(novtable) IReference<double> : impl_IReference<double> {};
#endif

#ifndef WINRT_GENERIC_a5e83e40_b597_5b83_92f5_5bed3926ca80
#define WINRT_GENERIC_a5e83e40_b597_5b83_92f5_5bed3926ca80
template <> struct __declspec(uuid("a5e83e40-b597-5b83-92f5-5bed3926ca80")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::Accelerometer, Windows::Devices::Sensors::AccelerometerReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::Accelerometer, Windows::Devices::Sensors::AccelerometerReadingChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_3e5d6eaf_f169_5d60_92b0_98cd6bd8f808
#define WINRT_GENERIC_3e5d6eaf_f169_5d60_92b0_98cd6bd8f808
template <> struct __declspec(uuid("3e5d6eaf-f169-5d60-92b0-98cd6bd8f808")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::Accelerometer, Windows::Devices::Sensors::AccelerometerShakenEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::Accelerometer, Windows::Devices::Sensors::AccelerometerShakenEventArgs> {};
#endif

#ifndef WINRT_GENERIC_6f3b411f_d147_59f1_bbe4_7bec396c7b6e
#define WINRT_GENERIC_6f3b411f_d147_59f1_bbe4_7bec396c7b6e
template <> struct __declspec(uuid("6f3b411f-d147-59f1-bbe4-7bec396c7b6e")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::Inclinometer, Windows::Devices::Sensors::InclinometerReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::Inclinometer, Windows::Devices::Sensors::InclinometerReadingChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_15171524_5786_59a5_af5b_a01245726c44
#define WINRT_GENERIC_15171524_5786_59a5_af5b_a01245726c44
template <> struct __declspec(uuid("15171524-5786-59a5-af5b-a01245726c44")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::Gyrometer, Windows::Devices::Sensors::GyrometerReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::Gyrometer, Windows::Devices::Sensors::GyrometerReadingChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_e787d73d_a121_5ae6_b497_ab934837e57f
#define WINRT_GENERIC_e787d73d_a121_5ae6_b497_ab934837e57f
template <> struct __declspec(uuid("e787d73d-a121-5ae6-b497-ab934837e57f")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::Compass, Windows::Devices::Sensors::CompassReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::Compass, Windows::Devices::Sensors::CompassReadingChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_1ecf183a_9f0a_5f73_9225_5a33eab5594f
#define WINRT_GENERIC_1ecf183a_9f0a_5f73_9225_5a33eab5594f
template <> struct __declspec(uuid("1ecf183a-9f0a-5f73-9225-5a33eab5594f")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::LightSensor, Windows::Devices::Sensors::LightSensorReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::LightSensor, Windows::Devices::Sensors::LightSensorReadingChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_91ae0c43_e1f7_577d_a161_8aaf275eb927
#define WINRT_GENERIC_91ae0c43_e1f7_577d_a161_8aaf275eb927
template <> struct __declspec(uuid("91ae0c43-e1f7-577d-a161-8aaf275eb927")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::OrientationSensor, Windows::Devices::Sensors::OrientationSensorReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::OrientationSensor, Windows::Devices::Sensors::OrientationSensorReadingChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_92437fa7_ea7b_5fc5_8ecf_1b911bea2bfc
#define WINRT_GENERIC_92437fa7_ea7b_5fc5_8ecf_1b911bea2bfc
template <> struct __declspec(uuid("92437fa7-ea7b-5fc5-8ecf-1b911bea2bfc")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::SimpleOrientationSensor, Windows::Devices::Sensors::SimpleOrientationSensorOrientationChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::SimpleOrientationSensor, Windows::Devices::Sensors::SimpleOrientationSensorOrientationChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_f9a0da76_c4fd_50ab_98b6_bfd26d6d3d82
#define WINRT_GENERIC_f9a0da76_c4fd_50ab_98b6_bfd26d6d3d82
template <> struct __declspec(uuid("f9a0da76-c4fd-50ab-98b6-bfd26d6d3d82")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::Magnetometer, Windows::Devices::Sensors::MagnetometerReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::Magnetometer, Windows::Devices::Sensors::MagnetometerReadingChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_c33003ae_e7ae_572b_8d55_7db197356c30
#define WINRT_GENERIC_c33003ae_e7ae_572b_8d55_7db197356c30
template <> struct __declspec(uuid("c33003ae-e7ae-572b-8d55-7db197356c30")) __declspec(novtable) IAsyncOperation<Windows::Devices::Sensors::ActivitySensor> : impl_IAsyncOperation<Windows::Devices::Sensors::ActivitySensor> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_726234a9_7137_55c4_a444_352dcdc30d77
#define WINRT_GENERIC_726234a9_7137_55c4_a444_352dcdc30d77
template <> struct __declspec(uuid("726234a9-7137-55c4-a444-352dcdc30d77")) __declspec(novtable) IVectorView<Windows::Devices::Sensors::ActivitySensorReading> : impl_IVectorView<Windows::Devices::Sensors::ActivitySensorReading> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_79a87969_327f_5b7a_a0d3_73eab16de21c
#define WINRT_GENERIC_79a87969_327f_5b7a_a0d3_73eab16de21c
template <> struct __declspec(uuid("79a87969-327f-5b7a-a0d3-73eab16de21c")) __declspec(novtable) IAsyncOperation<Windows::Devices::Sensors::ActivitySensorReading> : impl_IAsyncOperation<Windows::Devices::Sensors::ActivitySensorReading> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_e3e660d6_d041_5ecd_b18b_fa254e4a860f
#define WINRT_GENERIC_e3e660d6_d041_5ecd_b18b_fa254e4a860f
template <> struct __declspec(uuid("e3e660d6-d041-5ecd-b18b-fa254e4a860f")) __declspec(novtable) IVector<winrt::Windows::Devices::Sensors::ActivityType> : impl_IVector<winrt::Windows::Devices::Sensors::ActivityType> {};
#endif

#ifndef WINRT_GENERIC_fc7a0488_2803_505c_9e62_9200afe416c6
#define WINRT_GENERIC_fc7a0488_2803_505c_9e62_9200afe416c6
template <> struct __declspec(uuid("fc7a0488-2803-505c-9e62-9200afe416c6")) __declspec(novtable) IVectorView<winrt::Windows::Devices::Sensors::ActivityType> : impl_IVectorView<winrt::Windows::Devices::Sensors::ActivityType> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_a5b72e01_546c_5fbb_b847_49200aaaaac5
#define WINRT_GENERIC_a5b72e01_546c_5fbb_b847_49200aaaaac5
template <> struct __declspec(uuid("a5b72e01-546c-5fbb-b847-49200aaaaac5")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::ActivitySensor, Windows::Devices::Sensors::ActivitySensorReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::ActivitySensor, Windows::Devices::Sensors::ActivitySensorReadingChangedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_10e48a80_dd6a_5704_8f3d_3d46111f391e
#define WINRT_GENERIC_10e48a80_dd6a_5704_8f3d_3d46111f391e
template <> struct __declspec(uuid("10e48a80-dd6a-5704-8f3d-3d46111f391e")) __declspec(novtable) IVectorView<Windows::Devices::Sensors::ActivitySensorReadingChangeReport> : impl_IVectorView<Windows::Devices::Sensors::ActivitySensorReadingChangeReport> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_e4caf459_d101_5ca5_a4ea_deb0917ae27e
#define WINRT_GENERIC_e4caf459_d101_5ca5_a4ea_deb0917ae27e
template <> struct __declspec(uuid("e4caf459-d101-5ca5-a4ea-deb0917ae27e")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::Barometer, Windows::Devices::Sensors::BarometerReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::Barometer, Windows::Devices::Sensors::BarometerReadingChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_9414388f_1b3e_55f5_819b_ab3833646055
#define WINRT_GENERIC_9414388f_1b3e_55f5_819b_ab3833646055
template <> struct __declspec(uuid("9414388f-1b3e-55f5-819b-ab3833646055")) __declspec(novtable) IAsyncOperation<Windows::Devices::Sensors::Pedometer> : impl_IAsyncOperation<Windows::Devices::Sensors::Pedometer> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_52076f5c_7838_54d9_9517_5511eb627952
#define WINRT_GENERIC_52076f5c_7838_54d9_9517_5511eb627952
template <> struct __declspec(uuid("52076f5c-7838-54d9-9517-5511eb627952")) __declspec(novtable) IVectorView<Windows::Devices::Sensors::PedometerReading> : impl_IVectorView<Windows::Devices::Sensors::PedometerReading> {};
#endif

#ifndef WINRT_GENERIC_64f0c54c_4865_56bd_ac98_64a98451e362
#define WINRT_GENERIC_64f0c54c_4865_56bd_ac98_64a98451e362
template <> struct __declspec(uuid("64f0c54c-4865-56bd-ac98-64a98451e362")) __declspec(novtable) IMapView<winrt::Windows::Devices::Sensors::PedometerStepKind, Windows::Devices::Sensors::PedometerReading> : impl_IMapView<winrt::Windows::Devices::Sensors::PedometerStepKind, Windows::Devices::Sensors::PedometerReading> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_dcd47693_aad5_5b3c_9c8d_140b8bc2122b
#define WINRT_GENERIC_dcd47693_aad5_5b3c_9c8d_140b8bc2122b
template <> struct __declspec(uuid("dcd47693-aad5-5b3c-9c8d-140b8bc2122b")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::Pedometer, Windows::Devices::Sensors::PedometerReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::Pedometer, Windows::Devices::Sensors::PedometerReadingChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_9f7e222b_892a_5e68_b08a_10384b5f92b9
#define WINRT_GENERIC_9f7e222b_892a_5e68_b08a_10384b5f92b9
template <> struct __declspec(uuid("9f7e222b-892a-5e68-b08a-10384b5f92b9")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::ProximitySensor, Windows::Devices::Sensors::ProximitySensorReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::ProximitySensor, Windows::Devices::Sensors::ProximitySensorReadingChangedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_7a09d76c_8ced_5e30_b7fe_1ff74d4d9814
#define WINRT_GENERIC_7a09d76c_8ced_5e30_b7fe_1ff74d4d9814
template <> struct __declspec(uuid("7a09d76c-8ced-5e30-b7fe-1ff74d4d9814")) __declspec(novtable) IVectorView<Windows::Devices::Sensors::ProximitySensorReading> : impl_IVectorView<Windows::Devices::Sensors::ProximitySensorReading> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_d775d699_9d74_5473_9c1b_d51a89db6642
#define WINRT_GENERIC_d775d699_9d74_5473_9c1b_d51a89db6642
template <> struct __declspec(uuid("d775d699-9d74-5473-9c1b-d51a89db6642")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sensors::Altimeter, Windows::Devices::Sensors::AltimeterReadingChangedEventArgs> : impl_TypedEventHandler<Windows::Devices::Sensors::Altimeter, Windows::Devices::Sensors::AltimeterReadingChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_fb0594f4_93d9_5c2f_b8eb_90f1e9258fdc
#define WINRT_GENERIC_fb0594f4_93d9_5c2f_b8eb_90f1e9258fdc
template <> struct __declspec(uuid("fb0594f4-93d9-5c2f-b8eb-90f1e9258fdc")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Devices::Sensors::ActivitySensor> : impl_AsyncOperationCompletedHandler<Windows::Devices::Sensors::ActivitySensor> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_d2dab535_0c94_547e_afe3_5527bcbeb9cc
#define WINRT_GENERIC_d2dab535_0c94_547e_afe3_5527bcbeb9cc
template <> struct __declspec(uuid("d2dab535-0c94-547e-afe3-5527bcbeb9cc")) __declspec(novtable) IIterator<Windows::Devices::Sensors::ActivitySensorReading> : impl_IIterator<Windows::Devices::Sensors::ActivitySensorReading> {};
#endif

#ifndef WINRT_GENERIC_9a34ce03_8c6d_5994_907f_d5c2d19148cb
#define WINRT_GENERIC_9a34ce03_8c6d_5994_907f_d5c2d19148cb
template <> struct __declspec(uuid("9a34ce03-8c6d-5994-907f-d5c2d19148cb")) __declspec(novtable) IIterable<Windows::Devices::Sensors::ActivitySensorReading> : impl_IIterable<Windows::Devices::Sensors::ActivitySensorReading> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_adc48d5d_b343_5a58_8454_6e2bc2e0475c
#define WINRT_GENERIC_adc48d5d_b343_5a58_8454_6e2bc2e0475c
template <> struct __declspec(uuid("adc48d5d-b343-5a58-8454-6e2bc2e0475c")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Devices::Sensors::ActivitySensorReading> : impl_AsyncOperationCompletedHandler<Windows::Devices::Sensors::ActivitySensorReading> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_40524281_a7c6_50b1_b6f5_0baa95d902c2
#define WINRT_GENERIC_40524281_a7c6_50b1_b6f5_0baa95d902c2
template <> struct __declspec(uuid("40524281-a7c6-50b1-b6f5-0baa95d902c2")) __declspec(novtable) IIterator<winrt::Windows::Devices::Sensors::ActivityType> : impl_IIterator<winrt::Windows::Devices::Sensors::ActivityType> {};
#endif

#ifndef WINRT_GENERIC_2a04cdfa_5dfd_5178_8731_ade998e4a7f6
#define WINRT_GENERIC_2a04cdfa_5dfd_5178_8731_ade998e4a7f6
template <> struct __declspec(uuid("2a04cdfa-5dfd-5178-8731-ade998e4a7f6")) __declspec(novtable) IIterable<winrt::Windows::Devices::Sensors::ActivityType> : impl_IIterable<winrt::Windows::Devices::Sensors::ActivityType> {};
#endif

#ifndef WINRT_GENERIC_9c07034e_8333_59d5_8d60_0e3f0438ac12
#define WINRT_GENERIC_9c07034e_8333_59d5_8d60_0e3f0438ac12
template <> struct __declspec(uuid("9c07034e-8333-59d5-8d60-0e3f0438ac12")) __declspec(novtable) IIterator<Windows::Devices::Sensors::ActivitySensorReadingChangeReport> : impl_IIterator<Windows::Devices::Sensors::ActivitySensorReadingChangeReport> {};
#endif

#ifndef WINRT_GENERIC_551a4962_9e96_5e6b_8b8a_65ee3d0046f3
#define WINRT_GENERIC_551a4962_9e96_5e6b_8b8a_65ee3d0046f3
template <> struct __declspec(uuid("551a4962-9e96-5e6b-8b8a-65ee3d0046f3")) __declspec(novtable) IIterable<Windows::Devices::Sensors::ActivitySensorReadingChangeReport> : impl_IIterable<Windows::Devices::Sensors::ActivitySensorReadingChangeReport> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_a62dbe4e_51de_5a13_ba21_e76df3bc1396
#define WINRT_GENERIC_a62dbe4e_51de_5a13_ba21_e76df3bc1396
template <> struct __declspec(uuid("a62dbe4e-51de-5a13-ba21-e76df3bc1396")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Devices::Sensors::Pedometer> : impl_AsyncOperationCompletedHandler<Windows::Devices::Sensors::Pedometer> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_0ac70ed3_8553_5ef3_92f8_438609623087
#define WINRT_GENERIC_0ac70ed3_8553_5ef3_92f8_438609623087
template <> struct __declspec(uuid("0ac70ed3-8553-5ef3-92f8-438609623087")) __declspec(novtable) IIterator<Windows::Devices::Sensors::PedometerReading> : impl_IIterator<Windows::Devices::Sensors::PedometerReading> {};
#endif

#ifndef WINRT_GENERIC_bbb61a5c_98c3_5718_88fe_5392a7451e2d
#define WINRT_GENERIC_bbb61a5c_98c3_5718_88fe_5392a7451e2d
template <> struct __declspec(uuid("bbb61a5c-98c3-5718-88fe-5392a7451e2d")) __declspec(novtable) IIterable<Windows::Devices::Sensors::PedometerReading> : impl_IIterable<Windows::Devices::Sensors::PedometerReading> {};
#endif

#ifndef WINRT_GENERIC_b270d3b8_3dd2_599f_a671_2de5035503da
#define WINRT_GENERIC_b270d3b8_3dd2_599f_a671_2de5035503da
template <> struct __declspec(uuid("b270d3b8-3dd2-599f-a671-2de5035503da")) __declspec(novtable) IKeyValuePair<winrt::Windows::Devices::Sensors::PedometerStepKind, Windows::Devices::Sensors::PedometerReading> : impl_IKeyValuePair<winrt::Windows::Devices::Sensors::PedometerStepKind, Windows::Devices::Sensors::PedometerReading> {};
#endif

#ifndef WINRT_GENERIC_1d4f08df_7f49_573b_936a_6d4d4e610930
#define WINRT_GENERIC_1d4f08df_7f49_573b_936a_6d4d4e610930
template <> struct __declspec(uuid("1d4f08df-7f49-573b-936a-6d4d4e610930")) __declspec(novtable) IIterator<Windows::Devices::Sensors::ProximitySensorReading> : impl_IIterator<Windows::Devices::Sensors::ProximitySensorReading> {};
#endif

#ifndef WINRT_GENERIC_301ebccf_11ab_5e90_98ee_bd99c0e3bb76
#define WINRT_GENERIC_301ebccf_11ab_5e90_98ee_bd99c0e3bb76
template <> struct __declspec(uuid("301ebccf-11ab-5e90-98ee-bd99c0e3bb76")) __declspec(novtable) IIterable<Windows::Devices::Sensors::ProximitySensorReading> : impl_IIterable<Windows::Devices::Sensors::ProximitySensorReading> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_cd781b82_7900_51a3_80ce_903e2e0a4f0e
#define WINRT_GENERIC_cd781b82_7900_51a3_80ce_903e2e0a4f0e
template <> struct __declspec(uuid("cd781b82-7900-51a3-80ce-903e2e0a4f0e")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ActivitySensorReading>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ActivitySensorReading>> {};
#endif

#ifndef WINRT_GENERIC_2aeac503_a3a8_57b3_a8a9_e16b0cd4c0a4
#define WINRT_GENERIC_2aeac503_a3a8_57b3_a8a9_e16b0cd4c0a4
template <> struct __declspec(uuid("2aeac503-a3a8-57b3-a8a9-e16b0cd4c0a4")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::PedometerReading>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::PedometerReading>> {};
#endif

#ifndef WINRT_GENERIC_179fb953_2d58_5991_8f5b_ac64219a1101
#define WINRT_GENERIC_179fb953_2d58_5991_8f5b_ac64219a1101
template <> struct __declspec(uuid("179fb953-2d58-5991-8f5b-ac64219a1101")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ActivitySensorReading>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ActivitySensorReading>> {};
#endif

#ifndef WINRT_GENERIC_5bbff840_59f2_5108_9205_a0bbf8f9ba68
#define WINRT_GENERIC_5bbff840_59f2_5108_9205_a0bbf8f9ba68
template <> struct __declspec(uuid("5bbff840-59f2-5108-9205-a0bbf8f9ba68")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::PedometerReading>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::PedometerReading>> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_3e88fe66_d4a7_5658_b5cf_1a39e1fc4165
#define WINRT_GENERIC_3e88fe66_d4a7_5658_b5cf_1a39e1fc4165
template <> struct __declspec(uuid("3e88fe66-d4a7-5658-b5cf-1a39e1fc4165")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<winrt::Windows::Devices::Sensors::PedometerStepKind, Windows::Devices::Sensors::PedometerReading>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<winrt::Windows::Devices::Sensors::PedometerStepKind, Windows::Devices::Sensors::PedometerReading>> {};
#endif

#ifndef WINRT_GENERIC_098f29cb_bc91_5639_a541_d5a4811ec35b
#define WINRT_GENERIC_098f29cb_bc91_5639_a541_d5a4811ec35b
template <> struct __declspec(uuid("098f29cb-bc91-5639-a541-d5a4811ec35b")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<winrt::Windows::Devices::Sensors::PedometerStepKind, Windows::Devices::Sensors::PedometerReading>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<winrt::Windows::Devices::Sensors::PedometerStepKind, Windows::Devices::Sensors::PedometerReading>> {};
#endif


}

namespace Windows::Devices::Sensors {

template <typename D>
struct WINRT_EBO impl_IAccelerometer
{
    Windows::Devices::Sensors::AccelerometerReading GetCurrentReading() const;
    uint32_t MinimumReportInterval() const;
    void ReportInterval(uint32_t value) const;
    uint32_t ReportInterval() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Accelerometer, Windows::Devices::Sensors::AccelerometerReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<IAccelerometer>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Accelerometer, Windows::Devices::Sensors::AccelerometerReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
    event_token Shaken(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Accelerometer, Windows::Devices::Sensors::AccelerometerShakenEventArgs> & handler) const;
    using Shaken_revoker = event_revoker<IAccelerometer>;
    Shaken_revoker Shaken(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Accelerometer, Windows::Devices::Sensors::AccelerometerShakenEventArgs> & handler) const;
    void Shaken(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IAccelerometer2
{
    void ReadingTransform(Windows::Graphics::Display::DisplayOrientations value) const;
    Windows::Graphics::Display::DisplayOrientations ReadingTransform() const;
};

template <typename D>
struct WINRT_EBO impl_IAccelerometer3
{
    void ReportLatency(uint32_t value) const;
    uint32_t ReportLatency() const;
    uint32_t MaxBatchSize() const;
};

template <typename D>
struct WINRT_EBO impl_IAccelerometer4
{
    Windows::Devices::Sensors::AccelerometerReadingType ReadingType() const;
};

template <typename D>
struct WINRT_EBO impl_IAccelerometerDeviceId
{
    hstring DeviceId() const;
};

template <typename D>
struct WINRT_EBO impl_IAccelerometerReading
{
    Windows::Foundation::DateTime Timestamp() const;
    double AccelerationX() const;
    double AccelerationY() const;
    double AccelerationZ() const;
};

template <typename D>
struct WINRT_EBO impl_IAccelerometerReadingChangedEventArgs
{
    Windows::Devices::Sensors::AccelerometerReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_IAccelerometerShakenEventArgs
{
    Windows::Foundation::DateTime Timestamp() const;
};

template <typename D>
struct WINRT_EBO impl_IAccelerometerStatics
{
    Windows::Devices::Sensors::Accelerometer GetDefault() const;
};

template <typename D>
struct WINRT_EBO impl_IAccelerometerStatics2
{
    Windows::Devices::Sensors::Accelerometer GetDefault(Windows::Devices::Sensors::AccelerometerReadingType readingType) const;
};

template <typename D>
struct WINRT_EBO impl_IActivitySensor
{
    Windows::Foundation::IAsyncOperation<Windows::Devices::Sensors::ActivitySensorReading> GetCurrentReadingAsync() const;
    Windows::Foundation::Collections::IVector<winrt::Windows::Devices::Sensors::ActivityType> SubscribedActivities() const;
    double PowerInMilliwatts() const;
    hstring DeviceId() const;
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Devices::Sensors::ActivityType> SupportedActivities() const;
    uint32_t MinimumReportInterval() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::ActivitySensor, Windows::Devices::Sensors::ActivitySensorReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<IActivitySensor>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::ActivitySensor, Windows::Devices::Sensors::ActivitySensorReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IActivitySensorReading
{
    Windows::Foundation::DateTime Timestamp() const;
    Windows::Devices::Sensors::ActivityType Activity() const;
    Windows::Devices::Sensors::ActivitySensorReadingConfidence Confidence() const;
};

template <typename D>
struct WINRT_EBO impl_IActivitySensorReadingChangeReport
{
    Windows::Devices::Sensors::ActivitySensorReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_IActivitySensorReadingChangedEventArgs
{
    Windows::Devices::Sensors::ActivitySensorReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_IActivitySensorStatics
{
    Windows::Foundation::IAsyncOperation<Windows::Devices::Sensors::ActivitySensor> GetDefaultAsync() const;
    hstring GetDeviceSelector() const;
    Windows::Foundation::IAsyncOperation<Windows::Devices::Sensors::ActivitySensor> FromIdAsync(hstring_ref deviceId) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ActivitySensorReading>> GetSystemHistoryAsync(const Windows::Foundation::DateTime & fromTime) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ActivitySensorReading>> GetSystemHistoryAsync(const Windows::Foundation::DateTime & fromTime, const Windows::Foundation::TimeSpan & duration) const;
};

template <typename D>
struct WINRT_EBO impl_IActivitySensorTriggerDetails
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ActivitySensorReadingChangeReport> ReadReports() const;
};

template <typename D>
struct WINRT_EBO impl_IAltimeter
{
    Windows::Devices::Sensors::AltimeterReading GetCurrentReading() const;
    hstring DeviceId() const;
    uint32_t MinimumReportInterval() const;
    void ReportInterval(uint32_t value) const;
    uint32_t ReportInterval() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Altimeter, Windows::Devices::Sensors::AltimeterReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<IAltimeter>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Altimeter, Windows::Devices::Sensors::AltimeterReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IAltimeterReading
{
    Windows::Foundation::DateTime Timestamp() const;
    double AltitudeChangeInMeters() const;
};

template <typename D>
struct WINRT_EBO impl_IAltimeterReadingChangedEventArgs
{
    Windows::Devices::Sensors::AltimeterReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_IAltimeterStatics
{
    Windows::Devices::Sensors::Altimeter GetDefault() const;
};

template <typename D>
struct WINRT_EBO impl_IBarometer
{
    Windows::Devices::Sensors::BarometerReading GetCurrentReading() const;
    hstring DeviceId() const;
    uint32_t MinimumReportInterval() const;
    void ReportInterval(uint32_t value) const;
    uint32_t ReportInterval() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Barometer, Windows::Devices::Sensors::BarometerReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<IBarometer>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Barometer, Windows::Devices::Sensors::BarometerReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IBarometerReading
{
    Windows::Foundation::DateTime Timestamp() const;
    double StationPressureInHectopascals() const;
};

template <typename D>
struct WINRT_EBO impl_IBarometerReadingChangedEventArgs
{
    Windows::Devices::Sensors::BarometerReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_IBarometerStatics
{
    Windows::Devices::Sensors::Barometer GetDefault() const;
};

template <typename D>
struct WINRT_EBO impl_ICompass
{
    Windows::Devices::Sensors::CompassReading GetCurrentReading() const;
    uint32_t MinimumReportInterval() const;
    void ReportInterval(uint32_t value) const;
    uint32_t ReportInterval() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Compass, Windows::Devices::Sensors::CompassReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<ICompass>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Compass, Windows::Devices::Sensors::CompassReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ICompass2
{
    void ReadingTransform(Windows::Graphics::Display::DisplayOrientations value) const;
    Windows::Graphics::Display::DisplayOrientations ReadingTransform() const;
};

template <typename D>
struct WINRT_EBO impl_ICompassDeviceId
{
    hstring DeviceId() const;
};

template <typename D>
struct WINRT_EBO impl_ICompassReading
{
    Windows::Foundation::DateTime Timestamp() const;
    double HeadingMagneticNorth() const;
    Windows::Foundation::IReference<double> HeadingTrueNorth() const;
};

template <typename D>
struct WINRT_EBO impl_ICompassReadingChangedEventArgs
{
    Windows::Devices::Sensors::CompassReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_ICompassReadingHeadingAccuracy
{
    Windows::Devices::Sensors::MagnetometerAccuracy HeadingAccuracy() const;
};

template <typename D>
struct WINRT_EBO impl_ICompassStatics
{
    Windows::Devices::Sensors::Compass GetDefault() const;
};

template <typename D>
struct WINRT_EBO impl_IGyrometer
{
    Windows::Devices::Sensors::GyrometerReading GetCurrentReading() const;
    uint32_t MinimumReportInterval() const;
    void ReportInterval(uint32_t value) const;
    uint32_t ReportInterval() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Gyrometer, Windows::Devices::Sensors::GyrometerReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<IGyrometer>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Gyrometer, Windows::Devices::Sensors::GyrometerReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IGyrometer2
{
    void ReadingTransform(Windows::Graphics::Display::DisplayOrientations value) const;
    Windows::Graphics::Display::DisplayOrientations ReadingTransform() const;
};

template <typename D>
struct WINRT_EBO impl_IGyrometerDeviceId
{
    hstring DeviceId() const;
};

template <typename D>
struct WINRT_EBO impl_IGyrometerReading
{
    Windows::Foundation::DateTime Timestamp() const;
    double AngularVelocityX() const;
    double AngularVelocityY() const;
    double AngularVelocityZ() const;
};

template <typename D>
struct WINRT_EBO impl_IGyrometerReadingChangedEventArgs
{
    Windows::Devices::Sensors::GyrometerReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_IGyrometerStatics
{
    Windows::Devices::Sensors::Gyrometer GetDefault() const;
};

template <typename D>
struct WINRT_EBO impl_IInclinometer
{
    Windows::Devices::Sensors::InclinometerReading GetCurrentReading() const;
    uint32_t MinimumReportInterval() const;
    void ReportInterval(uint32_t value) const;
    uint32_t ReportInterval() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Inclinometer, Windows::Devices::Sensors::InclinometerReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<IInclinometer>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Inclinometer, Windows::Devices::Sensors::InclinometerReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IInclinometer2
{
    void ReadingTransform(Windows::Graphics::Display::DisplayOrientations value) const;
    Windows::Graphics::Display::DisplayOrientations ReadingTransform() const;
    Windows::Devices::Sensors::SensorReadingType ReadingType() const;
};

template <typename D>
struct WINRT_EBO impl_IInclinometerDeviceId
{
    hstring DeviceId() const;
};

template <typename D>
struct WINRT_EBO impl_IInclinometerReading
{
    Windows::Foundation::DateTime Timestamp() const;
    float PitchDegrees() const;
    float RollDegrees() const;
    float YawDegrees() const;
};

template <typename D>
struct WINRT_EBO impl_IInclinometerReadingChangedEventArgs
{
    Windows::Devices::Sensors::InclinometerReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_IInclinometerReadingYawAccuracy
{
    Windows::Devices::Sensors::MagnetometerAccuracy YawAccuracy() const;
};

template <typename D>
struct WINRT_EBO impl_IInclinometerStatics
{
    Windows::Devices::Sensors::Inclinometer GetDefault() const;
};

template <typename D>
struct WINRT_EBO impl_IInclinometerStatics2
{
    Windows::Devices::Sensors::Inclinometer GetDefaultForRelativeReadings() const;
};

template <typename D>
struct WINRT_EBO impl_IInclinometerStatics3
{
    Windows::Devices::Sensors::Inclinometer GetDefault(Windows::Devices::Sensors::SensorReadingType sensorReadingtype) const;
};

template <typename D>
struct WINRT_EBO impl_ILightSensor
{
    Windows::Devices::Sensors::LightSensorReading GetCurrentReading() const;
    uint32_t MinimumReportInterval() const;
    void ReportInterval(uint32_t value) const;
    uint32_t ReportInterval() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::LightSensor, Windows::Devices::Sensors::LightSensorReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<ILightSensor>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::LightSensor, Windows::Devices::Sensors::LightSensorReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ILightSensorDeviceId
{
    hstring DeviceId() const;
};

template <typename D>
struct WINRT_EBO impl_ILightSensorReading
{
    Windows::Foundation::DateTime Timestamp() const;
    float IlluminanceInLux() const;
};

template <typename D>
struct WINRT_EBO impl_ILightSensorReadingChangedEventArgs
{
    Windows::Devices::Sensors::LightSensorReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_ILightSensorStatics
{
    Windows::Devices::Sensors::LightSensor GetDefault() const;
};

template <typename D>
struct WINRT_EBO impl_IMagnetometer
{
    Windows::Devices::Sensors::MagnetometerReading GetCurrentReading() const;
    uint32_t MinimumReportInterval() const;
    void ReportInterval(uint32_t value) const;
    uint32_t ReportInterval() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Magnetometer, Windows::Devices::Sensors::MagnetometerReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<IMagnetometer>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Magnetometer, Windows::Devices::Sensors::MagnetometerReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IMagnetometer2
{
    void ReadingTransform(Windows::Graphics::Display::DisplayOrientations value) const;
    Windows::Graphics::Display::DisplayOrientations ReadingTransform() const;
};

template <typename D>
struct WINRT_EBO impl_IMagnetometerDeviceId
{
    hstring DeviceId() const;
};

template <typename D>
struct WINRT_EBO impl_IMagnetometerReading
{
    Windows::Foundation::DateTime Timestamp() const;
    float MagneticFieldX() const;
    float MagneticFieldY() const;
    float MagneticFieldZ() const;
    Windows::Devices::Sensors::MagnetometerAccuracy DirectionalAccuracy() const;
};

template <typename D>
struct WINRT_EBO impl_IMagnetometerReadingChangedEventArgs
{
    Windows::Devices::Sensors::MagnetometerReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_IMagnetometerStatics
{
    Windows::Devices::Sensors::Magnetometer GetDefault() const;
};

template <typename D>
struct WINRT_EBO impl_IOrientationSensor
{
    Windows::Devices::Sensors::OrientationSensorReading GetCurrentReading() const;
    uint32_t MinimumReportInterval() const;
    void ReportInterval(uint32_t value) const;
    uint32_t ReportInterval() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::OrientationSensor, Windows::Devices::Sensors::OrientationSensorReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<IOrientationSensor>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::OrientationSensor, Windows::Devices::Sensors::OrientationSensorReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IOrientationSensor2
{
    void ReadingTransform(Windows::Graphics::Display::DisplayOrientations value) const;
    Windows::Graphics::Display::DisplayOrientations ReadingTransform() const;
    Windows::Devices::Sensors::SensorReadingType ReadingType() const;
};

template <typename D>
struct WINRT_EBO impl_IOrientationSensorDeviceId
{
    hstring DeviceId() const;
};

template <typename D>
struct WINRT_EBO impl_IOrientationSensorReading
{
    Windows::Foundation::DateTime Timestamp() const;
    Windows::Devices::Sensors::SensorRotationMatrix RotationMatrix() const;
    Windows::Devices::Sensors::SensorQuaternion Quaternion() const;
};

template <typename D>
struct WINRT_EBO impl_IOrientationSensorReadingChangedEventArgs
{
    Windows::Devices::Sensors::OrientationSensorReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_IOrientationSensorReadingYawAccuracy
{
    Windows::Devices::Sensors::MagnetometerAccuracy YawAccuracy() const;
};

template <typename D>
struct WINRT_EBO impl_IOrientationSensorStatics
{
    Windows::Devices::Sensors::OrientationSensor GetDefault() const;
};

template <typename D>
struct WINRT_EBO impl_IOrientationSensorStatics2
{
    Windows::Devices::Sensors::OrientationSensor GetDefaultForRelativeReadings() const;
};

template <typename D>
struct WINRT_EBO impl_IOrientationSensorStatics3
{
    Windows::Devices::Sensors::OrientationSensor GetDefault(Windows::Devices::Sensors::SensorReadingType sensorReadingtype) const;
    Windows::Devices::Sensors::OrientationSensor GetDefault(Windows::Devices::Sensors::SensorReadingType sensorReadingType, Windows::Devices::Sensors::SensorOptimizationGoal optimizationGoal) const;
};

template <typename D>
struct WINRT_EBO impl_IPedometer
{
    hstring DeviceId() const;
    double PowerInMilliwatts() const;
    uint32_t MinimumReportInterval() const;
    void ReportInterval(uint32_t value) const;
    uint32_t ReportInterval() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Pedometer, Windows::Devices::Sensors::PedometerReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<IPedometer>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::Pedometer, Windows::Devices::Sensors::PedometerReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IPedometer2
{
    Windows::Foundation::Collections::IMapView<winrt::Windows::Devices::Sensors::PedometerStepKind, Windows::Devices::Sensors::PedometerReading> GetCurrentReadings() const;
};

template <typename D>
struct WINRT_EBO impl_IPedometerDataThresholdFactory
{
    Windows::Devices::Sensors::PedometerDataThreshold Create(const Windows::Devices::Sensors::Pedometer & sensor, int32_t stepGoal) const;
};

template <typename D>
struct WINRT_EBO impl_IPedometerReading
{
    Windows::Devices::Sensors::PedometerStepKind StepKind() const;
    int32_t CumulativeSteps() const;
    Windows::Foundation::DateTime Timestamp() const;
    Windows::Foundation::TimeSpan CumulativeStepsDuration() const;
};

template <typename D>
struct WINRT_EBO impl_IPedometerReadingChangedEventArgs
{
    Windows::Devices::Sensors::PedometerReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_IPedometerStatics
{
    Windows::Foundation::IAsyncOperation<Windows::Devices::Sensors::Pedometer> FromIdAsync(hstring_ref deviceId) const;
    Windows::Foundation::IAsyncOperation<Windows::Devices::Sensors::Pedometer> GetDefaultAsync() const;
    hstring GetDeviceSelector() const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::PedometerReading>> GetSystemHistoryAsync(const Windows::Foundation::DateTime & fromTime) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::PedometerReading>> GetSystemHistoryAsync(const Windows::Foundation::DateTime & fromTime, const Windows::Foundation::TimeSpan & duration) const;
};

template <typename D>
struct WINRT_EBO impl_IPedometerStatics2
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::PedometerReading> GetReadingsFromTriggerDetails(const Windows::Devices::Sensors::SensorDataThresholdTriggerDetails & triggerDetails) const;
};

template <typename D>
struct WINRT_EBO impl_IProximitySensor
{
    hstring DeviceId() const;
    Windows::Foundation::IReference<uint32_t> MaxDistanceInMillimeters() const;
    Windows::Foundation::IReference<uint32_t> MinDistanceInMillimeters() const;
    Windows::Devices::Sensors::ProximitySensorReading GetCurrentReading() const;
    event_token ReadingChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::ProximitySensor, Windows::Devices::Sensors::ProximitySensorReadingChangedEventArgs> & handler) const;
    using ReadingChanged_revoker = event_revoker<IProximitySensor>;
    ReadingChanged_revoker ReadingChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::ProximitySensor, Windows::Devices::Sensors::ProximitySensorReadingChangedEventArgs> & handler) const;
    void ReadingChanged(event_token token) const;
    Windows::Devices::Sensors::ProximitySensorDisplayOnOffController CreateDisplayOnOffController() const;
};

template <typename D>
struct WINRT_EBO impl_IProximitySensorDataThresholdFactory
{
    Windows::Devices::Sensors::ProximitySensorDataThreshold Create(const Windows::Devices::Sensors::ProximitySensor & sensor) const;
};

template <typename D>
struct WINRT_EBO impl_IProximitySensorReading
{
    Windows::Foundation::DateTime Timestamp() const;
    bool IsDetected() const;
    Windows::Foundation::IReference<uint32_t> DistanceInMillimeters() const;
};

template <typename D>
struct WINRT_EBO impl_IProximitySensorReadingChangedEventArgs
{
    Windows::Devices::Sensors::ProximitySensorReading Reading() const;
};

template <typename D>
struct WINRT_EBO impl_IProximitySensorStatics
{
    hstring GetDeviceSelector() const;
    Windows::Devices::Sensors::ProximitySensor FromId(hstring_ref sensorId) const;
};

template <typename D>
struct WINRT_EBO impl_IProximitySensorStatics2
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Sensors::ProximitySensorReading> GetReadingsFromTriggerDetails(const Windows::Devices::Sensors::SensorDataThresholdTriggerDetails & triggerDetails) const;
};

template <typename D>
struct WINRT_EBO impl_ISensorDataThreshold
{
};

template <typename D>
struct WINRT_EBO impl_ISensorDataThresholdTriggerDetails
{
    hstring DeviceId() const;
    Windows::Devices::Sensors::SensorType SensorType() const;
};

template <typename D>
struct WINRT_EBO impl_ISensorQuaternion
{
    float W() const;
    float X() const;
    float Y() const;
    float Z() const;
};

template <typename D>
struct WINRT_EBO impl_ISensorRotationMatrix
{
    float M11() const;
    float M12() const;
    float M13() const;
    float M21() const;
    float M22() const;
    float M23() const;
    float M31() const;
    float M32() const;
    float M33() const;
};

template <typename D>
struct WINRT_EBO impl_ISimpleOrientationSensor
{
    Windows::Devices::Sensors::SimpleOrientation GetCurrentOrientation() const;
    event_token OrientationChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::SimpleOrientationSensor, Windows::Devices::Sensors::SimpleOrientationSensorOrientationChangedEventArgs> & handler) const;
    using OrientationChanged_revoker = event_revoker<ISimpleOrientationSensor>;
    OrientationChanged_revoker OrientationChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sensors::SimpleOrientationSensor, Windows::Devices::Sensors::SimpleOrientationSensorOrientationChangedEventArgs> & handler) const;
    void OrientationChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ISimpleOrientationSensor2
{
    void ReadingTransform(Windows::Graphics::Display::DisplayOrientations value) const;
    Windows::Graphics::Display::DisplayOrientations ReadingTransform() const;
};

template <typename D>
struct WINRT_EBO impl_ISimpleOrientationSensorDeviceId
{
    hstring DeviceId() const;
};

template <typename D>
struct WINRT_EBO impl_ISimpleOrientationSensorOrientationChangedEventArgs
{
    Windows::Foundation::DateTime Timestamp() const;
    Windows::Devices::Sensors::SimpleOrientation Orientation() const;
};

template <typename D>
struct WINRT_EBO impl_ISimpleOrientationSensorStatics
{
    Windows::Devices::Sensors::SimpleOrientationSensor GetDefault() const;
};

struct IAccelerometer :
    Windows::IInspectable,
    impl::consume<IAccelerometer>
{
    IAccelerometer(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAccelerometer>(m_ptr); }
};

struct IAccelerometer2 :
    Windows::IInspectable,
    impl::consume<IAccelerometer2>
{
    IAccelerometer2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAccelerometer2>(m_ptr); }
};

struct IAccelerometer3 :
    Windows::IInspectable,
    impl::consume<IAccelerometer3>
{
    IAccelerometer3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAccelerometer3>(m_ptr); }
};

struct IAccelerometer4 :
    Windows::IInspectable,
    impl::consume<IAccelerometer4>
{
    IAccelerometer4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAccelerometer4>(m_ptr); }
};

struct IAccelerometerDeviceId :
    Windows::IInspectable,
    impl::consume<IAccelerometerDeviceId>
{
    IAccelerometerDeviceId(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAccelerometerDeviceId>(m_ptr); }
};

struct IAccelerometerReading :
    Windows::IInspectable,
    impl::consume<IAccelerometerReading>
{
    IAccelerometerReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAccelerometerReading>(m_ptr); }
};

struct IAccelerometerReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IAccelerometerReadingChangedEventArgs>
{
    IAccelerometerReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAccelerometerReadingChangedEventArgs>(m_ptr); }
};

struct IAccelerometerShakenEventArgs :
    Windows::IInspectable,
    impl::consume<IAccelerometerShakenEventArgs>
{
    IAccelerometerShakenEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAccelerometerShakenEventArgs>(m_ptr); }
};

struct IAccelerometerStatics :
    Windows::IInspectable,
    impl::consume<IAccelerometerStatics>
{
    IAccelerometerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAccelerometerStatics>(m_ptr); }
};

struct IAccelerometerStatics2 :
    Windows::IInspectable,
    impl::consume<IAccelerometerStatics2>
{
    IAccelerometerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAccelerometerStatics2>(m_ptr); }
};

struct IActivitySensor :
    Windows::IInspectable,
    impl::consume<IActivitySensor>
{
    IActivitySensor(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IActivitySensor>(m_ptr); }
};

struct IActivitySensorReading :
    Windows::IInspectable,
    impl::consume<IActivitySensorReading>
{
    IActivitySensorReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IActivitySensorReading>(m_ptr); }
};

struct IActivitySensorReadingChangeReport :
    Windows::IInspectable,
    impl::consume<IActivitySensorReadingChangeReport>
{
    IActivitySensorReadingChangeReport(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IActivitySensorReadingChangeReport>(m_ptr); }
};

struct IActivitySensorReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IActivitySensorReadingChangedEventArgs>
{
    IActivitySensorReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IActivitySensorReadingChangedEventArgs>(m_ptr); }
};

struct IActivitySensorStatics :
    Windows::IInspectable,
    impl::consume<IActivitySensorStatics>
{
    IActivitySensorStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IActivitySensorStatics>(m_ptr); }
};

struct IActivitySensorTriggerDetails :
    Windows::IInspectable,
    impl::consume<IActivitySensorTriggerDetails>
{
    IActivitySensorTriggerDetails(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IActivitySensorTriggerDetails>(m_ptr); }
};

struct IAltimeter :
    Windows::IInspectable,
    impl::consume<IAltimeter>
{
    IAltimeter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAltimeter>(m_ptr); }
};

struct IAltimeterReading :
    Windows::IInspectable,
    impl::consume<IAltimeterReading>
{
    IAltimeterReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAltimeterReading>(m_ptr); }
};

struct IAltimeterReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IAltimeterReadingChangedEventArgs>
{
    IAltimeterReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAltimeterReadingChangedEventArgs>(m_ptr); }
};

struct IAltimeterStatics :
    Windows::IInspectable,
    impl::consume<IAltimeterStatics>
{
    IAltimeterStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAltimeterStatics>(m_ptr); }
};

struct IBarometer :
    Windows::IInspectable,
    impl::consume<IBarometer>
{
    IBarometer(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBarometer>(m_ptr); }
};

struct IBarometerReading :
    Windows::IInspectable,
    impl::consume<IBarometerReading>
{
    IBarometerReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBarometerReading>(m_ptr); }
};

struct IBarometerReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IBarometerReadingChangedEventArgs>
{
    IBarometerReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBarometerReadingChangedEventArgs>(m_ptr); }
};

struct IBarometerStatics :
    Windows::IInspectable,
    impl::consume<IBarometerStatics>
{
    IBarometerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBarometerStatics>(m_ptr); }
};

struct ICompass :
    Windows::IInspectable,
    impl::consume<ICompass>
{
    ICompass(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICompass>(m_ptr); }
};

struct ICompass2 :
    Windows::IInspectable,
    impl::consume<ICompass2>
{
    ICompass2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICompass2>(m_ptr); }
};

struct ICompassDeviceId :
    Windows::IInspectable,
    impl::consume<ICompassDeviceId>
{
    ICompassDeviceId(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICompassDeviceId>(m_ptr); }
};

struct ICompassReading :
    Windows::IInspectable,
    impl::consume<ICompassReading>
{
    ICompassReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICompassReading>(m_ptr); }
};

struct ICompassReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ICompassReadingChangedEventArgs>
{
    ICompassReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICompassReadingChangedEventArgs>(m_ptr); }
};

struct ICompassReadingHeadingAccuracy :
    Windows::IInspectable,
    impl::consume<ICompassReadingHeadingAccuracy>
{
    ICompassReadingHeadingAccuracy(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICompassReadingHeadingAccuracy>(m_ptr); }
};

struct ICompassStatics :
    Windows::IInspectable,
    impl::consume<ICompassStatics>
{
    ICompassStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICompassStatics>(m_ptr); }
};

struct IGyrometer :
    Windows::IInspectable,
    impl::consume<IGyrometer>
{
    IGyrometer(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGyrometer>(m_ptr); }
};

struct IGyrometer2 :
    Windows::IInspectable,
    impl::consume<IGyrometer2>
{
    IGyrometer2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGyrometer2>(m_ptr); }
};

struct IGyrometerDeviceId :
    Windows::IInspectable,
    impl::consume<IGyrometerDeviceId>
{
    IGyrometerDeviceId(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGyrometerDeviceId>(m_ptr); }
};

struct IGyrometerReading :
    Windows::IInspectable,
    impl::consume<IGyrometerReading>
{
    IGyrometerReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGyrometerReading>(m_ptr); }
};

struct IGyrometerReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IGyrometerReadingChangedEventArgs>
{
    IGyrometerReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGyrometerReadingChangedEventArgs>(m_ptr); }
};

struct IGyrometerStatics :
    Windows::IInspectable,
    impl::consume<IGyrometerStatics>
{
    IGyrometerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGyrometerStatics>(m_ptr); }
};

struct IInclinometer :
    Windows::IInspectable,
    impl::consume<IInclinometer>
{
    IInclinometer(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInclinometer>(m_ptr); }
};

struct IInclinometer2 :
    Windows::IInspectable,
    impl::consume<IInclinometer2>
{
    IInclinometer2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInclinometer2>(m_ptr); }
};

struct IInclinometerDeviceId :
    Windows::IInspectable,
    impl::consume<IInclinometerDeviceId>
{
    IInclinometerDeviceId(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInclinometerDeviceId>(m_ptr); }
};

struct IInclinometerReading :
    Windows::IInspectable,
    impl::consume<IInclinometerReading>
{
    IInclinometerReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInclinometerReading>(m_ptr); }
};

struct IInclinometerReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IInclinometerReadingChangedEventArgs>
{
    IInclinometerReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInclinometerReadingChangedEventArgs>(m_ptr); }
};

struct IInclinometerReadingYawAccuracy :
    Windows::IInspectable,
    impl::consume<IInclinometerReadingYawAccuracy>
{
    IInclinometerReadingYawAccuracy(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInclinometerReadingYawAccuracy>(m_ptr); }
};

struct IInclinometerStatics :
    Windows::IInspectable,
    impl::consume<IInclinometerStatics>
{
    IInclinometerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInclinometerStatics>(m_ptr); }
};

struct IInclinometerStatics2 :
    Windows::IInspectable,
    impl::consume<IInclinometerStatics2>
{
    IInclinometerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInclinometerStatics2>(m_ptr); }
};

struct IInclinometerStatics3 :
    Windows::IInspectable,
    impl::consume<IInclinometerStatics3>
{
    IInclinometerStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInclinometerStatics3>(m_ptr); }
};

struct ILightSensor :
    Windows::IInspectable,
    impl::consume<ILightSensor>
{
    ILightSensor(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILightSensor>(m_ptr); }
};

struct ILightSensorDeviceId :
    Windows::IInspectable,
    impl::consume<ILightSensorDeviceId>
{
    ILightSensorDeviceId(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILightSensorDeviceId>(m_ptr); }
};

struct ILightSensorReading :
    Windows::IInspectable,
    impl::consume<ILightSensorReading>
{
    ILightSensorReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILightSensorReading>(m_ptr); }
};

struct ILightSensorReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ILightSensorReadingChangedEventArgs>
{
    ILightSensorReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILightSensorReadingChangedEventArgs>(m_ptr); }
};

struct ILightSensorStatics :
    Windows::IInspectable,
    impl::consume<ILightSensorStatics>
{
    ILightSensorStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILightSensorStatics>(m_ptr); }
};

struct IMagnetometer :
    Windows::IInspectable,
    impl::consume<IMagnetometer>
{
    IMagnetometer(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMagnetometer>(m_ptr); }
};

struct IMagnetometer2 :
    Windows::IInspectable,
    impl::consume<IMagnetometer2>
{
    IMagnetometer2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMagnetometer2>(m_ptr); }
};

struct IMagnetometerDeviceId :
    Windows::IInspectable,
    impl::consume<IMagnetometerDeviceId>
{
    IMagnetometerDeviceId(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMagnetometerDeviceId>(m_ptr); }
};

struct IMagnetometerReading :
    Windows::IInspectable,
    impl::consume<IMagnetometerReading>
{
    IMagnetometerReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMagnetometerReading>(m_ptr); }
};

struct IMagnetometerReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IMagnetometerReadingChangedEventArgs>
{
    IMagnetometerReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMagnetometerReadingChangedEventArgs>(m_ptr); }
};

struct IMagnetometerStatics :
    Windows::IInspectable,
    impl::consume<IMagnetometerStatics>
{
    IMagnetometerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMagnetometerStatics>(m_ptr); }
};

struct IOrientationSensor :
    Windows::IInspectable,
    impl::consume<IOrientationSensor>
{
    IOrientationSensor(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOrientationSensor>(m_ptr); }
};

struct IOrientationSensor2 :
    Windows::IInspectable,
    impl::consume<IOrientationSensor2>
{
    IOrientationSensor2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOrientationSensor2>(m_ptr); }
};

struct IOrientationSensorDeviceId :
    Windows::IInspectable,
    impl::consume<IOrientationSensorDeviceId>
{
    IOrientationSensorDeviceId(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOrientationSensorDeviceId>(m_ptr); }
};

struct IOrientationSensorReading :
    Windows::IInspectable,
    impl::consume<IOrientationSensorReading>
{
    IOrientationSensorReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOrientationSensorReading>(m_ptr); }
};

struct IOrientationSensorReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IOrientationSensorReadingChangedEventArgs>
{
    IOrientationSensorReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOrientationSensorReadingChangedEventArgs>(m_ptr); }
};

struct IOrientationSensorReadingYawAccuracy :
    Windows::IInspectable,
    impl::consume<IOrientationSensorReadingYawAccuracy>
{
    IOrientationSensorReadingYawAccuracy(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOrientationSensorReadingYawAccuracy>(m_ptr); }
};

struct IOrientationSensorStatics :
    Windows::IInspectable,
    impl::consume<IOrientationSensorStatics>
{
    IOrientationSensorStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOrientationSensorStatics>(m_ptr); }
};

struct IOrientationSensorStatics2 :
    Windows::IInspectable,
    impl::consume<IOrientationSensorStatics2>
{
    IOrientationSensorStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOrientationSensorStatics2>(m_ptr); }
};

struct IOrientationSensorStatics3 :
    Windows::IInspectable,
    impl::consume<IOrientationSensorStatics3>
{
    IOrientationSensorStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOrientationSensorStatics3>(m_ptr); }
};

struct IPedometer :
    Windows::IInspectable,
    impl::consume<IPedometer>
{
    IPedometer(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPedometer>(m_ptr); }
};

struct IPedometer2 :
    Windows::IInspectable,
    impl::consume<IPedometer2>
{
    IPedometer2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPedometer2>(m_ptr); }
};

struct IPedometerDataThresholdFactory :
    Windows::IInspectable,
    impl::consume<IPedometerDataThresholdFactory>
{
    IPedometerDataThresholdFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPedometerDataThresholdFactory>(m_ptr); }
};

struct IPedometerReading :
    Windows::IInspectable,
    impl::consume<IPedometerReading>
{
    IPedometerReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPedometerReading>(m_ptr); }
};

struct IPedometerReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IPedometerReadingChangedEventArgs>
{
    IPedometerReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPedometerReadingChangedEventArgs>(m_ptr); }
};

struct IPedometerStatics :
    Windows::IInspectable,
    impl::consume<IPedometerStatics>
{
    IPedometerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPedometerStatics>(m_ptr); }
};

struct IPedometerStatics2 :
    Windows::IInspectable,
    impl::consume<IPedometerStatics2>
{
    IPedometerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPedometerStatics2>(m_ptr); }
};

struct IProximitySensor :
    Windows::IInspectable,
    impl::consume<IProximitySensor>
{
    IProximitySensor(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProximitySensor>(m_ptr); }
};

struct IProximitySensorDataThresholdFactory :
    Windows::IInspectable,
    impl::consume<IProximitySensorDataThresholdFactory>
{
    IProximitySensorDataThresholdFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProximitySensorDataThresholdFactory>(m_ptr); }
};

struct IProximitySensorReading :
    Windows::IInspectable,
    impl::consume<IProximitySensorReading>
{
    IProximitySensorReading(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProximitySensorReading>(m_ptr); }
};

struct IProximitySensorReadingChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IProximitySensorReadingChangedEventArgs>
{
    IProximitySensorReadingChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProximitySensorReadingChangedEventArgs>(m_ptr); }
};

struct IProximitySensorStatics :
    Windows::IInspectable,
    impl::consume<IProximitySensorStatics>
{
    IProximitySensorStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProximitySensorStatics>(m_ptr); }
};

struct IProximitySensorStatics2 :
    Windows::IInspectable,
    impl::consume<IProximitySensorStatics2>
{
    IProximitySensorStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProximitySensorStatics2>(m_ptr); }
};

struct ISensorDataThreshold :
    Windows::IInspectable,
    impl::consume<ISensorDataThreshold>
{
    ISensorDataThreshold(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISensorDataThreshold>(m_ptr); }
};

struct ISensorDataThresholdTriggerDetails :
    Windows::IInspectable,
    impl::consume<ISensorDataThresholdTriggerDetails>
{
    ISensorDataThresholdTriggerDetails(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISensorDataThresholdTriggerDetails>(m_ptr); }
};

struct ISensorQuaternion :
    Windows::IInspectable,
    impl::consume<ISensorQuaternion>
{
    ISensorQuaternion(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISensorQuaternion>(m_ptr); }
};

struct ISensorRotationMatrix :
    Windows::IInspectable,
    impl::consume<ISensorRotationMatrix>
{
    ISensorRotationMatrix(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISensorRotationMatrix>(m_ptr); }
};

struct ISimpleOrientationSensor :
    Windows::IInspectable,
    impl::consume<ISimpleOrientationSensor>
{
    ISimpleOrientationSensor(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISimpleOrientationSensor>(m_ptr); }
};

struct ISimpleOrientationSensor2 :
    Windows::IInspectable,
    impl::consume<ISimpleOrientationSensor2>
{
    ISimpleOrientationSensor2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISimpleOrientationSensor2>(m_ptr); }
};

struct ISimpleOrientationSensorDeviceId :
    Windows::IInspectable,
    impl::consume<ISimpleOrientationSensorDeviceId>
{
    ISimpleOrientationSensorDeviceId(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISimpleOrientationSensorDeviceId>(m_ptr); }
};

struct ISimpleOrientationSensorOrientationChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ISimpleOrientationSensorOrientationChangedEventArgs>
{
    ISimpleOrientationSensorOrientationChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISimpleOrientationSensorOrientationChangedEventArgs>(m_ptr); }
};

struct ISimpleOrientationSensorStatics :
    Windows::IInspectable,
    impl::consume<ISimpleOrientationSensorStatics>
{
    ISimpleOrientationSensorStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISimpleOrientationSensorStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Core.AnimationMetrics.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.UI.Core.AnimationMetrics.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Foundation.1.h"
#include "Windows.Foundation.Collections.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Core::AnimationMetrics {

struct __declspec(uuid("7d11a549-be3d-41de-b081-05c149962f9b")) __declspec(novtable) IAnimationDescription : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Animations(Windows::Foundation::Collections::IVectorView<Windows::UI::Core::AnimationMetrics::IPropertyAnimation> ** value) = 0;
    virtual HRESULT __stdcall get_StaggerDelay(Windows::Foundation::TimeSpan * value) = 0;
    virtual HRESULT __stdcall get_StaggerDelayFactor(float * value) = 0;
    virtual HRESULT __stdcall get_DelayLimit(Windows::Foundation::TimeSpan * value) = 0;
    virtual HRESULT __stdcall get_ZOrder(int32_t * value) = 0;
};

struct __declspec(uuid("c6e27abe-c1fb-48b5-9271-ecc70ac86ef0")) __declspec(novtable) IAnimationDescriptionFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateInstance(winrt::Windows::UI::Core::AnimationMetrics::AnimationEffect effect, winrt::Windows::UI::Core::AnimationMetrics::AnimationEffectTarget target, Windows::UI::Core::AnimationMetrics::IAnimationDescription ** animation) = 0;
};

struct __declspec(uuid("803aabe5-ee7e-455f-84e9-2506afb8d2b4")) __declspec(novtable) IOpacityAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_InitialOpacity(Windows::Foundation::IReference<float> ** value) = 0;
    virtual HRESULT __stdcall get_FinalOpacity(float * value) = 0;
};

struct __declspec(uuid("3a01b4da-4d8c-411e-b615-1ade683a9903")) __declspec(novtable) IPropertyAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Type(winrt::Windows::UI::Core::AnimationMetrics::PropertyAnimationType * value) = 0;
    virtual HRESULT __stdcall get_Delay(Windows::Foundation::TimeSpan * value) = 0;
    virtual HRESULT __stdcall get_Duration(Windows::Foundation::TimeSpan * value) = 0;
    virtual HRESULT __stdcall get_Control1(Windows::Foundation::Point * value) = 0;
    virtual HRESULT __stdcall get_Control2(Windows::Foundation::Point * value) = 0;
};

struct __declspec(uuid("023552c7-71ab-428c-9c9f-d31780964995")) __declspec(novtable) IScaleAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_InitialScaleX(Windows::Foundation::IReference<float> ** value) = 0;
    virtual HRESULT __stdcall get_InitialScaleY(Windows::Foundation::IReference<float> ** value) = 0;
    virtual HRESULT __stdcall get_FinalScaleX(float * value) = 0;
    virtual HRESULT __stdcall get_FinalScaleY(float * value) = 0;
    virtual HRESULT __stdcall get_NormalizedOrigin(Windows::Foundation::Point * value) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::UI::Core::AnimationMetrics::AnimationDescription> { using default_interface = Windows::UI::Core::AnimationMetrics::IAnimationDescription; };
template <> struct traits<Windows::UI::Core::AnimationMetrics::OpacityAnimation> { using default_interface = Windows::UI::Core::AnimationMetrics::IOpacityAnimation; };
template <> struct traits<Windows::UI::Core::AnimationMetrics::PropertyAnimation> { using default_interface = Windows::UI::Core::AnimationMetrics::IPropertyAnimation; };
template <> struct traits<Windows::UI::Core::AnimationMetrics::ScaleAnimation> { using default_interface = Windows::UI::Core::AnimationMetrics::IScaleAnimation; };
template <> struct traits<Windows::UI::Core::AnimationMetrics::TranslationAnimation> { using default_interface = Windows::UI::Core::AnimationMetrics::IPropertyAnimation; };

}

namespace Windows::UI::Core::AnimationMetrics {

template <typename T> struct impl_IAnimationDescription;
template <typename T> struct impl_IAnimationDescriptionFactory;
template <typename T> struct impl_IOpacityAnimation;
template <typename T> struct impl_IPropertyAnimation;
template <typename T> struct impl_IScaleAnimation;

}

namespace impl {

template <> struct traits<Windows::UI::Core::AnimationMetrics::IAnimationDescription>
{
    using abi = ABI::Windows::UI::Core::AnimationMetrics::IAnimationDescription;
    template <typename D> using consume = Windows::UI::Core::AnimationMetrics::impl_IAnimationDescription<D>;
};

template <> struct traits<Windows::UI::Core::AnimationMetrics::IAnimationDescriptionFactory>
{
    using abi = ABI::Windows::UI::Core::AnimationMetrics::IAnimationDescriptionFactory;
    template <typename D> using consume = Windows::UI::Core::AnimationMetrics::impl_IAnimationDescriptionFactory<D>;
};

template <> struct traits<Windows::UI::Core::AnimationMetrics::IOpacityAnimation>
{
    using abi = ABI::Windows::UI::Core::AnimationMetrics::IOpacityAnimation;
    template <typename D> using consume = Windows::UI::Core::AnimationMetrics::impl_IOpacityAnimation<D>;
};

template <> struct traits<Windows::UI::Core::AnimationMetrics::IPropertyAnimation>
{
    using abi = ABI::Windows::UI::Core::AnimationMetrics::IPropertyAnimation;
    template <typename D> using consume = Windows::UI::Core::AnimationMetrics::impl_IPropertyAnimation<D>;
};

template <> struct traits<Windows::UI::Core::AnimationMetrics::IScaleAnimation>
{
    using abi = ABI::Windows::UI::Core::AnimationMetrics::IScaleAnimation;
    template <typename D> using consume = Windows::UI::Core::AnimationMetrics::impl_IScaleAnimation<D>;
};

template <> struct traits<Windows::UI::Core::AnimationMetrics::AnimationDescription>
{
    using abi = ABI::Windows::UI::Core::AnimationMetrics::AnimationDescription;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Core.AnimationMetrics.AnimationDescription"; }
};

template <> struct traits<Windows::UI::Core::AnimationMetrics::OpacityAnimation>
{
    using abi = ABI::Windows::UI::Core::AnimationMetrics::OpacityAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Core.AnimationMetrics.OpacityAnimation"; }
};

template <> struct traits<Windows::UI::Core::AnimationMetrics::PropertyAnimation>
{
    using abi = ABI::Windows::UI::Core::AnimationMetrics::PropertyAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Core.AnimationMetrics.PropertyAnimation"; }
};

template <> struct traits<Windows::UI::Core::AnimationMetrics::ScaleAnimation>
{
    using abi = ABI::Windows::UI::Core::AnimationMetrics::ScaleAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Core.AnimationMetrics.ScaleAnimation"; }
};

template <> struct traits<Windows::UI::Core::AnimationMetrics::TranslationAnimation>
{
    using abi = ABI::Windows::UI::Core::AnimationMetrics::TranslationAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Core.AnimationMetrics.TranslationAnimation"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.Transcoding.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Media.Transcoding.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Media::Transcoding {

struct WINRT_EBO MediaTranscoder :
    Windows::Media::Transcoding::IMediaTranscoder,
    impl::require<MediaTranscoder, Windows::Media::Transcoding::IMediaTranscoder2>
{
    MediaTranscoder(std::nullptr_t) noexcept {}
    MediaTranscoder();
};

struct WINRT_EBO PrepareTranscodeResult :
    Windows::Media::Transcoding::IPrepareTranscodeResult
{
    PrepareTranscodeResult(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Sms.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Devices.Sms.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_8d720cdf_3934_5d3f_9a55_40e8063b086a
#define WINRT_GENERIC_8d720cdf_3934_5d3f_9a55_40e8063b086a
template <> struct __declspec(uuid("8d720cdf-3934-5d3f-9a55-40e8063b086a")) __declspec(novtable) IVectorView<int32_t> : impl_IVectorView<int32_t> {};
#endif

#ifndef WINRT_GENERIC_f6d1f700_49c2_52ae_8154_826f9908773c
#define WINRT_GENERIC_f6d1f700_49c2_52ae_8154_826f9908773c
template <> struct __declspec(uuid("f6d1f700-49c2-52ae-8154-826f9908773c")) __declspec(novtable) IMap<hstring, hstring> : impl_IMap<hstring, hstring> {};
#endif

#ifndef WINRT_GENERIC_60310303_49c5_52e6_abc6_a9b36eccc716
#define WINRT_GENERIC_60310303_49c5_52e6_abc6_a9b36eccc716
template <> struct __declspec(uuid("60310303-49c5-52e6-abc6-a9b36eccc716")) __declspec(novtable) IKeyValuePair<hstring, hstring> : impl_IKeyValuePair<hstring, hstring> {};
#endif

#ifndef WINRT_GENERIC_98b9acc1_4b56_532e_ac73_03d5291cca90
#define WINRT_GENERIC_98b9acc1_4b56_532e_ac73_03d5291cca90
template <> struct __declspec(uuid("98b9acc1-4b56-532e-ac73-03d5291cca90")) __declspec(novtable) IVector<hstring> : impl_IVector<hstring> {};
#endif

#ifndef WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
#define WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
template <> struct __declspec(uuid("2f13c006-a03a-5f69-b090-75a43e33423e")) __declspec(novtable) IVectorView<hstring> : impl_IVectorView<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_548cefbd_bc8a_5fa0_8df2_957440fc8bf4
#define WINRT_GENERIC_548cefbd_bc8a_5fa0_8df2_957440fc8bf4
template <> struct __declspec(uuid("548cefbd-bc8a-5fa0-8df2-957440fc8bf4")) __declspec(novtable) IReference<int32_t> : impl_IReference<int32_t> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
#define WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
template <> struct __declspec(uuid("e2fcc7c1-3bfc-5a0b-b2b0-72e769d1cb7e")) __declspec(novtable) IIterable<hstring> : impl_IIterable<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_fc0a0b0f_4dcc_5257_bc61_3435e302ce1f
#define WINRT_GENERIC_fc0a0b0f_4dcc_5257_bc61_3435e302ce1f
template <> struct __declspec(uuid("fc0a0b0f-4dcc-5257-bc61-3435e302ce1f")) __declspec(novtable) IAsyncOperation<Windows::Devices::Sms::SmsSendMessageResult> : impl_IAsyncOperation<Windows::Devices::Sms::SmsSendMessageResult> {};
#endif

#ifndef WINRT_GENERIC_3f3808e6_3dee_57a6_a88d_bacfb066c7fb
#define WINRT_GENERIC_3f3808e6_3dee_57a6_a88d_bacfb066c7fb
template <> struct __declspec(uuid("3f3808e6-3dee-57a6-a88d-bacfb066c7fb")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sms::SmsDevice2, Windows::IInspectable> : impl_TypedEventHandler<Windows::Devices::Sms::SmsDevice2, Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_b939af5b_b45d_5489_9149_61442c1905fe
#define WINRT_GENERIC_b939af5b_b45d_5489_9149_61442c1905fe
template <> struct __declspec(uuid("b939af5b-b45d-5489-9149-61442c1905fe")) __declspec(novtable) IVector<int32_t> : impl_IVector<int32_t> {};
#endif

#ifndef WINRT_GENERIC_d76bef0b_1358_5895_bd42_f17f6f33eed1
#define WINRT_GENERIC_d76bef0b_1358_5895_bd42_f17f6f33eed1
template <> struct __declspec(uuid("d76bef0b-1358-5895-bd42-f17f6f33eed1")) __declspec(novtable) IVector<winrt::Windows::Devices::Sms::SmsBroadcastType> : impl_IVector<winrt::Windows::Devices::Sms::SmsBroadcastType> {};
#endif

#ifndef WINRT_GENERIC_8e72fa52_4867_5696_b4d9_4ca23f19e177
#define WINRT_GENERIC_8e72fa52_4867_5696_b4d9_4ca23f19e177
template <> struct __declspec(uuid("8e72fa52-4867-5696-b4d9-4ca23f19e177")) __declspec(novtable) IVector<Windows::Devices::Sms::SmsFilterRule> : impl_IVector<Windows::Devices::Sms::SmsFilterRule> {};
#endif

#ifndef WINRT_GENERIC_23aaa815_24ef_57c4_b1bc_94d62c0a59a3
#define WINRT_GENERIC_23aaa815_24ef_57c4_b1bc_94d62c0a59a3
template <> struct __declspec(uuid("23aaa815-24ef-57c4-b1bc-94d62c0a59a3")) __declspec(novtable) IVectorView<Windows::Devices::Sms::SmsMessageRegistration> : impl_IVectorView<Windows::Devices::Sms::SmsMessageRegistration> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_33f985c7_dcfa_531f_9cce_ee5e6c26b1e6
#define WINRT_GENERIC_33f985c7_dcfa_531f_9cce_ee5e6c26b1e6
template <> struct __declspec(uuid("33f985c7-dcfa-531f-9cce-ee5e6c26b1e6")) __declspec(novtable) TypedEventHandler<Windows::Devices::Sms::SmsMessageRegistration, Windows::Devices::Sms::SmsMessageReceivedTriggerDetails> : impl_TypedEventHandler<Windows::Devices::Sms::SmsMessageRegistration, Windows::Devices::Sms::SmsMessageReceivedTriggerDetails> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_ac7f26f2_feb7_5b2a_8ac4_345bc62caede
#define WINRT_GENERIC_ac7f26f2_feb7_5b2a_8ac4_345bc62caede
template <> struct __declspec(uuid("ac7f26f2-feb7-5b2a-8ac4-345bc62caede")) __declspec(novtable) IMapView<hstring, hstring> : impl_IMapView<hstring, hstring> {};
#endif

#ifndef WINRT_GENERIC_6ea176ea_99ea_5c79_876a_f4c437b83df6
#define WINRT_GENERIC_6ea176ea_99ea_5c79_876a_f4c437b83df6
template <> struct __declspec(uuid("6ea176ea-99ea-5c79-876a-f4c437b83df6")) __declspec(novtable) IVectorView<Windows::Devices::Sms::ISmsBinaryMessage> : impl_IVectorView<Windows::Devices::Sms::ISmsBinaryMessage> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_abf9b459_48c3_5eac_9749_4c6db4d507e6
#define WINRT_GENERIC_abf9b459_48c3_5eac_9749_4c6db4d507e6
template <> struct __declspec(uuid("abf9b459-48c3-5eac-9749-4c6db4d507e6")) __declspec(novtable) IAsyncOperation<Windows::Devices::Sms::ISmsMessage> : impl_IAsyncOperation<Windows::Devices::Sms::ISmsMessage> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_d3acc5b1_6f85_507e_b40a_6950749b426f
#define WINRT_GENERIC_d3acc5b1_6f85_507e_b40a_6950749b426f
template <> struct __declspec(uuid("d3acc5b1-6f85-507e-b40a-6950749b426f")) __declspec(novtable) IVectorView<Windows::Devices::Sms::ISmsMessage> : impl_IVectorView<Windows::Devices::Sms::ISmsMessage> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_ab710de1_fcbb_5bd6_9f2f_285fa9fb44e8
#define WINRT_GENERIC_ab710de1_fcbb_5bd6_9f2f_285fa9fb44e8
template <> struct __declspec(uuid("ab710de1-fcbb-5bd6-9f2f-285fa9fb44e8")) __declspec(novtable) IAsyncOperation<Windows::Devices::Sms::SmsDevice> : impl_IAsyncOperation<Windows::Devices::Sms::SmsDevice> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_bfea7f78_50c2_5f1d_a6ea_9e978d2699ff
#define WINRT_GENERIC_bfea7f78_50c2_5f1d_a6ea_9e978d2699ff
template <> struct __declspec(uuid("bfea7f78-50c2-5f1d-a6ea-9e978d2699ff")) __declspec(novtable) IIterator<int32_t> : impl_IIterator<int32_t> {};
#endif

#ifndef WINRT_GENERIC_81a643fb_f51c_5565_83c4_f96425777b66
#define WINRT_GENERIC_81a643fb_f51c_5565_83c4_f96425777b66
template <> struct __declspec(uuid("81a643fb-f51c-5565-83c4-f96425777b66")) __declspec(novtable) IIterable<int32_t> : impl_IIterable<int32_t> {};
#endif

#ifndef WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
#define WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
template <> struct __declspec(uuid("8c304ebb-6615-50a4-8829-879ecd443236")) __declspec(novtable) IIterator<hstring> : impl_IIterator<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_c7d5c6fe_9206_5eb1_abc1_c1bc21804eeb
#define WINRT_GENERIC_c7d5c6fe_9206_5eb1_abc1_c1bc21804eeb
template <> struct __declspec(uuid("c7d5c6fe-9206-5eb1-abc1-c1bc21804eeb")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Devices::Sms::SmsSendMessageResult> : impl_AsyncOperationCompletedHandler<Windows::Devices::Sms::SmsSendMessageResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_6448ddea_c1cd_5143_a422_5fe4f008cc92
#define WINRT_GENERIC_6448ddea_c1cd_5143_a422_5fe4f008cc92
template <> struct __declspec(uuid("6448ddea-c1cd-5143-a422-5fe4f008cc92")) __declspec(novtable) IIterator<winrt::Windows::Devices::Sms::SmsBroadcastType> : impl_IIterator<winrt::Windows::Devices::Sms::SmsBroadcastType> {};
#endif

#ifndef WINRT_GENERIC_12276b75_173e_514b_98f0_8a7927a9206c
#define WINRT_GENERIC_12276b75_173e_514b_98f0_8a7927a9206c
template <> struct __declspec(uuid("12276b75-173e-514b-98f0-8a7927a9206c")) __declspec(novtable) IIterable<winrt::Windows::Devices::Sms::SmsBroadcastType> : impl_IIterable<winrt::Windows::Devices::Sms::SmsBroadcastType> {};
#endif

#ifndef WINRT_GENERIC_4063e791_da2d_5e4c_9113_5b6ba0a7c595
#define WINRT_GENERIC_4063e791_da2d_5e4c_9113_5b6ba0a7c595
template <> struct __declspec(uuid("4063e791-da2d-5e4c-9113-5b6ba0a7c595")) __declspec(novtable) IVectorView<winrt::Windows::Devices::Sms::SmsBroadcastType> : impl_IVectorView<winrt::Windows::Devices::Sms::SmsBroadcastType> {};
#endif

#ifndef WINRT_GENERIC_fec7cae6_97f5_5a19_b32a_d8f0ba276f34
#define WINRT_GENERIC_fec7cae6_97f5_5a19_b32a_d8f0ba276f34
template <> struct __declspec(uuid("fec7cae6-97f5-5a19-b32a-d8f0ba276f34")) __declspec(novtable) IIterator<Windows::Devices::Sms::SmsFilterRule> : impl_IIterator<Windows::Devices::Sms::SmsFilterRule> {};
#endif

#ifndef WINRT_GENERIC_03ed8267_9c90_5260_8bc0_6c3e3306c964
#define WINRT_GENERIC_03ed8267_9c90_5260_8bc0_6c3e3306c964
template <> struct __declspec(uuid("03ed8267-9c90-5260-8bc0-6c3e3306c964")) __declspec(novtable) IIterable<Windows::Devices::Sms::SmsFilterRule> : impl_IIterable<Windows::Devices::Sms::SmsFilterRule> {};
#endif

#ifndef WINRT_GENERIC_f3ed4299_de36_5d82_993f_35fc677d8b72
#define WINRT_GENERIC_f3ed4299_de36_5d82_993f_35fc677d8b72
template <> struct __declspec(uuid("f3ed4299-de36-5d82-993f-35fc677d8b72")) __declspec(novtable) IVectorView<Windows::Devices::Sms::SmsFilterRule> : impl_IVectorView<Windows::Devices::Sms::SmsFilterRule> {};
#endif

#ifndef WINRT_GENERIC_ee1a0675_f3c9_5c12_93e0_f2b01bdce611
#define WINRT_GENERIC_ee1a0675_f3c9_5c12_93e0_f2b01bdce611
template <> struct __declspec(uuid("ee1a0675-f3c9-5c12-93e0-f2b01bdce611")) __declspec(novtable) IIterator<Windows::Devices::Sms::SmsMessageRegistration> : impl_IIterator<Windows::Devices::Sms::SmsMessageRegistration> {};
#endif

#ifndef WINRT_GENERIC_f836fa0a_770d_5e8f_8664_01c43f959eea
#define WINRT_GENERIC_f836fa0a_770d_5e8f_8664_01c43f959eea
template <> struct __declspec(uuid("f836fa0a-770d-5e8f-8664-01c43f959eea")) __declspec(novtable) IIterable<Windows::Devices::Sms::SmsMessageRegistration> : impl_IIterable<Windows::Devices::Sms::SmsMessageRegistration> {};
#endif

#ifndef WINRT_GENERIC_13e60d89_ea0a_5b01_9c2f_0e5b435058e0
#define WINRT_GENERIC_13e60d89_ea0a_5b01_9c2f_0e5b435058e0
template <> struct __declspec(uuid("13e60d89-ea0a-5b01-9c2f-0e5b435058e0")) __declspec(novtable) IIterator<Windows::Devices::Sms::ISmsBinaryMessage> : impl_IIterator<Windows::Devices::Sms::ISmsBinaryMessage> {};
#endif

#ifndef WINRT_GENERIC_5678a6a5_4d5a_51c2_a133_4b83bf25d987
#define WINRT_GENERIC_5678a6a5_4d5a_51c2_a133_4b83bf25d987
template <> struct __declspec(uuid("5678a6a5-4d5a-51c2-a133-4b83bf25d987")) __declspec(novtable) IIterable<Windows::Devices::Sms::ISmsBinaryMessage> : impl_IIterable<Windows::Devices::Sms::ISmsBinaryMessage> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_4e6c4c86_ebe6_55d9_adc0_fecc38c82aa2
#define WINRT_GENERIC_4e6c4c86_ebe6_55d9_adc0_fecc38c82aa2
template <> struct __declspec(uuid("4e6c4c86-ebe6-55d9-adc0-fecc38c82aa2")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Devices::Sms::ISmsMessage> : impl_AsyncOperationCompletedHandler<Windows::Devices::Sms::ISmsMessage> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_eed04f5c_b2b2_5c83_8b13_c78af6ca3a18
#define WINRT_GENERIC_eed04f5c_b2b2_5c83_8b13_c78af6ca3a18
template <> struct __declspec(uuid("eed04f5c-b2b2-5c83-8b13-c78af6ca3a18")) __declspec(novtable) IIterator<Windows::Devices::Sms::ISmsMessage> : impl_IIterator<Windows::Devices::Sms::ISmsMessage> {};
#endif

#ifndef WINRT_GENERIC_ecabfd70_9601_5e38_83cf_b1046022a244
#define WINRT_GENERIC_ecabfd70_9601_5e38_83cf_b1046022a244
template <> struct __declspec(uuid("ecabfd70-9601-5e38-83cf-b1046022a244")) __declspec(novtable) IIterable<Windows::Devices::Sms::ISmsMessage> : impl_IIterable<Windows::Devices::Sms::ISmsMessage> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_44aa5484_43d0_5893_a4ee_7db00113ae60
#define WINRT_GENERIC_44aa5484_43d0_5893_a4ee_7db00113ae60
template <> struct __declspec(uuid("44aa5484-43d0-5893-a4ee-7db00113ae60")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Devices::Sms::SmsDevice> : impl_AsyncOperationCompletedHandler<Windows::Devices::Sms::SmsDevice> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_e9bdaaf0_cbf6_5c72_be90_29cbf3a1319b
#define WINRT_GENERIC_e9bdaaf0_cbf6_5c72_be90_29cbf3a1319b
template <> struct __declspec(uuid("e9bdaaf0-cbf6-5c72-be90-29cbf3a1319b")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_12f85589_415d_5b5d_b0d0_fda3b0295adc
#define WINRT_GENERIC_12f85589_415d_5b5d_b0d0_fda3b0295adc
template <> struct __declspec(uuid("12f85589-415d-5b5d-b0d0-fda3b0295adc")) __declspec(novtable) IAsyncOperationWithProgress<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sms::ISmsMessage>, int32_t> : impl_IAsyncOperationWithProgress<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sms::ISmsMessage>, int32_t> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_05eb86f1_7140_5517_b88d_cbaebe57e6b1
#define WINRT_GENERIC_05eb86f1_7140_5517_b88d_cbaebe57e6b1
template <> struct __declspec(uuid("05eb86f1-7140-5517-b88d-cbaebe57e6b1")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, hstring>> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_3f9d1255_ebf8_569f_91c3_49740d5944ce
#define WINRT_GENERIC_3f9d1255_ebf8_569f_91c3_49740d5944ce
template <> struct __declspec(uuid("3f9d1255-ebf8-569f-91c3-49740d5944ce")) __declspec(novtable) AsyncOperationProgressHandler<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sms::ISmsMessage>, int32_t> : impl_AsyncOperationProgressHandler<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sms::ISmsMessage>, int32_t> {};
#endif

#ifndef WINRT_GENERIC_c0454cfc_2f2f_5e0c_8de9_58b9e82a03ba
#define WINRT_GENERIC_c0454cfc_2f2f_5e0c_8de9_58b9e82a03ba
template <> struct __declspec(uuid("c0454cfc-2f2f-5e0c-8de9-58b9e82a03ba")) __declspec(novtable) AsyncOperationWithProgressCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sms::ISmsMessage>, int32_t> : impl_AsyncOperationWithProgressCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sms::ISmsMessage>, int32_t> {};
#endif


}

namespace Windows::Devices::Sms {

template <typename D>
struct WINRT_EBO impl_ISmsAppMessage
{
    Windows::Foundation::DateTime Timestamp() const;
    hstring To() const;
    void To(hstring_ref value) const;
    hstring From() const;
    hstring Body() const;
    void Body(hstring_ref value) const;
    hstring CallbackNumber() const;
    void CallbackNumber(hstring_ref value) const;
    bool IsDeliveryNotificationEnabled() const;
    void IsDeliveryNotificationEnabled(bool value) const;
    int32_t RetryAttemptCount() const;
    void RetryAttemptCount(int32_t value) const;
    Windows::Devices::Sms::SmsEncoding Encoding() const;
    void Encoding(Windows::Devices::Sms::SmsEncoding value) const;
    int32_t PortNumber() const;
    void PortNumber(int32_t value) const;
    int32_t TeleserviceId() const;
    void TeleserviceId(int32_t value) const;
    int32_t ProtocolId() const;
    void ProtocolId(int32_t value) const;
    Windows::Storage::Streams::IBuffer BinaryBody() const;
    void BinaryBody(const Windows::Storage::Streams::IBuffer & value) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsBinaryMessage
{
    Windows::Devices::Sms::SmsDataFormat Format() const;
    void Format(Windows::Devices::Sms::SmsDataFormat value) const;
    com_array<uint8_t> GetData() const;
    void SetData(array_ref<const uint8_t> value) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsBroadcastMessage
{
    Windows::Foundation::DateTime Timestamp() const;
    hstring To() const;
    hstring Body() const;
    int32_t Channel() const;
    Windows::Devices::Sms::SmsGeographicalScope GeographicalScope() const;
    int32_t MessageCode() const;
    int32_t UpdateNumber() const;
    Windows::Devices::Sms::SmsBroadcastType BroadcastType() const;
    bool IsEmergencyAlert() const;
    bool IsUserPopupRequested() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsDevice
{
    Windows::Devices::Sms::SendSmsMessageOperation SendMessageAsync(const Windows::Devices::Sms::ISmsMessage & message) const;
    Windows::Devices::Sms::SmsEncodedLength CalculateLength(const Windows::Devices::Sms::SmsTextMessage & message) const;
    hstring AccountPhoneNumber() const;
    Windows::Devices::Sms::CellularClass CellularClass() const;
    Windows::Devices::Sms::SmsDeviceMessageStore MessageStore() const;
    Windows::Devices::Sms::SmsDeviceStatus DeviceStatus() const;
    event_token SmsMessageReceived(const Windows::Devices::Sms::SmsMessageReceivedEventHandler & eventHandler) const;
    using SmsMessageReceived_revoker = event_revoker<ISmsDevice>;
    SmsMessageReceived_revoker SmsMessageReceived(auto_revoke_t, const Windows::Devices::Sms::SmsMessageReceivedEventHandler & eventHandler) const;
    void SmsMessageReceived(event_token eventCookie) const;
    event_token SmsDeviceStatusChanged(const Windows::Devices::Sms::SmsDeviceStatusChangedEventHandler & eventHandler) const;
    using SmsDeviceStatusChanged_revoker = event_revoker<ISmsDevice>;
    SmsDeviceStatusChanged_revoker SmsDeviceStatusChanged(auto_revoke_t, const Windows::Devices::Sms::SmsDeviceStatusChangedEventHandler & eventHandler) const;
    void SmsDeviceStatusChanged(event_token eventCookie) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsDevice2
{
    hstring SmscAddress() const;
    void SmscAddress(hstring_ref value) const;
    hstring DeviceId() const;
    hstring ParentDeviceId() const;
    hstring AccountPhoneNumber() const;
    Windows::Devices::Sms::CellularClass CellularClass() const;
    Windows::Devices::Sms::SmsDeviceStatus DeviceStatus() const;
    Windows::Devices::Sms::SmsEncodedLength CalculateLength(const Windows::Devices::Sms::ISmsMessageBase & message) const;
    Windows::Foundation::IAsyncOperation<Windows::Devices::Sms::SmsSendMessageResult> SendMessageAndGetResultAsync(const Windows::Devices::Sms::ISmsMessageBase & message) const;
    event_token DeviceStatusChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sms::SmsDevice2, Windows::IInspectable> & eventHandler) const;
    using DeviceStatusChanged_revoker = event_revoker<ISmsDevice2>;
    DeviceStatusChanged_revoker DeviceStatusChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sms::SmsDevice2, Windows::IInspectable> & eventHandler) const;
    void DeviceStatusChanged(event_token eventCookie) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsDevice2Statics
{
    hstring GetDeviceSelector() const;
    Windows::Devices::Sms::SmsDevice2 FromId(hstring_ref deviceId) const;
    Windows::Devices::Sms::SmsDevice2 GetDefault() const;
    Windows::Devices::Sms::SmsDevice2 FromParentId(hstring_ref parentDeviceId) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsDeviceMessageStore
{
    Windows::Foundation::IAsyncAction DeleteMessageAsync(uint32_t messageId) const;
    Windows::Foundation::IAsyncAction DeleteMessagesAsync(Windows::Devices::Sms::SmsMessageFilter messageFilter) const;
    Windows::Foundation::IAsyncOperation<Windows::Devices::Sms::ISmsMessage> GetMessageAsync(uint32_t messageId) const;
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Foundation::Collections::IVectorView<Windows::Devices::Sms::ISmsMessage>, int32_t> GetMessagesAsync(Windows::Devices::Sms::SmsMessageFilter messageFilter) const;
    uint32_t MaxMessages() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsDeviceStatics
{
    hstring GetDeviceSelector() const;
    Windows::Foundation::IAsyncOperation<Windows::Devices::Sms::SmsDevice> FromIdAsync(hstring_ref deviceId) const;
    Windows::Foundation::IAsyncOperation<Windows::Devices::Sms::SmsDevice> GetDefaultAsync() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsDeviceStatics2
{
    Windows::Foundation::IAsyncOperation<Windows::Devices::Sms::SmsDevice> FromNetworkAccountIdAsync(hstring_ref networkAccountId) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsFilterRule
{
    Windows::Devices::Sms::SmsMessageType MessageType() const;
    Windows::Foundation::Collections::IVector<hstring> ImsiPrefixes() const;
    Windows::Foundation::Collections::IVector<hstring> DeviceIds() const;
    Windows::Foundation::Collections::IVector<hstring> SenderNumbers() const;
    Windows::Foundation::Collections::IVector<hstring> TextMessagePrefixes() const;
    Windows::Foundation::Collections::IVector<int32_t> PortNumbers() const;
    Windows::Devices::Sms::CellularClass CellularClass() const;
    void CellularClass(Windows::Devices::Sms::CellularClass value) const;
    Windows::Foundation::Collections::IVector<int32_t> ProtocolIds() const;
    Windows::Foundation::Collections::IVector<int32_t> TeleserviceIds() const;
    Windows::Foundation::Collections::IVector<hstring> WapApplicationIds() const;
    Windows::Foundation::Collections::IVector<hstring> WapContentTypes() const;
    Windows::Foundation::Collections::IVector<winrt::Windows::Devices::Sms::SmsBroadcastType> BroadcastTypes() const;
    Windows::Foundation::Collections::IVector<int32_t> BroadcastChannels() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsFilterRuleFactory
{
    Windows::Devices::Sms::SmsFilterRule CreateFilterRule(Windows::Devices::Sms::SmsMessageType messageType) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsFilterRules
{
    Windows::Devices::Sms::SmsFilterActionType ActionType() const;
    Windows::Foundation::Collections::IVector<Windows::Devices::Sms::SmsFilterRule> Rules() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsFilterRulesFactory
{
    Windows::Devices::Sms::SmsFilterRules CreateFilterRules(Windows::Devices::Sms::SmsFilterActionType actionType) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsMessage
{
    uint32_t Id() const;
    Windows::Devices::Sms::SmsMessageClass MessageClass() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsMessageBase
{
    Windows::Devices::Sms::SmsMessageType MessageType() const;
    hstring DeviceId() const;
    Windows::Devices::Sms::CellularClass CellularClass() const;
    Windows::Devices::Sms::SmsMessageClass MessageClass() const;
    hstring SimIccId() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsMessageReceivedEventArgs
{
    Windows::Devices::Sms::SmsTextMessage TextMessage() const;
    Windows::Devices::Sms::SmsBinaryMessage BinaryMessage() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsMessageReceivedTriggerDetails
{
    Windows::Devices::Sms::SmsMessageType MessageType() const;
    Windows::Devices::Sms::SmsTextMessage2 TextMessage() const;
    Windows::Devices::Sms::SmsWapMessage WapMessage() const;
    Windows::Devices::Sms::SmsAppMessage AppMessage() const;
    Windows::Devices::Sms::SmsBroadcastMessage BroadcastMessage() const;
    Windows::Devices::Sms::SmsVoicemailMessage VoicemailMessage() const;
    Windows::Devices::Sms::SmsStatusMessage StatusMessage() const;
    void Drop() const;
    void Accept() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsMessageRegistration
{
    hstring Id() const;
    void Unregister() const;
    event_token MessageReceived(const Windows::Foundation::TypedEventHandler<Windows::Devices::Sms::SmsMessageRegistration, Windows::Devices::Sms::SmsMessageReceivedTriggerDetails> & eventHandler) const;
    using MessageReceived_revoker = event_revoker<ISmsMessageRegistration>;
    MessageReceived_revoker MessageReceived(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Sms::SmsMessageRegistration, Windows::Devices::Sms::SmsMessageReceivedTriggerDetails> & eventHandler) const;
    void MessageReceived(event_token eventCookie) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsMessageRegistrationStatics
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Sms::SmsMessageRegistration> AllRegistrations() const;
    Windows::Devices::Sms::SmsMessageRegistration Register(hstring_ref id, const Windows::Devices::Sms::SmsFilterRules & filterRules) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsReceivedEventDetails
{
    hstring DeviceId() const;
    uint32_t MessageIndex() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsReceivedEventDetails2
{
    Windows::Devices::Sms::SmsMessageClass MessageClass() const;
    Windows::Devices::Sms::SmsBinaryMessage BinaryMessage() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsSendMessageResult
{
    bool IsSuccessful() const;
    Windows::Foundation::Collections::IVectorView<int32_t> MessageReferenceNumbers() const;
    Windows::Devices::Sms::CellularClass CellularClass() const;
    Windows::Devices::Sms::SmsModemErrorCode ModemErrorCode() const;
    bool IsErrorTransient() const;
    int32_t NetworkCauseCode() const;
    int32_t TransportFailureCause() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsStatusMessage
{
    hstring To() const;
    hstring From() const;
    hstring Body() const;
    int32_t Status() const;
    int32_t MessageReferenceNumber() const;
    Windows::Foundation::DateTime ServiceCenterTimestamp() const;
    Windows::Foundation::DateTime DischargeTime() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsTextMessage
{
    Windows::Foundation::DateTime Timestamp() const;
    uint32_t PartReferenceId() const;
    uint32_t PartNumber() const;
    uint32_t PartCount() const;
    hstring To() const;
    void To(hstring_ref value) const;
    hstring From() const;
    void From(hstring_ref value) const;
    hstring Body() const;
    void Body(hstring_ref value) const;
    Windows::Devices::Sms::SmsEncoding Encoding() const;
    void Encoding(Windows::Devices::Sms::SmsEncoding value) const;
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Sms::ISmsBinaryMessage> ToBinaryMessages(Windows::Devices::Sms::SmsDataFormat format) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsTextMessage2
{
    Windows::Foundation::DateTime Timestamp() const;
    hstring To() const;
    void To(hstring_ref value) const;
    hstring From() const;
    hstring Body() const;
    void Body(hstring_ref value) const;
    Windows::Devices::Sms::SmsEncoding Encoding() const;
    void Encoding(Windows::Devices::Sms::SmsEncoding value) const;
    hstring CallbackNumber() const;
    void CallbackNumber(hstring_ref value) const;
    bool IsDeliveryNotificationEnabled() const;
    void IsDeliveryNotificationEnabled(bool value) const;
    int32_t RetryAttemptCount() const;
    void RetryAttemptCount(int32_t value) const;
    int32_t TeleserviceId() const;
    int32_t ProtocolId() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsTextMessageStatics
{
    Windows::Devices::Sms::SmsTextMessage FromBinaryMessage(const Windows::Devices::Sms::SmsBinaryMessage & binaryMessage) const;
    Windows::Devices::Sms::SmsTextMessage FromBinaryData(Windows::Devices::Sms::SmsDataFormat format, array_ref<const uint8_t> value) const;
};

template <typename D>
struct WINRT_EBO impl_ISmsVoicemailMessage
{
    Windows::Foundation::DateTime Timestamp() const;
    hstring To() const;
    hstring Body() const;
    Windows::Foundation::IReference<int32_t> MessageCount() const;
};

template <typename D>
struct WINRT_EBO impl_ISmsWapMessage
{
    Windows::Foundation::DateTime Timestamp() const;
    hstring To() const;
    hstring From() const;
    hstring ApplicationId() const;
    hstring ContentType() const;
    Windows::Storage::Streams::IBuffer BinaryBody() const;
    Windows::Foundation::Collections::IMap<hstring, hstring> Headers() const;
};

struct SmsDeviceStatusChangedEventHandler : Windows::IUnknown
{
    SmsDeviceStatusChangedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<SmsDeviceStatusChangedEventHandler>(m_ptr); }
    template <typename L> SmsDeviceStatusChangedEventHandler(L lambda);
    template <typename F> SmsDeviceStatusChangedEventHandler (F * function);
    template <typename O, typename M> SmsDeviceStatusChangedEventHandler(O * object, M method);
    void operator()(const Windows::Devices::Sms::SmsDevice & sender) const;
};

struct SmsMessageReceivedEventHandler : Windows::IUnknown
{
    SmsMessageReceivedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<SmsMessageReceivedEventHandler>(m_ptr); }
    template <typename L> SmsMessageReceivedEventHandler(L lambda);
    template <typename F> SmsMessageReceivedEventHandler (F * function);
    template <typename O, typename M> SmsMessageReceivedEventHandler(O * object, M method);
    void operator()(const Windows::Devices::Sms::SmsDevice & sender, const Windows::Devices::Sms::SmsMessageReceivedEventArgs & e) const;
};

struct ISmsAppMessage :
    Windows::IInspectable,
    impl::consume<ISmsAppMessage>,
    impl::require<ISmsAppMessage, Windows::Devices::Sms::ISmsMessageBase>
{
    ISmsAppMessage(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsAppMessage>(m_ptr); }
};

struct ISmsBinaryMessage :
    Windows::IInspectable,
    impl::consume<ISmsBinaryMessage>,
    impl::require<ISmsBinaryMessage, Windows::Devices::Sms::ISmsMessage>
{
    ISmsBinaryMessage(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsBinaryMessage>(m_ptr); }
};

struct ISmsBroadcastMessage :
    Windows::IInspectable,
    impl::consume<ISmsBroadcastMessage>,
    impl::require<ISmsBroadcastMessage, Windows::Devices::Sms::ISmsMessageBase>
{
    ISmsBroadcastMessage(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsBroadcastMessage>(m_ptr); }
};

struct ISmsDevice :
    Windows::IInspectable,
    impl::consume<ISmsDevice>
{
    ISmsDevice(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsDevice>(m_ptr); }
};

struct ISmsDevice2 :
    Windows::IInspectable,
    impl::consume<ISmsDevice2>
{
    ISmsDevice2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsDevice2>(m_ptr); }
};

struct ISmsDevice2Statics :
    Windows::IInspectable,
    impl::consume<ISmsDevice2Statics>
{
    ISmsDevice2Statics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsDevice2Statics>(m_ptr); }
};

struct ISmsDeviceMessageStore :
    Windows::IInspectable,
    impl::consume<ISmsDeviceMessageStore>
{
    ISmsDeviceMessageStore(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsDeviceMessageStore>(m_ptr); }
};

struct ISmsDeviceStatics :
    Windows::IInspectable,
    impl::consume<ISmsDeviceStatics>
{
    ISmsDeviceStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsDeviceStatics>(m_ptr); }
};

struct ISmsDeviceStatics2 :
    Windows::IInspectable,
    impl::consume<ISmsDeviceStatics2>
{
    ISmsDeviceStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsDeviceStatics2>(m_ptr); }
};

struct ISmsFilterRule :
    Windows::IInspectable,
    impl::consume<ISmsFilterRule>
{
    ISmsFilterRule(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsFilterRule>(m_ptr); }
};

struct ISmsFilterRuleFactory :
    Windows::IInspectable,
    impl::consume<ISmsFilterRuleFactory>
{
    ISmsFilterRuleFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsFilterRuleFactory>(m_ptr); }
};

struct ISmsFilterRules :
    Windows::IInspectable,
    impl::consume<ISmsFilterRules>
{
    ISmsFilterRules(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsFilterRules>(m_ptr); }
};

struct ISmsFilterRulesFactory :
    Windows::IInspectable,
    impl::consume<ISmsFilterRulesFactory>
{
    ISmsFilterRulesFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsFilterRulesFactory>(m_ptr); }
};

struct ISmsMessage :
    Windows::IInspectable,
    impl::consume<ISmsMessage>
{
    ISmsMessage(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsMessage>(m_ptr); }
};

struct ISmsMessageBase :
    Windows::IInspectable,
    impl::consume<ISmsMessageBase>
{
    ISmsMessageBase(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsMessageBase>(m_ptr); }
};

struct ISmsMessageReceivedEventArgs :
    Windows::IInspectable,
    impl::consume<ISmsMessageReceivedEventArgs>
{
    ISmsMessageReceivedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsMessageReceivedEventArgs>(m_ptr); }
};

struct ISmsMessageReceivedTriggerDetails :
    Windows::IInspectable,
    impl::consume<ISmsMessageReceivedTriggerDetails>
{
    ISmsMessageReceivedTriggerDetails(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsMessageReceivedTriggerDetails>(m_ptr); }
};

struct ISmsMessageRegistration :
    Windows::IInspectable,
    impl::consume<ISmsMessageRegistration>
{
    ISmsMessageRegistration(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsMessageRegistration>(m_ptr); }
};

struct ISmsMessageRegistrationStatics :
    Windows::IInspectable,
    impl::consume<ISmsMessageRegistrationStatics>
{
    ISmsMessageRegistrationStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsMessageRegistrationStatics>(m_ptr); }
};

struct ISmsReceivedEventDetails :
    Windows::IInspectable,
    impl::consume<ISmsReceivedEventDetails>
{
    ISmsReceivedEventDetails(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsReceivedEventDetails>(m_ptr); }
};

struct ISmsReceivedEventDetails2 :
    Windows::IInspectable,
    impl::consume<ISmsReceivedEventDetails2>
{
    ISmsReceivedEventDetails2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsReceivedEventDetails2>(m_ptr); }
};

struct ISmsSendMessageResult :
    Windows::IInspectable,
    impl::consume<ISmsSendMessageResult>
{
    ISmsSendMessageResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsSendMessageResult>(m_ptr); }
};

struct ISmsStatusMessage :
    Windows::IInspectable,
    impl::consume<ISmsStatusMessage>,
    impl::require<ISmsStatusMessage, Windows::Devices::Sms::ISmsMessageBase>
{
    ISmsStatusMessage(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsStatusMessage>(m_ptr); }
};

struct ISmsTextMessage :
    Windows::IInspectable,
    impl::consume<ISmsTextMessage>,
    impl::require<ISmsTextMessage, Windows::Devices::Sms::ISmsMessage>
{
    ISmsTextMessage(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsTextMessage>(m_ptr); }
};

struct ISmsTextMessage2 :
    Windows::IInspectable,
    impl::consume<ISmsTextMessage2>,
    impl::require<ISmsTextMessage2, Windows::Devices::Sms::ISmsMessageBase>
{
    ISmsTextMessage2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsTextMessage2>(m_ptr); }
};

struct ISmsTextMessageStatics :
    Windows::IInspectable,
    impl::consume<ISmsTextMessageStatics>
{
    ISmsTextMessageStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsTextMessageStatics>(m_ptr); }
};

struct ISmsVoicemailMessage :
    Windows::IInspectable,
    impl::consume<ISmsVoicemailMessage>,
    impl::require<ISmsVoicemailMessage, Windows::Devices::Sms::ISmsMessageBase>
{
    ISmsVoicemailMessage(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsVoicemailMessage>(m_ptr); }
};

struct ISmsWapMessage :
    Windows::IInspectable,
    impl::consume<ISmsWapMessage>,
    impl::require<ISmsWapMessage, Windows::Devices::Sms::ISmsMessageBase>
{
    ISmsWapMessage(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISmsWapMessage>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Midi.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::Midi {

struct IMidiChannelPressureMessage;
struct IMidiChannelPressureMessageFactory;
struct IMidiControlChangeMessage;
struct IMidiControlChangeMessageFactory;
struct IMidiInPort;
struct IMidiInPortStatics;
struct IMidiMessage;
struct IMidiMessageReceivedEventArgs;
struct IMidiNoteOffMessage;
struct IMidiNoteOffMessageFactory;
struct IMidiNoteOnMessage;
struct IMidiNoteOnMessageFactory;
struct IMidiOutPort;
struct IMidiOutPortStatics;
struct IMidiPitchBendChangeMessage;
struct IMidiPitchBendChangeMessageFactory;
struct IMidiPolyphonicKeyPressureMessage;
struct IMidiPolyphonicKeyPressureMessageFactory;
struct IMidiProgramChangeMessage;
struct IMidiProgramChangeMessageFactory;
struct IMidiSongPositionPointerMessage;
struct IMidiSongPositionPointerMessageFactory;
struct IMidiSongSelectMessage;
struct IMidiSongSelectMessageFactory;
struct IMidiSynthesizer;
struct IMidiSynthesizerStatics;
struct IMidiSystemExclusiveMessageFactory;
struct IMidiTimeCodeMessage;
struct IMidiTimeCodeMessageFactory;
struct MidiActiveSensingMessage;
struct MidiChannelPressureMessage;
struct MidiContinueMessage;
struct MidiControlChangeMessage;
struct MidiInPort;
struct MidiMessageReceivedEventArgs;
struct MidiNoteOffMessage;
struct MidiNoteOnMessage;
struct MidiOutPort;
struct MidiPitchBendChangeMessage;
struct MidiPolyphonicKeyPressureMessage;
struct MidiProgramChangeMessage;
struct MidiSongPositionPointerMessage;
struct MidiSongSelectMessage;
struct MidiStartMessage;
struct MidiStopMessage;
struct MidiSynthesizer;
struct MidiSystemExclusiveMessage;
struct MidiSystemResetMessage;
struct MidiTimeCodeMessage;
struct MidiTimingClockMessage;
struct MidiTuneRequestMessage;

}

namespace Windows::Devices::Midi {

struct IMidiChannelPressureMessage;
struct IMidiChannelPressureMessageFactory;
struct IMidiControlChangeMessage;
struct IMidiControlChangeMessageFactory;
struct IMidiInPort;
struct IMidiInPortStatics;
struct IMidiMessage;
struct IMidiMessageReceivedEventArgs;
struct IMidiNoteOffMessage;
struct IMidiNoteOffMessageFactory;
struct IMidiNoteOnMessage;
struct IMidiNoteOnMessageFactory;
struct IMidiOutPort;
struct IMidiOutPortStatics;
struct IMidiPitchBendChangeMessage;
struct IMidiPitchBendChangeMessageFactory;
struct IMidiPolyphonicKeyPressureMessage;
struct IMidiPolyphonicKeyPressureMessageFactory;
struct IMidiProgramChangeMessage;
struct IMidiProgramChangeMessageFactory;
struct IMidiSongPositionPointerMessage;
struct IMidiSongPositionPointerMessageFactory;
struct IMidiSongSelectMessage;
struct IMidiSongSelectMessageFactory;
struct IMidiSynthesizer;
struct IMidiSynthesizerStatics;
struct IMidiSystemExclusiveMessageFactory;
struct IMidiTimeCodeMessage;
struct IMidiTimeCodeMessageFactory;
struct MidiActiveSensingMessage;
struct MidiChannelPressureMessage;
struct MidiContinueMessage;
struct MidiControlChangeMessage;
struct MidiInPort;
struct MidiMessageReceivedEventArgs;
struct MidiNoteOffMessage;
struct MidiNoteOnMessage;
struct MidiOutPort;
struct MidiPitchBendChangeMessage;
struct MidiPolyphonicKeyPressureMessage;
struct MidiProgramChangeMessage;
struct MidiSongPositionPointerMessage;
struct MidiSongSelectMessage;
struct MidiStartMessage;
struct MidiStopMessage;
struct MidiSynthesizer;
struct MidiSystemExclusiveMessage;
struct MidiSystemResetMessage;
struct MidiTimeCodeMessage;
struct MidiTimingClockMessage;
struct MidiTuneRequestMessage;

}

namespace Windows::Devices::Midi {

enum class MidiMessageType
{
    None = 0,
    NoteOff = 128,
    NoteOn = 144,
    PolyphonicKeyPressure = 160,
    ControlChange = 176,
    ProgramChange = 192,
    ChannelPressure = 208,
    PitchBendChange = 224,
    SystemExclusive = 240,
    MidiTimeCode = 241,
    SongPositionPointer = 242,
    SongSelect = 243,
    TuneRequest = 246,
    EndSystemExclusive = 247,
    TimingClock = 248,
    Start = 250,
    Continue = 251,
    Stop = 252,
    ActiveSensing = 254,
    SystemReset = 255,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Gaming.Input.ForceFeedback.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Gaming.Input.ForceFeedback.3.h"
#include "Windows.Gaming.Input.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Gaming::Input::ForceFeedback::IConditionForceEffect> : produce_base<D, Windows::Gaming::Input::ForceFeedback::IConditionForceEffect>
{
    HRESULT __stdcall get_Kind(Windows::Gaming::Input::ForceFeedback::ConditionForceEffectKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Kind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetParameters(abi_arg_in<Windows::Foundation::Numerics::float3> direction, float positiveCoefficient, float negativeCoefficient, float maxPositiveMagnitude, float maxNegativeMagnitude, float deadZone, float bias) noexcept override
    {
        try
        {
            this->shim().SetParameters(*reinterpret_cast<const Windows::Foundation::Numerics::float3 *>(&direction), positiveCoefficient, negativeCoefficient, maxPositiveMagnitude, maxNegativeMagnitude, deadZone, bias);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::ForceFeedback::IConditionForceEffectFactory> : produce_base<D, Windows::Gaming::Input::ForceFeedback::IConditionForceEffectFactory>
{
    HRESULT __stdcall abi_CreateInstance(Windows::Gaming::Input::ForceFeedback::ConditionForceEffectKind effectKind, abi_arg_out<Windows::Gaming::Input::ForceFeedback::IForceFeedbackEffect> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateInstance(effectKind));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::ForceFeedback::IConstantForceEffect> : produce_base<D, Windows::Gaming::Input::ForceFeedback::IConstantForceEffect>
{
    HRESULT __stdcall abi_SetParameters(abi_arg_in<Windows::Foundation::Numerics::float3> vector, abi_arg_in<Windows::Foundation::TimeSpan> duration) noexcept override
    {
        try
        {
            this->shim().SetParameters(*reinterpret_cast<const Windows::Foundation::Numerics::float3 *>(&vector), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&duration));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetParametersWithEnvelope(abi_arg_in<Windows::Foundation::Numerics::float3> vector, float attackGain, float sustainGain, float releaseGain, abi_arg_in<Windows::Foundation::TimeSpan> startDelay, abi_arg_in<Windows::Foundation::TimeSpan> attackDuration, abi_arg_in<Windows::Foundation::TimeSpan> sustainDuration, abi_arg_in<Windows::Foundation::TimeSpan> releaseDuration, uint32_t repeatCount) noexcept override
    {
        try
        {
            this->shim().SetParametersWithEnvelope(*reinterpret_cast<const Windows::Foundation::Numerics::float3 *>(&vector), attackGain, sustainGain, releaseGain, *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&startDelay), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&attackDuration), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&sustainDuration), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&releaseDuration), repeatCount);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::ForceFeedback::IForceFeedbackEffect> : produce_base<D, Windows::Gaming::Input::ForceFeedback::IForceFeedbackEffect>
{
    HRESULT __stdcall get_Gain(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Gain());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Gain(double value) noexcept override
    {
        try
        {
            this->shim().Gain(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_State(Windows::Gaming::Input::ForceFeedback::ForceFeedbackEffectState * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().State());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Start() noexcept override
    {
        try
        {
            this->shim().Start();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Stop() noexcept override
    {
        try
        {
            this->shim().Stop();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::ForceFeedback::IForceFeedbackMotor> : produce_base<D, Windows::Gaming::Input::ForceFeedback::IForceFeedbackMotor>
{
    HRESULT __stdcall get_AreEffectsPaused(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AreEffectsPaused());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MasterGain(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MasterGain());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_MasterGain(double value) noexcept override
    {
        try
        {
            this->shim().MasterGain(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SupportedAxes(Windows::Gaming::Input::ForceFeedback::ForceFeedbackEffectAxes * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportedAxes());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_LoadEffectAsync(abi_arg_in<Windows::Gaming::Input::ForceFeedback::IForceFeedbackEffect> effect, abi_arg_out<Windows::Foundation::IAsyncOperation<winrt::Windows::Gaming::Input::ForceFeedback::ForceFeedbackLoadEffectResult>> asyncOperation) noexcept override
    {
        try
        {
            *asyncOperation = detach(this->shim().LoadEffectAsync(*reinterpret_cast<const Windows::Gaming::Input::ForceFeedback::IForceFeedbackEffect *>(&effect)));
            return S_OK;
        }
        catch (...)
        {
            *asyncOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_PauseAllEffects() noexcept override
    {
        try
        {
            this->shim().PauseAllEffects();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ResumeAllEffects() noexcept override
    {
        try
        {
            this->shim().ResumeAllEffects();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StopAllEffects() noexcept override
    {
        try
        {
            this->shim().StopAllEffects();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TryDisableAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<bool>> asyncOperation) noexcept override
    {
        try
        {
            *asyncOperation = detach(this->shim().TryDisableAsync());
            return S_OK;
        }
        catch (...)
        {
            *asyncOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TryEnableAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<bool>> asyncOperation) noexcept override
    {
        try
        {
            *asyncOperation = detach(this->shim().TryEnableAsync());
            return S_OK;
        }
        catch (...)
        {
            *asyncOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TryResetAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<bool>> asyncOperation) noexcept override
    {
        try
        {
            *asyncOperation = detach(this->shim().TryResetAsync());
            return S_OK;
        }
        catch (...)
        {
            *asyncOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TryUnloadEffectAsync(abi_arg_in<Windows::Gaming::Input::ForceFeedback::IForceFeedbackEffect> effect, abi_arg_out<Windows::Foundation::IAsyncOperation<bool>> asyncOperation) noexcept override
    {
        try
        {
            *asyncOperation = detach(this->shim().TryUnloadEffectAsync(*reinterpret_cast<const Windows::Gaming::Input::ForceFeedback::IForceFeedbackEffect *>(&effect)));
            return S_OK;
        }
        catch (...)
        {
            *asyncOperation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::ForceFeedback::IPeriodicForceEffect> : produce_base<D, Windows::Gaming::Input::ForceFeedback::IPeriodicForceEffect>
{
    HRESULT __stdcall get_Kind(Windows::Gaming::Input::ForceFeedback::PeriodicForceEffectKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Kind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetParameters(abi_arg_in<Windows::Foundation::Numerics::float3> vector, float frequency, float phase, float bias, abi_arg_in<Windows::Foundation::TimeSpan> duration) noexcept override
    {
        try
        {
            this->shim().SetParameters(*reinterpret_cast<const Windows::Foundation::Numerics::float3 *>(&vector), frequency, phase, bias, *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&duration));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetParametersWithEnvelope(abi_arg_in<Windows::Foundation::Numerics::float3> vector, float frequency, float phase, float bias, float attackGain, float sustainGain, float releaseGain, abi_arg_in<Windows::Foundation::TimeSpan> startDelay, abi_arg_in<Windows::Foundation::TimeSpan> attackDuration, abi_arg_in<Windows::Foundation::TimeSpan> sustainDuration, abi_arg_in<Windows::Foundation::TimeSpan> releaseDuration, uint32_t repeatCount) noexcept override
    {
        try
        {
            this->shim().SetParametersWithEnvelope(*reinterpret_cast<const Windows::Foundation::Numerics::float3 *>(&vector), frequency, phase, bias, attackGain, sustainGain, releaseGain, *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&startDelay), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&attackDuration), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&sustainDuration), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&releaseDuration), repeatCount);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::ForceFeedback::IPeriodicForceEffectFactory> : produce_base<D, Windows::Gaming::Input::ForceFeedback::IPeriodicForceEffectFactory>
{
    HRESULT __stdcall abi_CreateInstance(Windows::Gaming::Input::ForceFeedback::PeriodicForceEffectKind effectKind, abi_arg_out<Windows::Gaming::Input::ForceFeedback::IForceFeedbackEffect> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateInstance(effectKind));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Gaming::Input::ForceFeedback::IRampForceEffect> : produce_base<D, Windows::Gaming::Input::ForceFeedback::IRampForceEffect>
{
    HRESULT __stdcall abi_SetParameters(abi_arg_in<Windows::Foundation::Numerics::float3> startVector, abi_arg_in<Windows::Foundation::Numerics::float3> endVector, abi_arg_in<Windows::Foundation::TimeSpan> duration) noexcept override
    {
        try
        {
            this->shim().SetParameters(*reinterpret_cast<const Windows::Foundation::Numerics::float3 *>(&startVector), *reinterpret_cast<const Windows::Foundation::Numerics::float3 *>(&endVector), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&duration));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetParametersWithEnvelope(abi_arg_in<Windows::Foundation::Numerics::float3> startVector, abi_arg_in<Windows::Foundation::Numerics::float3> endVector, float attackGain, float sustainGain, float releaseGain, abi_arg_in<Windows::Foundation::TimeSpan> startDelay, abi_arg_in<Windows::Foundation::TimeSpan> attackDuration, abi_arg_in<Windows::Foundation::TimeSpan> sustainDuration, abi_arg_in<Windows::Foundation::TimeSpan> releaseDuration, uint32_t repeatCount) noexcept override
    {
        try
        {
            this->shim().SetParametersWithEnvelope(*reinterpret_cast<const Windows::Foundation::Numerics::float3 *>(&startVector), *reinterpret_cast<const Windows::Foundation::Numerics::float3 *>(&endVector), attackGain, sustainGain, releaseGain, *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&startDelay), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&attackDuration), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&sustainDuration), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&releaseDuration), repeatCount);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Gaming::Input::ForceFeedback {

template <typename D> double impl_IForceFeedbackEffect<D>::Gain() const
{
    double value {};
    check_hresult(static_cast<const IForceFeedbackEffect &>(static_cast<const D &>(*this))->get_Gain(&value));
    return value;
}

template <typename D> void impl_IForceFeedbackEffect<D>::Gain(double value) const
{
    check_hresult(static_cast<const IForceFeedbackEffect &>(static_cast<const D &>(*this))->put_Gain(value));
}

template <typename D> Windows::Gaming::Input::ForceFeedback::ForceFeedbackEffectState impl_IForceFeedbackEffect<D>::State() const
{
    Windows::Gaming::Input::ForceFeedback::ForceFeedbackEffectState value {};
    check_hresult(static_cast<const IForceFeedbackEffect &>(static_cast<const D &>(*this))->get_State(&value));
    return value;
}

template <typename D> void impl_IForceFeedbackEffect<D>::Start() const
{
    check_hresult(static_cast<const IForceFeedbackEffect &>(static_cast<const D &>(*this))->abi_Start());
}

template <typename D> void impl_IForceFeedbackEffect<D>::Stop() const
{
    check_hresult(static_cast<const IForceFeedbackEffect &>(static_cast<const D &>(*this))->abi_Stop());
}

template <typename D> Windows::Gaming::Input::ForceFeedback::ConditionForceEffectKind impl_IConditionForceEffect<D>::Kind() const
{
    Windows::Gaming::Input::ForceFeedback::ConditionForceEffectKind value {};
    check_hresult(static_cast<const IConditionForceEffect &>(static_cast<const D &>(*this))->get_Kind(&value));
    return value;
}

template <typename D> void impl_IConditionForceEffect<D>::SetParameters(const Windows::Foundation::Numerics::float3 & direction, float positiveCoefficient, float negativeCoefficient, float maxPositiveMagnitude, float maxNegativeMagnitude, float deadZone, float bias) const
{
    check_hresult(static_cast<const IConditionForceEffect &>(static_cast<const D &>(*this))->abi_SetParameters(get(direction), positiveCoefficient, negativeCoefficient, maxPositiveMagnitude, maxNegativeMagnitude, deadZone, bias));
}

template <typename D> Windows::Gaming::Input::ForceFeedback::ConditionForceEffect impl_IConditionForceEffectFactory<D>::CreateInstance(Windows::Gaming::Input::ForceFeedback::ConditionForceEffectKind effectKind) const
{
    Windows::Gaming::Input::ForceFeedback::ConditionForceEffect value { nullptr };
    check_hresult(static_cast<const IConditionForceEffectFactory &>(static_cast<const D &>(*this))->abi_CreateInstance(effectKind, put(value)));
    return value;
}

template <typename D> void impl_IConstantForceEffect<D>::SetParameters(const Windows::Foundation::Numerics::float3 & vector, const Windows::Foundation::TimeSpan & duration) const
{
    check_hresult(static_cast<const IConstantForceEffect &>(static_cast<const D &>(*this))->abi_SetParameters(get(vector), get(duration)));
}

template <typename D> void impl_IConstantForceEffect<D>::SetParametersWithEnvelope(const Windows::Foundation::Numerics::float3 & vector, float attackGain, float sustainGain, float releaseGain, const Windows::Foundation::TimeSpan & startDelay, const Windows::Foundation::TimeSpan & attackDuration, const Windows::Foundation::TimeSpan & sustainDuration, const Windows::Foundation::TimeSpan & releaseDuration, uint32_t repeatCount) const
{
    check_hresult(static_cast<const IConstantForceEffect &>(static_cast<const D &>(*this))->abi_SetParametersWithEnvelope(get(vector), attackGain, sustainGain, releaseGain, get(startDelay), get(attackDuration), get(sustainDuration), get(releaseDuration), repeatCount));
}

template <typename D> Windows::Gaming::Input::ForceFeedback::PeriodicForceEffectKind impl_IPeriodicForceEffect<D>::Kind() const
{
    Windows::Gaming::Input::ForceFeedback::PeriodicForceEffectKind value {};
    check_hresult(static_cast<const IPeriodicForceEffect &>(static_cast<const D &>(*this))->get_Kind(&value));
    return value;
}

template <typename D> void impl_IPeriodicForceEffect<D>::SetParameters(const Windows::Foundation::Numerics::float3 & vector, float frequency, float phase, float bias, const Windows::Foundation::TimeSpan & duration) const
{
    check_hresult(static_cast<const IPeriodicForceEffect &>(static_cast<const D &>(*this))->abi_SetParameters(get(vector), frequency, phase, bias, get(duration)));
}

template <typename D> void impl_IPeriodicForceEffect<D>::SetParametersWithEnvelope(const Windows::Foundation::Numerics::float3 & vector, float frequency, float phase, float bias, float attackGain, float sustainGain, float releaseGain, const Windows::Foundation::TimeSpan & startDelay, const Windows::Foundation::TimeSpan & attackDuration, const Windows::Foundation::TimeSpan & sustainDuration, const Windows::Foundation::TimeSpan & releaseDuration, uint32_t repeatCount) const
{
    check_hresult(static_cast<const IPeriodicForceEffect &>(static_cast<const D &>(*this))->abi_SetParametersWithEnvelope(get(vector), frequency, phase, bias, attackGain, sustainGain, releaseGain, get(startDelay), get(attackDuration), get(sustainDuration), get(releaseDuration), repeatCount));
}

template <typename D> Windows::Gaming::Input::ForceFeedback::PeriodicForceEffect impl_IPeriodicForceEffectFactory<D>::CreateInstance(Windows::Gaming::Input::ForceFeedback::PeriodicForceEffectKind effectKind) const
{
    Windows::Gaming::Input::ForceFeedback::PeriodicForceEffect value { nullptr };
    check_hresult(static_cast<const IPeriodicForceEffectFactory &>(static_cast<const D &>(*this))->abi_CreateInstance(effectKind, put(value)));
    return value;
}

template <typename D> void impl_IRampForceEffect<D>::SetParameters(const Windows::Foundation::Numerics::float3 & startVector, const Windows::Foundation::Numerics::float3 & endVector, const Windows::Foundation::TimeSpan & duration) const
{
    check_hresult(static_cast<const IRampForceEffect &>(static_cast<const D &>(*this))->abi_SetParameters(get(startVector), get(endVector), get(duration)));
}

template <typename D> void impl_IRampForceEffect<D>::SetParametersWithEnvelope(const Windows::Foundation::Numerics::float3 & startVector, const Windows::Foundation::Numerics::float3 & endVector, float attackGain, float sustainGain, float releaseGain, const Windows::Foundation::TimeSpan & startDelay, const Windows::Foundation::TimeSpan & attackDuration, const Windows::Foundation::TimeSpan & sustainDuration, const Windows::Foundation::TimeSpan & releaseDuration, uint32_t repeatCount) const
{
    check_hresult(static_cast<const IRampForceEffect &>(static_cast<const D &>(*this))->abi_SetParametersWithEnvelope(get(startVector), get(endVector), attackGain, sustainGain, releaseGain, get(startDelay), get(attackDuration), get(sustainDuration), get(releaseDuration), repeatCount));
}

template <typename D> bool impl_IForceFeedbackMotor<D>::AreEffectsPaused() const
{
    bool value {};
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->get_AreEffectsPaused(&value));
    return value;
}

template <typename D> double impl_IForceFeedbackMotor<D>::MasterGain() const
{
    double value {};
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->get_MasterGain(&value));
    return value;
}

template <typename D> void impl_IForceFeedbackMotor<D>::MasterGain(double value) const
{
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->put_MasterGain(value));
}

template <typename D> bool impl_IForceFeedbackMotor<D>::IsEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->get_IsEnabled(&value));
    return value;
}

template <typename D> Windows::Gaming::Input::ForceFeedback::ForceFeedbackEffectAxes impl_IForceFeedbackMotor<D>::SupportedAxes() const
{
    Windows::Gaming::Input::ForceFeedback::ForceFeedbackEffectAxes value {};
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->get_SupportedAxes(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<winrt::Windows::Gaming::Input::ForceFeedback::ForceFeedbackLoadEffectResult> impl_IForceFeedbackMotor<D>::LoadEffectAsync(const Windows::Gaming::Input::ForceFeedback::IForceFeedbackEffect & effect) const
{
    Windows::Foundation::IAsyncOperation<winrt::Windows::Gaming::Input::ForceFeedback::ForceFeedbackLoadEffectResult> asyncOperation;
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->abi_LoadEffectAsync(get(effect), put(asyncOperation)));
    return asyncOperation;
}

template <typename D> void impl_IForceFeedbackMotor<D>::PauseAllEffects() const
{
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->abi_PauseAllEffects());
}

template <typename D> void impl_IForceFeedbackMotor<D>::ResumeAllEffects() const
{
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->abi_ResumeAllEffects());
}

template <typename D> void impl_IForceFeedbackMotor<D>::StopAllEffects() const
{
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->abi_StopAllEffects());
}

template <typename D> Windows::Foundation::IAsyncOperation<bool> impl_IForceFeedbackMotor<D>::TryDisableAsync() const
{
    Windows::Foundation::IAsyncOperation<bool> asyncOperation;
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->abi_TryDisableAsync(put(asyncOperation)));
    return asyncOperation;
}

template <typename D> Windows::Foundation::IAsyncOperation<bool> impl_IForceFeedbackMotor<D>::TryEnableAsync() const
{
    Windows::Foundation::IAsyncOperation<bool> asyncOperation;
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->abi_TryEnableAsync(put(asyncOperation)));
    return asyncOperation;
}

template <typename D> Windows::Foundation::IAsyncOperation<bool> impl_IForceFeedbackMotor<D>::TryResetAsync() const
{
    Windows::Foundation::IAsyncOperation<bool> asyncOperation;
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->abi_TryResetAsync(put(asyncOperation)));
    return asyncOperation;
}

template <typename D> Windows::Foundation::IAsyncOperation<bool> impl_IForceFeedbackMotor<D>::TryUnloadEffectAsync(const Windows::Gaming::Input::ForceFeedback::IForceFeedbackEffect & effect) const
{
    Windows::Foundation::IAsyncOperation<bool> asyncOperation;
    check_hresult(static_cast<const IForceFeedbackMotor &>(static_cast<const D &>(*this))->abi_TryUnloadEffectAsync(get(effect), put(asyncOperation)));
    return asyncOperation;
}

inline ConditionForceEffect::ConditionForceEffect(Windows::Gaming::Input::ForceFeedback::ConditionForceEffectKind effectKind) :
    ConditionForceEffect(get_activation_factory<ConditionForceEffect, IConditionForceEffectFactory>().CreateInstance(effectKind))
{}

inline ConstantForceEffect::ConstantForceEffect() :
    ConstantForceEffect(activate_instance<ConstantForceEffect>())
{}

inline PeriodicForceEffect::PeriodicForceEffect(Windows::Gaming::Input::ForceFeedback::PeriodicForceEffectKind effectKind) :
    PeriodicForceEffect(get_activation_factory<PeriodicForceEffect, IPeriodicForceEffectFactory>().CreateInstance(effectKind))
{}

inline RampForceEffect::RampForceEffect() :
    RampForceEffect(activate_instance<RampForceEffect>())
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Media.Devices.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Media.Capture.3.h"
#include "internal/Windows.Media.MediaProperties.3.h"
#include "internal/Windows.Media.Devices.Core.3.h"
#include "internal/Windows.Media.Devices.3.h"
#include "Windows.Media.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Media::Devices {

template <typename L> CallControlEventHandler::CallControlEventHandler(L lambda) :
    CallControlEventHandler(impl::make_delegate<impl_CallControlEventHandler<L>, CallControlEventHandler>(std::forward<L>(lambda)))
{}

template <typename F> CallControlEventHandler::CallControlEventHandler(F * function) :
    CallControlEventHandler([=](auto && ... args) { function(args ...); })
{}

template <typename O, typename M> CallControlEventHandler::CallControlEventHandler(O * object, M method) :
    CallControlEventHandler([=](auto && ... args) { ((*object).*(method))(args ...); })
{}

inline void CallControlEventHandler::operator()(const Windows::Media::Devices::CallControl & sender) const
{
    check_hresult((*this)->abi_Invoke(get(sender)));
}

template <typename L> DialRequestedEventHandler::DialRequestedEventHandler(L lambda) :
    DialRequestedEventHandler(impl::make_delegate<impl_DialRequestedEventHandler<L>, DialRequestedEventHandler>(std::forward<L>(lambda)))
{}

template <typename F> DialRequestedEventHandler::DialRequestedEventHandler(F * function) :
    DialRequestedEventHandler([=](auto && ... args) { function(args ...); })
{}

template <typename O, typename M> DialRequestedEventHandler::DialRequestedEventHandler(O * object, M method) :
    DialRequestedEventHandler([=](auto && ... args) { ((*object).*(method))(args ...); })
{}

inline void DialRequestedEventHandler::operator()(const Windows::Media::Devices::CallControl & sender, const Windows::Media::Devices::DialRequestedEventArgs & e) const
{
    check_hresult((*this)->abi_Invoke(get(sender), get(e)));
}

template <typename L> KeypadPressedEventHandler::KeypadPressedEventHandler(L lambda) :
    KeypadPressedEventHandler(impl::make_delegate<impl_KeypadPressedEventHandler<L>, KeypadPressedEventHandler>(std::forward<L>(lambda)))
{}

template <typename F> KeypadPressedEventHandler::KeypadPressedEventHandler(F * function) :
    KeypadPressedEventHandler([=](auto && ... args) { function(args ...); })
{}

template <typename O, typename M> KeypadPressedEventHandler::KeypadPressedEventHandler(O * object, M method) :
    KeypadPressedEventHandler([=](auto && ... args) { ((*object).*(method))(args ...); })
{}

inline void KeypadPressedEventHandler::operator()(const Windows::Media::Devices::CallControl & sender, const Windows::Media::Devices::KeypadPressedEventArgs & e) const
{
    check_hresult((*this)->abi_Invoke(get(sender), get(e)));
}

template <typename L> RedialRequestedEventHandler::RedialRequestedEventHandler(L lambda) :
    RedialRequestedEventHandler(impl::make_delegate<impl_RedialRequestedEventHandler<L>, RedialRequestedEventHandler>(std::forward<L>(lambda)))
{}

template <typename F> RedialRequestedEventHandler::RedialRequestedEventHandler(F * function) :
    RedialRequestedEventHandler([=](auto && ... args) { function(args ...); })
{}

template <typename O, typename M> RedialRequestedEventHandler::RedialRequestedEventHandler(O * object, M method) :
    RedialRequestedEventHandler([=](auto && ... args) { ((*object).*(method))(args ...); })
{}

inline void RedialRequestedEventHandler::operator()(const Windows::Media::Devices::CallControl & sender, const Windows::Media::Devices::RedialRequestedEventArgs & e) const
{
    check_hresult((*this)->abi_Invoke(get(sender), get(e)));
}

}

namespace impl {

template <typename D>
struct produce<D, Windows::Media::Devices::IAdvancedPhotoCaptureSettings> : produce_base<D, Windows::Media::Devices::IAdvancedPhotoCaptureSettings>
{
    HRESULT __stdcall get_Mode(Windows::Media::Devices::AdvancedPhotoMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Mode(Windows::Media::Devices::AdvancedPhotoMode value) noexcept override
    {
        try
        {
            this->shim().Mode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IAdvancedPhotoControl> : produce_base<D, Windows::Media::Devices::IAdvancedPhotoControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SupportedModes(abi_arg_out<Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::AdvancedPhotoMode>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportedModes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Mode(Windows::Media::Devices::AdvancedPhotoMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Configure(abi_arg_in<Windows::Media::Devices::IAdvancedPhotoCaptureSettings> settings) noexcept override
    {
        try
        {
            this->shim().Configure(*reinterpret_cast<const Windows::Media::Devices::AdvancedPhotoCaptureSettings *>(&settings));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IAdvancedVideoCaptureDeviceController> : produce_base<D, Windows::Media::Devices::IAdvancedVideoCaptureDeviceController>
{
    HRESULT __stdcall abi_SetDeviceProperty(abi_arg_in<hstring> propertyId, abi_arg_in<Windows::IInspectable> propertyValue) noexcept override
    {
        try
        {
            this->shim().SetDeviceProperty(*reinterpret_cast<const hstring *>(&propertyId), *reinterpret_cast<const Windows::IInspectable *>(&propertyValue));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeviceProperty(abi_arg_in<hstring> propertyId, abi_arg_out<Windows::IInspectable> propertyValue) noexcept override
    {
        try
        {
            *propertyValue = detach(this->shim().GetDeviceProperty(*reinterpret_cast<const hstring *>(&propertyId)));
            return S_OK;
        }
        catch (...)
        {
            *propertyValue = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IAdvancedVideoCaptureDeviceController2> : produce_base<D, Windows::Media::Devices::IAdvancedVideoCaptureDeviceController2>
{
    HRESULT __stdcall get_LowLagPhotoSequence(abi_arg_out<Windows::Media::Devices::ILowLagPhotoSequenceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LowLagPhotoSequence());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LowLagPhoto(abi_arg_out<Windows::Media::Devices::ILowLagPhotoControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LowLagPhoto());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SceneModeControl(abi_arg_out<Windows::Media::Devices::ISceneModeControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SceneModeControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TorchControl(abi_arg_out<Windows::Media::Devices::ITorchControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TorchControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FlashControl(abi_arg_out<Windows::Media::Devices::IFlashControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FlashControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WhiteBalanceControl(abi_arg_out<Windows::Media::Devices::IWhiteBalanceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WhiteBalanceControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExposureControl(abi_arg_out<Windows::Media::Devices::IExposureControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExposureControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FocusControl(abi_arg_out<Windows::Media::Devices::IFocusControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FocusControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExposureCompensationControl(abi_arg_out<Windows::Media::Devices::IExposureCompensationControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExposureCompensationControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsoSpeedControl(abi_arg_out<Windows::Media::Devices::IIsoSpeedControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsoSpeedControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RegionsOfInterestControl(abi_arg_out<Windows::Media::Devices::IRegionsOfInterestControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RegionsOfInterestControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PrimaryUse(Windows::Media::Devices::CaptureUse * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PrimaryUse());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PrimaryUse(Windows::Media::Devices::CaptureUse value) noexcept override
    {
        try
        {
            this->shim().PrimaryUse(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IAdvancedVideoCaptureDeviceController3> : produce_base<D, Windows::Media::Devices::IAdvancedVideoCaptureDeviceController3>
{
    HRESULT __stdcall get_VariablePhotoSequenceController(abi_arg_out<Windows::Media::Devices::Core::IVariablePhotoSequenceController> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().VariablePhotoSequenceController());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PhotoConfirmationControl(abi_arg_out<Windows::Media::Devices::IPhotoConfirmationControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PhotoConfirmationControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ZoomControl(abi_arg_out<Windows::Media::Devices::IZoomControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ZoomControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IAdvancedVideoCaptureDeviceController4> : produce_base<D, Windows::Media::Devices::IAdvancedVideoCaptureDeviceController4>
{
    HRESULT __stdcall get_ExposurePriorityVideoControl(abi_arg_out<Windows::Media::Devices::IExposurePriorityVideoControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExposurePriorityVideoControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DesiredOptimization(Windows::Media::Devices::MediaCaptureOptimization * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DesiredOptimization());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DesiredOptimization(Windows::Media::Devices::MediaCaptureOptimization value) noexcept override
    {
        try
        {
            this->shim().DesiredOptimization(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HdrVideoControl(abi_arg_out<Windows::Media::Devices::IHdrVideoControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HdrVideoControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OpticalImageStabilizationControl(abi_arg_out<Windows::Media::Devices::IOpticalImageStabilizationControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OpticalImageStabilizationControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AdvancedPhotoControl(abi_arg_out<Windows::Media::Devices::IAdvancedPhotoControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AdvancedPhotoControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IAudioDeviceController> : produce_base<D, Windows::Media::Devices::IAudioDeviceController>
{
    HRESULT __stdcall put_Muted(bool value) noexcept override
    {
        try
        {
            this->shim().Muted(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Muted(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Muted());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_VolumePercent(float value) noexcept override
    {
        try
        {
            this->shim().VolumePercent(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_VolumePercent(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().VolumePercent());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::ICallControl> : produce_base<D, Windows::Media::Devices::ICallControl>
{
    HRESULT __stdcall abi_IndicateNewIncomingCall(bool enableRinger, abi_arg_in<hstring> callerId, uint64_t * callToken) noexcept override
    {
        try
        {
            *callToken = detach(this->shim().IndicateNewIncomingCall(enableRinger, *reinterpret_cast<const hstring *>(&callerId)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_IndicateNewOutgoingCall(uint64_t * callToken) noexcept override
    {
        try
        {
            *callToken = detach(this->shim().IndicateNewOutgoingCall());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_IndicateActiveCall(uint64_t callToken) noexcept override
    {
        try
        {
            this->shim().IndicateActiveCall(callToken);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EndCall(uint64_t callToken) noexcept override
    {
        try
        {
            this->shim().EndCall(callToken);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HasRinger(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HasRinger());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_AnswerRequested(abi_arg_in<Windows::Media::Devices::CallControlEventHandler> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().AnswerRequested(*reinterpret_cast<const Windows::Media::Devices::CallControlEventHandler *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_AnswerRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().AnswerRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_HangUpRequested(abi_arg_in<Windows::Media::Devices::CallControlEventHandler> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().HangUpRequested(*reinterpret_cast<const Windows::Media::Devices::CallControlEventHandler *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_HangUpRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().HangUpRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_DialRequested(abi_arg_in<Windows::Media::Devices::DialRequestedEventHandler> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().DialRequested(*reinterpret_cast<const Windows::Media::Devices::DialRequestedEventHandler *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_DialRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().DialRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_RedialRequested(abi_arg_in<Windows::Media::Devices::RedialRequestedEventHandler> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().RedialRequested(*reinterpret_cast<const Windows::Media::Devices::RedialRequestedEventHandler *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_RedialRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().RedialRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_KeypadPressed(abi_arg_in<Windows::Media::Devices::KeypadPressedEventHandler> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().KeypadPressed(*reinterpret_cast<const Windows::Media::Devices::KeypadPressedEventHandler *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_KeypadPressed(event_token token) noexcept override
    {
        try
        {
            this->shim().KeypadPressed(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_AudioTransferRequested(abi_arg_in<Windows::Media::Devices::CallControlEventHandler> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().AudioTransferRequested(*reinterpret_cast<const Windows::Media::Devices::CallControlEventHandler *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_AudioTransferRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().AudioTransferRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::ICallControlStatics> : produce_base<D, Windows::Media::Devices::ICallControlStatics>
{
    HRESULT __stdcall abi_GetDefault(abi_arg_out<Windows::Media::Devices::ICallControl> callControl) noexcept override
    {
        try
        {
            *callControl = detach(this->shim().GetDefault());
            return S_OK;
        }
        catch (...)
        {
            *callControl = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_FromId(abi_arg_in<hstring> deviceId, abi_arg_out<Windows::Media::Devices::ICallControl> callControl) noexcept override
    {
        try
        {
            *callControl = detach(this->shim().FromId(*reinterpret_cast<const hstring *>(&deviceId)));
            return S_OK;
        }
        catch (...)
        {
            *callControl = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IDefaultAudioDeviceChangedEventArgs> : produce_base<D, Windows::Media::Devices::IDefaultAudioDeviceChangedEventArgs>
{
    HRESULT __stdcall get_Id(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Id());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Role(Windows::Media::Devices::AudioDeviceRole * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Role());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IDialRequestedEventArgs> : produce_base<D, Windows::Media::Devices::IDialRequestedEventArgs>
{
    HRESULT __stdcall abi_Handled() noexcept override
    {
        try
        {
            this->shim().Handled();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Contact(abi_arg_out<Windows::IInspectable> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Contact());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IExposureCompensationControl> : produce_base<D, Windows::Media::Devices::IExposureCompensationControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Min(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Min());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Max(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Max());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Step(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Step());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetValueAsync(float value, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetValueAsync(value));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IExposureControl> : produce_base<D, Windows::Media::Devices::IExposureControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Auto(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Auto());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetAutoAsync(bool value, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetAutoAsync(value));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Min(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Min());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Max(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Max());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Step(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Step());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetValueAsync(abi_arg_in<Windows::Foundation::TimeSpan> shutterDuration, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetValueAsync(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&shutterDuration)));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IExposurePriorityVideoControl> : produce_base<D, Windows::Media::Devices::IExposurePriorityVideoControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Enabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Enabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Enabled(bool value) noexcept override
    {
        try
        {
            this->shim().Enabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IFlashControl> : produce_base<D, Windows::Media::Devices::IFlashControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PowerSupported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PowerSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RedEyeReductionSupported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RedEyeReductionSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Enabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Enabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Enabled(bool value) noexcept override
    {
        try
        {
            this->shim().Enabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Auto(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Auto());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Auto(bool value) noexcept override
    {
        try
        {
            this->shim().Auto(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RedEyeReduction(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RedEyeReduction());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_RedEyeReduction(bool value) noexcept override
    {
        try
        {
            this->shim().RedEyeReduction(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PowerPercent(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PowerPercent());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PowerPercent(float value) noexcept override
    {
        try
        {
            this->shim().PowerPercent(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IFlashControl2> : produce_base<D, Windows::Media::Devices::IFlashControl2>
{
    HRESULT __stdcall get_AssistantLightSupported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AssistantLightSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AssistantLightEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AssistantLightEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AssistantLightEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().AssistantLightEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IFocusControl> : produce_base<D, Windows::Media::Devices::IFocusControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SupportedPresets(abi_arg_out<Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::FocusPreset>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportedPresets());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Preset(Windows::Media::Devices::FocusPreset * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Preset());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetPresetAsync(Windows::Media::Devices::FocusPreset preset, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetPresetAsync(preset));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetPresetWithCompletionOptionAsync(Windows::Media::Devices::FocusPreset preset, bool completeBeforeFocus, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetPresetAsync(preset, completeBeforeFocus));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Min(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Min());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Max(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Max());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Step(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Step());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetValueAsync(uint32_t focus, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetValueAsync(focus));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_FocusAsync(abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().FocusAsync());
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IFocusControl2> : produce_base<D, Windows::Media::Devices::IFocusControl2>
{
    HRESULT __stdcall get_FocusChangedSupported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FocusChangedSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WaitForFocusSupported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WaitForFocusSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SupportedFocusModes(abi_arg_out<Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::FocusMode>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportedFocusModes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SupportedFocusDistances(abi_arg_out<Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::ManualFocusDistance>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportedFocusDistances());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SupportedFocusRanges(abi_arg_out<Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::AutoFocusRange>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportedFocusRanges());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Mode(Windows::Media::Devices::FocusMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FocusState(Windows::Media::Devices::MediaCaptureFocusState * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FocusState());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UnlockAsync(abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().UnlockAsync());
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_LockAsync(abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().LockAsync());
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Configure(abi_arg_in<Windows::Media::Devices::IFocusSettings> settings) noexcept override
    {
        try
        {
            this->shim().Configure(*reinterpret_cast<const Windows::Media::Devices::FocusSettings *>(&settings));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IFocusSettings> : produce_base<D, Windows::Media::Devices::IFocusSettings>
{
    HRESULT __stdcall get_Mode(Windows::Media::Devices::FocusMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Mode(Windows::Media::Devices::FocusMode value) noexcept override
    {
        try
        {
            this->shim().Mode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AutoFocusRange(Windows::Media::Devices::AutoFocusRange * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AutoFocusRange());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AutoFocusRange(Windows::Media::Devices::AutoFocusRange value) noexcept override
    {
        try
        {
            this->shim().AutoFocusRange(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(abi_arg_out<Windows::Foundation::IReference<uint32_t>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Value(abi_arg_in<Windows::Foundation::IReference<uint32_t>> value) noexcept override
    {
        try
        {
            this->shim().Value(*reinterpret_cast<const Windows::Foundation::IReference<uint32_t> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Distance(abi_arg_out<Windows::Foundation::IReference<winrt::Windows::Media::Devices::ManualFocusDistance>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Distance());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Distance(abi_arg_in<Windows::Foundation::IReference<winrt::Windows::Media::Devices::ManualFocusDistance>> value) noexcept override
    {
        try
        {
            this->shim().Distance(*reinterpret_cast<const Windows::Foundation::IReference<winrt::Windows::Media::Devices::ManualFocusDistance> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WaitForFocus(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WaitForFocus());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_WaitForFocus(bool value) noexcept override
    {
        try
        {
            this->shim().WaitForFocus(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DisableDriverFallback(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DisableDriverFallback());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DisableDriverFallback(bool value) noexcept override
    {
        try
        {
            this->shim().DisableDriverFallback(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IHdrVideoControl> : produce_base<D, Windows::Media::Devices::IHdrVideoControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SupportedModes(abi_arg_out<Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::HdrVideoMode>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportedModes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Mode(Windows::Media::Devices::HdrVideoMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Mode(Windows::Media::Devices::HdrVideoMode value) noexcept override
    {
        try
        {
            this->shim().Mode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IIsoSpeedControl> : produce_base<D, Windows::Media::Devices::IIsoSpeedControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SupportedPresets(abi_arg_out<Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::IsoSpeedPreset>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportedPresets());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Preset(Windows::Media::Devices::IsoSpeedPreset * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Preset());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetPresetAsync(Windows::Media::Devices::IsoSpeedPreset preset, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetPresetAsync(preset));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IIsoSpeedControl2> : produce_base<D, Windows::Media::Devices::IIsoSpeedControl2>
{
    HRESULT __stdcall get_Min(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Min());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Max(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Max());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Step(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Step());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetValueAsync(uint32_t isoSpeed, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetValueAsync(isoSpeed));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Auto(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Auto());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetAutoAsync(abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetAutoAsync());
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IKeypadPressedEventArgs> : produce_base<D, Windows::Media::Devices::IKeypadPressedEventArgs>
{
    HRESULT __stdcall get_TelephonyKey(Windows::Media::Devices::TelephonyKey * telephonyKey) noexcept override
    {
        try
        {
            *telephonyKey = detach(this->shim().TelephonyKey());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::ILowLagPhotoControl> : produce_base<D, Windows::Media::Devices::ILowLagPhotoControl>
{
    HRESULT __stdcall abi_GetHighestConcurrentFrameRate(abi_arg_in<Windows::Media::MediaProperties::IMediaEncodingProperties> captureProperties, abi_arg_out<Windows::Media::MediaProperties::IMediaRatio> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetHighestConcurrentFrameRate(*reinterpret_cast<const Windows::Media::MediaProperties::IMediaEncodingProperties *>(&captureProperties)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetCurrentFrameRate(abi_arg_out<Windows::Media::MediaProperties::IMediaRatio> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetCurrentFrameRate());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ThumbnailEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ThumbnailEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ThumbnailEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().ThumbnailEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ThumbnailFormat(Windows::Media::MediaProperties::MediaThumbnailFormat * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ThumbnailFormat());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ThumbnailFormat(Windows::Media::MediaProperties::MediaThumbnailFormat value) noexcept override
    {
        try
        {
            this->shim().ThumbnailFormat(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DesiredThumbnailSize(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DesiredThumbnailSize());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DesiredThumbnailSize(uint32_t value) noexcept override
    {
        try
        {
            this->shim().DesiredThumbnailSize(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HardwareAcceleratedThumbnailSupported(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HardwareAcceleratedThumbnailSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::ILowLagPhotoSequenceControl> : produce_base<D, Windows::Media::Devices::ILowLagPhotoSequenceControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaxPastPhotos(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxPastPhotos());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaxPhotosPerSecond(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxPhotosPerSecond());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PastPhotoLimit(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PastPhotoLimit());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PastPhotoLimit(uint32_t value) noexcept override
    {
        try
        {
            this->shim().PastPhotoLimit(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PhotosPerSecondLimit(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PhotosPerSecondLimit());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PhotosPerSecondLimit(float value) noexcept override
    {
        try
        {
            this->shim().PhotosPerSecondLimit(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetHighestConcurrentFrameRate(abi_arg_in<Windows::Media::MediaProperties::IMediaEncodingProperties> captureProperties, abi_arg_out<Windows::Media::MediaProperties::IMediaRatio> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetHighestConcurrentFrameRate(*reinterpret_cast<const Windows::Media::MediaProperties::IMediaEncodingProperties *>(&captureProperties)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetCurrentFrameRate(abi_arg_out<Windows::Media::MediaProperties::IMediaRatio> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetCurrentFrameRate());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ThumbnailEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ThumbnailEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ThumbnailEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().ThumbnailEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ThumbnailFormat(Windows::Media::MediaProperties::MediaThumbnailFormat * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ThumbnailFormat());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ThumbnailFormat(Windows::Media::MediaProperties::MediaThumbnailFormat value) noexcept override
    {
        try
        {
            this->shim().ThumbnailFormat(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DesiredThumbnailSize(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DesiredThumbnailSize());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DesiredThumbnailSize(uint32_t value) noexcept override
    {
        try
        {
            this->shim().DesiredThumbnailSize(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HardwareAcceleratedThumbnailSupported(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HardwareAcceleratedThumbnailSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IMediaDeviceControl> : produce_base<D, Windows::Media::Devices::IMediaDeviceControl>
{
    HRESULT __stdcall get_Capabilities(abi_arg_out<Windows::Media::Devices::IMediaDeviceControlCapabilities> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Capabilities());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TryGetValue(double * value, bool * succeeded) noexcept override
    {
        try
        {
            *succeeded = detach(this->shim().TryGetValue(*value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TrySetValue(double value, bool * succeeded) noexcept override
    {
        try
        {
            *succeeded = detach(this->shim().TrySetValue(value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TryGetAuto(bool * value, bool * succeeded) noexcept override
    {
        try
        {
            *succeeded = detach(this->shim().TryGetAuto(*value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TrySetAuto(bool value, bool * succeeded) noexcept override
    {
        try
        {
            *succeeded = detach(this->shim().TrySetAuto(value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IMediaDeviceControlCapabilities> : produce_base<D, Windows::Media::Devices::IMediaDeviceControlCapabilities>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Min(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Min());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Max(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Max());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Step(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Step());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Default(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Default());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AutoModeSupported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AutoModeSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IMediaDeviceController> : produce_base<D, Windows::Media::Devices::IMediaDeviceController>
{
    HRESULT __stdcall abi_GetAvailableMediaStreamProperties(Windows::Media::Capture::MediaStreamType mediaStreamType, abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Media::MediaProperties::IMediaEncodingProperties>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetAvailableMediaStreamProperties(mediaStreamType));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetMediaStreamProperties(Windows::Media::Capture::MediaStreamType mediaStreamType, abi_arg_out<Windows::Media::MediaProperties::IMediaEncodingProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetMediaStreamProperties(mediaStreamType));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetMediaStreamPropertiesAsync(Windows::Media::Capture::MediaStreamType mediaStreamType, abi_arg_in<Windows::Media::MediaProperties::IMediaEncodingProperties> mediaEncodingProperties, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetMediaStreamPropertiesAsync(mediaStreamType, *reinterpret_cast<const Windows::Media::MediaProperties::IMediaEncodingProperties *>(&mediaEncodingProperties)));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IMediaDeviceStatics> : produce_base<D, Windows::Media::Devices::IMediaDeviceStatics>
{
    HRESULT __stdcall abi_GetAudioCaptureSelector(abi_arg_out<hstring> selector) noexcept override
    {
        try
        {
            *selector = detach(this->shim().GetAudioCaptureSelector());
            return S_OK;
        }
        catch (...)
        {
            *selector = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetAudioRenderSelector(abi_arg_out<hstring> selector) noexcept override
    {
        try
        {
            *selector = detach(this->shim().GetAudioRenderSelector());
            return S_OK;
        }
        catch (...)
        {
            *selector = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetVideoCaptureSelector(abi_arg_out<hstring> selector) noexcept override
    {
        try
        {
            *selector = detach(this->shim().GetVideoCaptureSelector());
            return S_OK;
        }
        catch (...)
        {
            *selector = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDefaultAudioCaptureId(Windows::Media::Devices::AudioDeviceRole role, abi_arg_out<hstring> deviceId) noexcept override
    {
        try
        {
            *deviceId = detach(this->shim().GetDefaultAudioCaptureId(role));
            return S_OK;
        }
        catch (...)
        {
            *deviceId = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDefaultAudioRenderId(Windows::Media::Devices::AudioDeviceRole role, abi_arg_out<hstring> deviceId) noexcept override
    {
        try
        {
            *deviceId = detach(this->shim().GetDefaultAudioRenderId(role));
            return S_OK;
        }
        catch (...)
        {
            *deviceId = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_DefaultAudioCaptureDeviceChanged(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioCaptureDeviceChangedEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().DefaultAudioCaptureDeviceChanged(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioCaptureDeviceChangedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_DefaultAudioCaptureDeviceChanged(event_token cookie) noexcept override
    {
        try
        {
            this->shim().DefaultAudioCaptureDeviceChanged(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_DefaultAudioRenderDeviceChanged(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioRenderDeviceChangedEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().DefaultAudioRenderDeviceChanged(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioRenderDeviceChangedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_DefaultAudioRenderDeviceChanged(event_token cookie) noexcept override
    {
        try
        {
            this->shim().DefaultAudioRenderDeviceChanged(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IOpticalImageStabilizationControl> : produce_base<D, Windows::Media::Devices::IOpticalImageStabilizationControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SupportedModes(abi_arg_out<Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::OpticalImageStabilizationMode>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportedModes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Mode(Windows::Media::Devices::OpticalImageStabilizationMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Mode(Windows::Media::Devices::OpticalImageStabilizationMode value) noexcept override
    {
        try
        {
            this->shim().Mode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IPhotoConfirmationControl> : produce_base<D, Windows::Media::Devices::IPhotoConfirmationControl>
{
    HRESULT __stdcall get_Supported(bool * pbSupported) noexcept override
    {
        try
        {
            *pbSupported = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Enabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Enabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Enabled(bool value) noexcept override
    {
        try
        {
            this->shim().Enabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PixelFormat(Windows::Media::MediaProperties::MediaPixelFormat * format) noexcept override
    {
        try
        {
            *format = detach(this->shim().PixelFormat());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PixelFormat(Windows::Media::MediaProperties::MediaPixelFormat format) noexcept override
    {
        try
        {
            this->shim().PixelFormat(format);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IRedialRequestedEventArgs> : produce_base<D, Windows::Media::Devices::IRedialRequestedEventArgs>
{
    HRESULT __stdcall abi_Handled() noexcept override
    {
        try
        {
            this->shim().Handled();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IRegionOfInterest> : produce_base<D, Windows::Media::Devices::IRegionOfInterest>
{
    HRESULT __stdcall get_AutoFocusEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AutoFocusEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AutoFocusEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().AutoFocusEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AutoWhiteBalanceEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AutoWhiteBalanceEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AutoWhiteBalanceEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().AutoWhiteBalanceEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AutoExposureEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AutoExposureEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AutoExposureEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().AutoExposureEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Bounds(abi_arg_out<Windows::Foundation::Rect> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Bounds());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Bounds(abi_arg_in<Windows::Foundation::Rect> value) noexcept override
    {
        try
        {
            this->shim().Bounds(*reinterpret_cast<const Windows::Foundation::Rect *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IRegionOfInterest2> : produce_base<D, Windows::Media::Devices::IRegionOfInterest2>
{
    HRESULT __stdcall get_Type(Windows::Media::Devices::RegionOfInterestType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Type());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Type(Windows::Media::Devices::RegionOfInterestType value) noexcept override
    {
        try
        {
            this->shim().Type(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BoundsNormalized(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BoundsNormalized());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_BoundsNormalized(bool value) noexcept override
    {
        try
        {
            this->shim().BoundsNormalized(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Weight(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Weight());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Weight(uint32_t value) noexcept override
    {
        try
        {
            this->shim().Weight(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IRegionsOfInterestControl> : produce_base<D, Windows::Media::Devices::IRegionsOfInterestControl>
{
    HRESULT __stdcall get_MaxRegions(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxRegions());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetRegionsAsync(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Media::Devices::RegionOfInterest>> regions, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetRegionsAsync(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Media::Devices::RegionOfInterest> *>(&regions)));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetRegionsWithLockAsync(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Media::Devices::RegionOfInterest>> regions, bool lockValues, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetRegionsAsync(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Media::Devices::RegionOfInterest> *>(&regions), lockValues));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ClearRegionsAsync(abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().ClearRegionsAsync());
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AutoFocusSupported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AutoFocusSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AutoWhiteBalanceSupported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AutoWhiteBalanceSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AutoExposureSupported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AutoExposureSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::ISceneModeControl> : produce_base<D, Windows::Media::Devices::ISceneModeControl>
{
    HRESULT __stdcall get_SupportedModes(abi_arg_out<Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::CaptureSceneMode>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportedModes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(Windows::Media::Devices::CaptureSceneMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetValueAsync(Windows::Media::Devices::CaptureSceneMode sceneMode, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetValueAsync(sceneMode));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::ITorchControl> : produce_base<D, Windows::Media::Devices::ITorchControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PowerSupported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PowerSupported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Enabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Enabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Enabled(bool value) noexcept override
    {
        try
        {
            this->shim().Enabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PowerPercent(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PowerPercent());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PowerPercent(float value) noexcept override
    {
        try
        {
            this->shim().PowerPercent(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IVideoDeviceController> : produce_base<D, Windows::Media::Devices::IVideoDeviceController>
{
    HRESULT __stdcall get_Brightness(abi_arg_out<Windows::Media::Devices::IMediaDeviceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Brightness());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Contrast(abi_arg_out<Windows::Media::Devices::IMediaDeviceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Contrast());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Hue(abi_arg_out<Windows::Media::Devices::IMediaDeviceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Hue());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WhiteBalance(abi_arg_out<Windows::Media::Devices::IMediaDeviceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WhiteBalance());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BacklightCompensation(abi_arg_out<Windows::Media::Devices::IMediaDeviceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BacklightCompensation());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Pan(abi_arg_out<Windows::Media::Devices::IMediaDeviceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Pan());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Tilt(abi_arg_out<Windows::Media::Devices::IMediaDeviceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Tilt());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Zoom(abi_arg_out<Windows::Media::Devices::IMediaDeviceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Zoom());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Roll(abi_arg_out<Windows::Media::Devices::IMediaDeviceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Roll());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Exposure(abi_arg_out<Windows::Media::Devices::IMediaDeviceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Exposure());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Focus(abi_arg_out<Windows::Media::Devices::IMediaDeviceControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Focus());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TrySetPowerlineFrequency(Windows::Media::Capture::PowerlineFrequency value, bool * succeeded) noexcept override
    {
        try
        {
            *succeeded = detach(this->shim().TrySetPowerlineFrequency(value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TryGetPowerlineFrequency(Windows::Media::Capture::PowerlineFrequency * value, bool * succeeded) noexcept override
    {
        try
        {
            *succeeded = detach(this->shim().TryGetPowerlineFrequency(*value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IWhiteBalanceControl> : produce_base<D, Windows::Media::Devices::IWhiteBalanceControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Preset(Windows::Media::Devices::ColorTemperaturePreset * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Preset());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetPresetAsync(Windows::Media::Devices::ColorTemperaturePreset preset, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetPresetAsync(preset));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Min(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Min());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Max(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Max());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Step(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Step());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetValueAsync(uint32_t temperature, abi_arg_out<Windows::Foundation::IAsyncAction> asyncInfo) noexcept override
    {
        try
        {
            *asyncInfo = detach(this->shim().SetValueAsync(temperature));
            return S_OK;
        }
        catch (...)
        {
            *asyncInfo = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IZoomControl> : produce_base<D, Windows::Media::Devices::IZoomControl>
{
    HRESULT __stdcall get_Supported(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Supported());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Min(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Min());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Max(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Max());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Step(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Step());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Value(float value) noexcept override
    {
        try
        {
            this->shim().Value(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IZoomControl2> : produce_base<D, Windows::Media::Devices::IZoomControl2>
{
    HRESULT __stdcall get_SupportedModes(abi_arg_out<Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::ZoomTransitionMode>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportedModes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Mode(Windows::Media::Devices::ZoomTransitionMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Configure(abi_arg_in<Windows::Media::Devices::IZoomSettings> settings) noexcept override
    {
        try
        {
            this->shim().Configure(*reinterpret_cast<const Windows::Media::Devices::ZoomSettings *>(&settings));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Devices::IZoomSettings> : produce_base<D, Windows::Media::Devices::IZoomSettings>
{
    HRESULT __stdcall get_Mode(Windows::Media::Devices::ZoomTransitionMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Mode(Windows::Media::Devices::ZoomTransitionMode value) noexcept override
    {
        try
        {
            this->shim().Mode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Value(float value) noexcept override
    {
        try
        {
            this->shim().Value(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Media::Devices {

template <typename D> hstring impl_IDefaultAudioDeviceChangedEventArgs<D>::Id() const
{
    hstring value;
    check_hresult(static_cast<const IDefaultAudioDeviceChangedEventArgs &>(static_cast<const D &>(*this))->get_Id(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::AudioDeviceRole impl_IDefaultAudioDeviceChangedEventArgs<D>::Role() const
{
    Windows::Media::Devices::AudioDeviceRole value {};
    check_hresult(static_cast<const IDefaultAudioDeviceChangedEventArgs &>(static_cast<const D &>(*this))->get_Role(&value));
    return value;
}

template <typename D> hstring impl_IMediaDeviceStatics<D>::GetAudioCaptureSelector() const
{
    hstring selector;
    check_hresult(static_cast<const IMediaDeviceStatics &>(static_cast<const D &>(*this))->abi_GetAudioCaptureSelector(put(selector)));
    return selector;
}

template <typename D> hstring impl_IMediaDeviceStatics<D>::GetAudioRenderSelector() const
{
    hstring selector;
    check_hresult(static_cast<const IMediaDeviceStatics &>(static_cast<const D &>(*this))->abi_GetAudioRenderSelector(put(selector)));
    return selector;
}

template <typename D> hstring impl_IMediaDeviceStatics<D>::GetVideoCaptureSelector() const
{
    hstring selector;
    check_hresult(static_cast<const IMediaDeviceStatics &>(static_cast<const D &>(*this))->abi_GetVideoCaptureSelector(put(selector)));
    return selector;
}

template <typename D> hstring impl_IMediaDeviceStatics<D>::GetDefaultAudioCaptureId(Windows::Media::Devices::AudioDeviceRole role) const
{
    hstring deviceId;
    check_hresult(static_cast<const IMediaDeviceStatics &>(static_cast<const D &>(*this))->abi_GetDefaultAudioCaptureId(role, put(deviceId)));
    return deviceId;
}

template <typename D> hstring impl_IMediaDeviceStatics<D>::GetDefaultAudioRenderId(Windows::Media::Devices::AudioDeviceRole role) const
{
    hstring deviceId;
    check_hresult(static_cast<const IMediaDeviceStatics &>(static_cast<const D &>(*this))->abi_GetDefaultAudioRenderId(role, put(deviceId)));
    return deviceId;
}

template <typename D> event_token impl_IMediaDeviceStatics<D>::DefaultAudioCaptureDeviceChanged(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioCaptureDeviceChangedEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IMediaDeviceStatics &>(static_cast<const D &>(*this))->add_DefaultAudioCaptureDeviceChanged(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IMediaDeviceStatics> impl_IMediaDeviceStatics<D>::DefaultAudioCaptureDeviceChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioCaptureDeviceChangedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IMediaDeviceStatics>(this, &ABI::Windows::Media::Devices::IMediaDeviceStatics::remove_DefaultAudioCaptureDeviceChanged, DefaultAudioCaptureDeviceChanged(handler));
}

template <typename D> void impl_IMediaDeviceStatics<D>::DefaultAudioCaptureDeviceChanged(event_token cookie) const
{
    check_hresult(static_cast<const IMediaDeviceStatics &>(static_cast<const D &>(*this))->remove_DefaultAudioCaptureDeviceChanged(cookie));
}

template <typename D> event_token impl_IMediaDeviceStatics<D>::DefaultAudioRenderDeviceChanged(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioRenderDeviceChangedEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IMediaDeviceStatics &>(static_cast<const D &>(*this))->add_DefaultAudioRenderDeviceChanged(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IMediaDeviceStatics> impl_IMediaDeviceStatics<D>::DefaultAudioRenderDeviceChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioRenderDeviceChangedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IMediaDeviceStatics>(this, &ABI::Windows::Media::Devices::IMediaDeviceStatics::remove_DefaultAudioRenderDeviceChanged, DefaultAudioRenderDeviceChanged(handler));
}

template <typename D> void impl_IMediaDeviceStatics<D>::DefaultAudioRenderDeviceChanged(event_token cookie) const
{
    check_hresult(static_cast<const IMediaDeviceStatics &>(static_cast<const D &>(*this))->remove_DefaultAudioRenderDeviceChanged(cookie));
}

template <typename D> Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::CaptureSceneMode> impl_ISceneModeControl<D>::SupportedModes() const
{
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::CaptureSceneMode> value;
    check_hresult(static_cast<const ISceneModeControl &>(static_cast<const D &>(*this))->get_SupportedModes(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::CaptureSceneMode impl_ISceneModeControl<D>::Value() const
{
    Windows::Media::Devices::CaptureSceneMode value {};
    check_hresult(static_cast<const ISceneModeControl &>(static_cast<const D &>(*this))->get_Value(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_ISceneModeControl<D>::SetValueAsync(Windows::Media::Devices::CaptureSceneMode sceneMode) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const ISceneModeControl &>(static_cast<const D &>(*this))->abi_SetValueAsync(sceneMode, put(asyncInfo)));
    return asyncInfo;
}

template <typename D> bool impl_ITorchControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const ITorchControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> bool impl_ITorchControl<D>::PowerSupported() const
{
    bool value {};
    check_hresult(static_cast<const ITorchControl &>(static_cast<const D &>(*this))->get_PowerSupported(&value));
    return value;
}

template <typename D> bool impl_ITorchControl<D>::Enabled() const
{
    bool value {};
    check_hresult(static_cast<const ITorchControl &>(static_cast<const D &>(*this))->get_Enabled(&value));
    return value;
}

template <typename D> void impl_ITorchControl<D>::Enabled(bool value) const
{
    check_hresult(static_cast<const ITorchControl &>(static_cast<const D &>(*this))->put_Enabled(value));
}

template <typename D> float impl_ITorchControl<D>::PowerPercent() const
{
    float value {};
    check_hresult(static_cast<const ITorchControl &>(static_cast<const D &>(*this))->get_PowerPercent(&value));
    return value;
}

template <typename D> void impl_ITorchControl<D>::PowerPercent(float value) const
{
    check_hresult(static_cast<const ITorchControl &>(static_cast<const D &>(*this))->put_PowerPercent(value));
}

template <typename D> bool impl_IFlashControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IFlashControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> bool impl_IFlashControl<D>::PowerSupported() const
{
    bool value {};
    check_hresult(static_cast<const IFlashControl &>(static_cast<const D &>(*this))->get_PowerSupported(&value));
    return value;
}

template <typename D> bool impl_IFlashControl<D>::RedEyeReductionSupported() const
{
    bool value {};
    check_hresult(static_cast<const IFlashControl &>(static_cast<const D &>(*this))->get_RedEyeReductionSupported(&value));
    return value;
}

template <typename D> bool impl_IFlashControl<D>::Enabled() const
{
    bool value {};
    check_hresult(static_cast<const IFlashControl &>(static_cast<const D &>(*this))->get_Enabled(&value));
    return value;
}

template <typename D> void impl_IFlashControl<D>::Enabled(bool value) const
{
    check_hresult(static_cast<const IFlashControl &>(static_cast<const D &>(*this))->put_Enabled(value));
}

template <typename D> bool impl_IFlashControl<D>::Auto() const
{
    bool value {};
    check_hresult(static_cast<const IFlashControl &>(static_cast<const D &>(*this))->get_Auto(&value));
    return value;
}

template <typename D> void impl_IFlashControl<D>::Auto(bool value) const
{
    check_hresult(static_cast<const IFlashControl &>(static_cast<const D &>(*this))->put_Auto(value));
}

template <typename D> bool impl_IFlashControl<D>::RedEyeReduction() const
{
    bool value {};
    check_hresult(static_cast<const IFlashControl &>(static_cast<const D &>(*this))->get_RedEyeReduction(&value));
    return value;
}

template <typename D> void impl_IFlashControl<D>::RedEyeReduction(bool value) const
{
    check_hresult(static_cast<const IFlashControl &>(static_cast<const D &>(*this))->put_RedEyeReduction(value));
}

template <typename D> float impl_IFlashControl<D>::PowerPercent() const
{
    float value {};
    check_hresult(static_cast<const IFlashControl &>(static_cast<const D &>(*this))->get_PowerPercent(&value));
    return value;
}

template <typename D> void impl_IFlashControl<D>::PowerPercent(float value) const
{
    check_hresult(static_cast<const IFlashControl &>(static_cast<const D &>(*this))->put_PowerPercent(value));
}

template <typename D> bool impl_IFlashControl2<D>::AssistantLightSupported() const
{
    bool value {};
    check_hresult(static_cast<const IFlashControl2 &>(static_cast<const D &>(*this))->get_AssistantLightSupported(&value));
    return value;
}

template <typename D> bool impl_IFlashControl2<D>::AssistantLightEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IFlashControl2 &>(static_cast<const D &>(*this))->get_AssistantLightEnabled(&value));
    return value;
}

template <typename D> void impl_IFlashControl2<D>::AssistantLightEnabled(bool value) const
{
    check_hresult(static_cast<const IFlashControl2 &>(static_cast<const D &>(*this))->put_AssistantLightEnabled(value));
}

template <typename D> bool impl_IExposureCompensationControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IExposureCompensationControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> float impl_IExposureCompensationControl<D>::Min() const
{
    float value {};
    check_hresult(static_cast<const IExposureCompensationControl &>(static_cast<const D &>(*this))->get_Min(&value));
    return value;
}

template <typename D> float impl_IExposureCompensationControl<D>::Max() const
{
    float value {};
    check_hresult(static_cast<const IExposureCompensationControl &>(static_cast<const D &>(*this))->get_Max(&value));
    return value;
}

template <typename D> float impl_IExposureCompensationControl<D>::Step() const
{
    float value {};
    check_hresult(static_cast<const IExposureCompensationControl &>(static_cast<const D &>(*this))->get_Step(&value));
    return value;
}

template <typename D> float impl_IExposureCompensationControl<D>::Value() const
{
    float value {};
    check_hresult(static_cast<const IExposureCompensationControl &>(static_cast<const D &>(*this))->get_Value(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IExposureCompensationControl<D>::SetValueAsync(float value) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IExposureCompensationControl &>(static_cast<const D &>(*this))->abi_SetValueAsync(value, put(asyncInfo)));
    return asyncInfo;
}

template <typename D> bool impl_IIsoSpeedControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IIsoSpeedControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::IsoSpeedPreset> impl_IIsoSpeedControl<D>::SupportedPresets() const
{
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::IsoSpeedPreset> value;
    check_hresult(static_cast<const IIsoSpeedControl &>(static_cast<const D &>(*this))->get_SupportedPresets(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::IsoSpeedPreset impl_IIsoSpeedControl<D>::Preset() const
{
    Windows::Media::Devices::IsoSpeedPreset value {};
    check_hresult(static_cast<const IIsoSpeedControl &>(static_cast<const D &>(*this))->get_Preset(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IIsoSpeedControl<D>::SetPresetAsync(Windows::Media::Devices::IsoSpeedPreset preset) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IIsoSpeedControl &>(static_cast<const D &>(*this))->abi_SetPresetAsync(preset, put(asyncInfo)));
    return asyncInfo;
}

template <typename D> uint32_t impl_IIsoSpeedControl2<D>::Min() const
{
    uint32_t value {};
    check_hresult(static_cast<const IIsoSpeedControl2 &>(static_cast<const D &>(*this))->get_Min(&value));
    return value;
}

template <typename D> uint32_t impl_IIsoSpeedControl2<D>::Max() const
{
    uint32_t value {};
    check_hresult(static_cast<const IIsoSpeedControl2 &>(static_cast<const D &>(*this))->get_Max(&value));
    return value;
}

template <typename D> uint32_t impl_IIsoSpeedControl2<D>::Step() const
{
    uint32_t value {};
    check_hresult(static_cast<const IIsoSpeedControl2 &>(static_cast<const D &>(*this))->get_Step(&value));
    return value;
}

template <typename D> uint32_t impl_IIsoSpeedControl2<D>::Value() const
{
    uint32_t value {};
    check_hresult(static_cast<const IIsoSpeedControl2 &>(static_cast<const D &>(*this))->get_Value(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IIsoSpeedControl2<D>::SetValueAsync(uint32_t isoSpeed) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IIsoSpeedControl2 &>(static_cast<const D &>(*this))->abi_SetValueAsync(isoSpeed, put(asyncInfo)));
    return asyncInfo;
}

template <typename D> bool impl_IIsoSpeedControl2<D>::Auto() const
{
    bool value {};
    check_hresult(static_cast<const IIsoSpeedControl2 &>(static_cast<const D &>(*this))->get_Auto(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IIsoSpeedControl2<D>::SetAutoAsync() const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IIsoSpeedControl2 &>(static_cast<const D &>(*this))->abi_SetAutoAsync(put(asyncInfo)));
    return asyncInfo;
}

template <typename D> bool impl_IWhiteBalanceControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IWhiteBalanceControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> Windows::Media::Devices::ColorTemperaturePreset impl_IWhiteBalanceControl<D>::Preset() const
{
    Windows::Media::Devices::ColorTemperaturePreset value {};
    check_hresult(static_cast<const IWhiteBalanceControl &>(static_cast<const D &>(*this))->get_Preset(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IWhiteBalanceControl<D>::SetPresetAsync(Windows::Media::Devices::ColorTemperaturePreset preset) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IWhiteBalanceControl &>(static_cast<const D &>(*this))->abi_SetPresetAsync(preset, put(asyncInfo)));
    return asyncInfo;
}

template <typename D> uint32_t impl_IWhiteBalanceControl<D>::Min() const
{
    uint32_t value {};
    check_hresult(static_cast<const IWhiteBalanceControl &>(static_cast<const D &>(*this))->get_Min(&value));
    return value;
}

template <typename D> uint32_t impl_IWhiteBalanceControl<D>::Max() const
{
    uint32_t value {};
    check_hresult(static_cast<const IWhiteBalanceControl &>(static_cast<const D &>(*this))->get_Max(&value));
    return value;
}

template <typename D> uint32_t impl_IWhiteBalanceControl<D>::Step() const
{
    uint32_t value {};
    check_hresult(static_cast<const IWhiteBalanceControl &>(static_cast<const D &>(*this))->get_Step(&value));
    return value;
}

template <typename D> uint32_t impl_IWhiteBalanceControl<D>::Value() const
{
    uint32_t value {};
    check_hresult(static_cast<const IWhiteBalanceControl &>(static_cast<const D &>(*this))->get_Value(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IWhiteBalanceControl<D>::SetValueAsync(uint32_t temperature) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IWhiteBalanceControl &>(static_cast<const D &>(*this))->abi_SetValueAsync(temperature, put(asyncInfo)));
    return asyncInfo;
}

template <typename D> bool impl_IExposureControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IExposureControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> bool impl_IExposureControl<D>::Auto() const
{
    bool value {};
    check_hresult(static_cast<const IExposureControl &>(static_cast<const D &>(*this))->get_Auto(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IExposureControl<D>::SetAutoAsync(bool value) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IExposureControl &>(static_cast<const D &>(*this))->abi_SetAutoAsync(value, put(asyncInfo)));
    return asyncInfo;
}

template <typename D> Windows::Foundation::TimeSpan impl_IExposureControl<D>::Min() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IExposureControl &>(static_cast<const D &>(*this))->get_Min(put(value)));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_IExposureControl<D>::Max() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IExposureControl &>(static_cast<const D &>(*this))->get_Max(put(value)));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_IExposureControl<D>::Step() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IExposureControl &>(static_cast<const D &>(*this))->get_Step(put(value)));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_IExposureControl<D>::Value() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IExposureControl &>(static_cast<const D &>(*this))->get_Value(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IExposureControl<D>::SetValueAsync(const Windows::Foundation::TimeSpan & shutterDuration) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IExposureControl &>(static_cast<const D &>(*this))->abi_SetValueAsync(get(shutterDuration), put(asyncInfo)));
    return asyncInfo;
}

template <typename D> Windows::Media::Devices::ZoomTransitionMode impl_IZoomSettings<D>::Mode() const
{
    Windows::Media::Devices::ZoomTransitionMode value {};
    check_hresult(static_cast<const IZoomSettings &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> void impl_IZoomSettings<D>::Mode(Windows::Media::Devices::ZoomTransitionMode value) const
{
    check_hresult(static_cast<const IZoomSettings &>(static_cast<const D &>(*this))->put_Mode(value));
}

template <typename D> float impl_IZoomSettings<D>::Value() const
{
    float value {};
    check_hresult(static_cast<const IZoomSettings &>(static_cast<const D &>(*this))->get_Value(&value));
    return value;
}

template <typename D> void impl_IZoomSettings<D>::Value(float value) const
{
    check_hresult(static_cast<const IZoomSettings &>(static_cast<const D &>(*this))->put_Value(value));
}

template <typename D> bool impl_IZoomControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IZoomControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> float impl_IZoomControl<D>::Min() const
{
    float value {};
    check_hresult(static_cast<const IZoomControl &>(static_cast<const D &>(*this))->get_Min(&value));
    return value;
}

template <typename D> float impl_IZoomControl<D>::Max() const
{
    float value {};
    check_hresult(static_cast<const IZoomControl &>(static_cast<const D &>(*this))->get_Max(&value));
    return value;
}

template <typename D> float impl_IZoomControl<D>::Step() const
{
    float value {};
    check_hresult(static_cast<const IZoomControl &>(static_cast<const D &>(*this))->get_Step(&value));
    return value;
}

template <typename D> float impl_IZoomControl<D>::Value() const
{
    float value {};
    check_hresult(static_cast<const IZoomControl &>(static_cast<const D &>(*this))->get_Value(&value));
    return value;
}

template <typename D> void impl_IZoomControl<D>::Value(float value) const
{
    check_hresult(static_cast<const IZoomControl &>(static_cast<const D &>(*this))->put_Value(value));
}

template <typename D> Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::ZoomTransitionMode> impl_IZoomControl2<D>::SupportedModes() const
{
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::ZoomTransitionMode> value;
    check_hresult(static_cast<const IZoomControl2 &>(static_cast<const D &>(*this))->get_SupportedModes(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::ZoomTransitionMode impl_IZoomControl2<D>::Mode() const
{
    Windows::Media::Devices::ZoomTransitionMode value {};
    check_hresult(static_cast<const IZoomControl2 &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> void impl_IZoomControl2<D>::Configure(const Windows::Media::Devices::ZoomSettings & settings) const
{
    check_hresult(static_cast<const IZoomControl2 &>(static_cast<const D &>(*this))->abi_Configure(get(settings)));
}

template <typename D> Windows::Media::Devices::FocusMode impl_IFocusSettings<D>::Mode() const
{
    Windows::Media::Devices::FocusMode value {};
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> void impl_IFocusSettings<D>::Mode(Windows::Media::Devices::FocusMode value) const
{
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->put_Mode(value));
}

template <typename D> Windows::Media::Devices::AutoFocusRange impl_IFocusSettings<D>::AutoFocusRange() const
{
    Windows::Media::Devices::AutoFocusRange value {};
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->get_AutoFocusRange(&value));
    return value;
}

template <typename D> void impl_IFocusSettings<D>::AutoFocusRange(Windows::Media::Devices::AutoFocusRange value) const
{
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->put_AutoFocusRange(value));
}

template <typename D> Windows::Foundation::IReference<uint32_t> impl_IFocusSettings<D>::Value() const
{
    Windows::Foundation::IReference<uint32_t> value;
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->get_Value(put(value)));
    return value;
}

template <typename D> void impl_IFocusSettings<D>::Value(const Windows::Foundation::IReference<uint32_t> & value) const
{
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->put_Value(get(value)));
}

template <typename D> Windows::Foundation::IReference<winrt::Windows::Media::Devices::ManualFocusDistance> impl_IFocusSettings<D>::Distance() const
{
    Windows::Foundation::IReference<winrt::Windows::Media::Devices::ManualFocusDistance> value;
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->get_Distance(put(value)));
    return value;
}

template <typename D> void impl_IFocusSettings<D>::Distance(const Windows::Foundation::IReference<winrt::Windows::Media::Devices::ManualFocusDistance> & value) const
{
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->put_Distance(get(value)));
}

template <typename D> bool impl_IFocusSettings<D>::WaitForFocus() const
{
    bool value {};
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->get_WaitForFocus(&value));
    return value;
}

template <typename D> void impl_IFocusSettings<D>::WaitForFocus(bool value) const
{
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->put_WaitForFocus(value));
}

template <typename D> bool impl_IFocusSettings<D>::DisableDriverFallback() const
{
    bool value {};
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->get_DisableDriverFallback(&value));
    return value;
}

template <typename D> void impl_IFocusSettings<D>::DisableDriverFallback(bool value) const
{
    check_hresult(static_cast<const IFocusSettings &>(static_cast<const D &>(*this))->put_DisableDriverFallback(value));
}

template <typename D> bool impl_IFocusControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IFocusControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::FocusPreset> impl_IFocusControl<D>::SupportedPresets() const
{
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::FocusPreset> value;
    check_hresult(static_cast<const IFocusControl &>(static_cast<const D &>(*this))->get_SupportedPresets(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::FocusPreset impl_IFocusControl<D>::Preset() const
{
    Windows::Media::Devices::FocusPreset value {};
    check_hresult(static_cast<const IFocusControl &>(static_cast<const D &>(*this))->get_Preset(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFocusControl<D>::SetPresetAsync(Windows::Media::Devices::FocusPreset preset) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IFocusControl &>(static_cast<const D &>(*this))->abi_SetPresetAsync(preset, put(asyncInfo)));
    return asyncInfo;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFocusControl<D>::SetPresetAsync(Windows::Media::Devices::FocusPreset preset, bool completeBeforeFocus) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IFocusControl &>(static_cast<const D &>(*this))->abi_SetPresetWithCompletionOptionAsync(preset, completeBeforeFocus, put(asyncInfo)));
    return asyncInfo;
}

template <typename D> uint32_t impl_IFocusControl<D>::Min() const
{
    uint32_t value {};
    check_hresult(static_cast<const IFocusControl &>(static_cast<const D &>(*this))->get_Min(&value));
    return value;
}

template <typename D> uint32_t impl_IFocusControl<D>::Max() const
{
    uint32_t value {};
    check_hresult(static_cast<const IFocusControl &>(static_cast<const D &>(*this))->get_Max(&value));
    return value;
}

template <typename D> uint32_t impl_IFocusControl<D>::Step() const
{
    uint32_t value {};
    check_hresult(static_cast<const IFocusControl &>(static_cast<const D &>(*this))->get_Step(&value));
    return value;
}

template <typename D> uint32_t impl_IFocusControl<D>::Value() const
{
    uint32_t value {};
    check_hresult(static_cast<const IFocusControl &>(static_cast<const D &>(*this))->get_Value(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFocusControl<D>::SetValueAsync(uint32_t focus) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IFocusControl &>(static_cast<const D &>(*this))->abi_SetValueAsync(focus, put(asyncInfo)));
    return asyncInfo;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFocusControl<D>::FocusAsync() const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IFocusControl &>(static_cast<const D &>(*this))->abi_FocusAsync(put(asyncInfo)));
    return asyncInfo;
}

template <typename D> bool impl_IFocusControl2<D>::FocusChangedSupported() const
{
    bool value {};
    check_hresult(static_cast<const IFocusControl2 &>(static_cast<const D &>(*this))->get_FocusChangedSupported(&value));
    return value;
}

template <typename D> bool impl_IFocusControl2<D>::WaitForFocusSupported() const
{
    bool value {};
    check_hresult(static_cast<const IFocusControl2 &>(static_cast<const D &>(*this))->get_WaitForFocusSupported(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::FocusMode> impl_IFocusControl2<D>::SupportedFocusModes() const
{
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::FocusMode> value;
    check_hresult(static_cast<const IFocusControl2 &>(static_cast<const D &>(*this))->get_SupportedFocusModes(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::ManualFocusDistance> impl_IFocusControl2<D>::SupportedFocusDistances() const
{
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::ManualFocusDistance> value;
    check_hresult(static_cast<const IFocusControl2 &>(static_cast<const D &>(*this))->get_SupportedFocusDistances(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::AutoFocusRange> impl_IFocusControl2<D>::SupportedFocusRanges() const
{
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::AutoFocusRange> value;
    check_hresult(static_cast<const IFocusControl2 &>(static_cast<const D &>(*this))->get_SupportedFocusRanges(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::FocusMode impl_IFocusControl2<D>::Mode() const
{
    Windows::Media::Devices::FocusMode value {};
    check_hresult(static_cast<const IFocusControl2 &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> Windows::Media::Devices::MediaCaptureFocusState impl_IFocusControl2<D>::FocusState() const
{
    Windows::Media::Devices::MediaCaptureFocusState value {};
    check_hresult(static_cast<const IFocusControl2 &>(static_cast<const D &>(*this))->get_FocusState(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFocusControl2<D>::UnlockAsync() const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IFocusControl2 &>(static_cast<const D &>(*this))->abi_UnlockAsync(put(asyncInfo)));
    return asyncInfo;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFocusControl2<D>::LockAsync() const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IFocusControl2 &>(static_cast<const D &>(*this))->abi_LockAsync(put(asyncInfo)));
    return asyncInfo;
}

template <typename D> void impl_IFocusControl2<D>::Configure(const Windows::Media::Devices::FocusSettings & settings) const
{
    check_hresult(static_cast<const IFocusControl2 &>(static_cast<const D &>(*this))->abi_Configure(get(settings)));
}

template <typename D> bool impl_IRegionOfInterest<D>::AutoFocusEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IRegionOfInterest &>(static_cast<const D &>(*this))->get_AutoFocusEnabled(&value));
    return value;
}

template <typename D> void impl_IRegionOfInterest<D>::AutoFocusEnabled(bool value) const
{
    check_hresult(static_cast<const IRegionOfInterest &>(static_cast<const D &>(*this))->put_AutoFocusEnabled(value));
}

template <typename D> bool impl_IRegionOfInterest<D>::AutoWhiteBalanceEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IRegionOfInterest &>(static_cast<const D &>(*this))->get_AutoWhiteBalanceEnabled(&value));
    return value;
}

template <typename D> void impl_IRegionOfInterest<D>::AutoWhiteBalanceEnabled(bool value) const
{
    check_hresult(static_cast<const IRegionOfInterest &>(static_cast<const D &>(*this))->put_AutoWhiteBalanceEnabled(value));
}

template <typename D> bool impl_IRegionOfInterest<D>::AutoExposureEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IRegionOfInterest &>(static_cast<const D &>(*this))->get_AutoExposureEnabled(&value));
    return value;
}

template <typename D> void impl_IRegionOfInterest<D>::AutoExposureEnabled(bool value) const
{
    check_hresult(static_cast<const IRegionOfInterest &>(static_cast<const D &>(*this))->put_AutoExposureEnabled(value));
}

template <typename D> Windows::Foundation::Rect impl_IRegionOfInterest<D>::Bounds() const
{
    Windows::Foundation::Rect value {};
    check_hresult(static_cast<const IRegionOfInterest &>(static_cast<const D &>(*this))->get_Bounds(put(value)));
    return value;
}

template <typename D> void impl_IRegionOfInterest<D>::Bounds(const Windows::Foundation::Rect & value) const
{
    check_hresult(static_cast<const IRegionOfInterest &>(static_cast<const D &>(*this))->put_Bounds(get(value)));
}

template <typename D> Windows::Media::Devices::RegionOfInterestType impl_IRegionOfInterest2<D>::Type() const
{
    Windows::Media::Devices::RegionOfInterestType value {};
    check_hresult(static_cast<const IRegionOfInterest2 &>(static_cast<const D &>(*this))->get_Type(&value));
    return value;
}

template <typename D> void impl_IRegionOfInterest2<D>::Type(Windows::Media::Devices::RegionOfInterestType value) const
{
    check_hresult(static_cast<const IRegionOfInterest2 &>(static_cast<const D &>(*this))->put_Type(value));
}

template <typename D> bool impl_IRegionOfInterest2<D>::BoundsNormalized() const
{
    bool value {};
    check_hresult(static_cast<const IRegionOfInterest2 &>(static_cast<const D &>(*this))->get_BoundsNormalized(&value));
    return value;
}

template <typename D> void impl_IRegionOfInterest2<D>::BoundsNormalized(bool value) const
{
    check_hresult(static_cast<const IRegionOfInterest2 &>(static_cast<const D &>(*this))->put_BoundsNormalized(value));
}

template <typename D> uint32_t impl_IRegionOfInterest2<D>::Weight() const
{
    uint32_t value {};
    check_hresult(static_cast<const IRegionOfInterest2 &>(static_cast<const D &>(*this))->get_Weight(&value));
    return value;
}

template <typename D> void impl_IRegionOfInterest2<D>::Weight(uint32_t value) const
{
    check_hresult(static_cast<const IRegionOfInterest2 &>(static_cast<const D &>(*this))->put_Weight(value));
}

template <typename D> uint32_t impl_IRegionsOfInterestControl<D>::MaxRegions() const
{
    uint32_t value {};
    check_hresult(static_cast<const IRegionsOfInterestControl &>(static_cast<const D &>(*this))->get_MaxRegions(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IRegionsOfInterestControl<D>::SetRegionsAsync(const Windows::Foundation::Collections::IIterable<Windows::Media::Devices::RegionOfInterest> & regions) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IRegionsOfInterestControl &>(static_cast<const D &>(*this))->abi_SetRegionsAsync(get(regions), put(asyncInfo)));
    return asyncInfo;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IRegionsOfInterestControl<D>::SetRegionsAsync(const Windows::Foundation::Collections::IIterable<Windows::Media::Devices::RegionOfInterest> & regions, bool lockValues) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IRegionsOfInterestControl &>(static_cast<const D &>(*this))->abi_SetRegionsWithLockAsync(get(regions), lockValues, put(asyncInfo)));
    return asyncInfo;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IRegionsOfInterestControl<D>::ClearRegionsAsync() const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IRegionsOfInterestControl &>(static_cast<const D &>(*this))->abi_ClearRegionsAsync(put(asyncInfo)));
    return asyncInfo;
}

template <typename D> bool impl_IRegionsOfInterestControl<D>::AutoFocusSupported() const
{
    bool value {};
    check_hresult(static_cast<const IRegionsOfInterestControl &>(static_cast<const D &>(*this))->get_AutoFocusSupported(&value));
    return value;
}

template <typename D> bool impl_IRegionsOfInterestControl<D>::AutoWhiteBalanceSupported() const
{
    bool value {};
    check_hresult(static_cast<const IRegionsOfInterestControl &>(static_cast<const D &>(*this))->get_AutoWhiteBalanceSupported(&value));
    return value;
}

template <typename D> bool impl_IRegionsOfInterestControl<D>::AutoExposureSupported() const
{
    bool value {};
    check_hresult(static_cast<const IRegionsOfInterestControl &>(static_cast<const D &>(*this))->get_AutoExposureSupported(&value));
    return value;
}

template <typename D> bool impl_IExposurePriorityVideoControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IExposurePriorityVideoControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> bool impl_IExposurePriorityVideoControl<D>::Enabled() const
{
    bool value {};
    check_hresult(static_cast<const IExposurePriorityVideoControl &>(static_cast<const D &>(*this))->get_Enabled(&value));
    return value;
}

template <typename D> void impl_IExposurePriorityVideoControl<D>::Enabled(bool value) const
{
    check_hresult(static_cast<const IExposurePriorityVideoControl &>(static_cast<const D &>(*this))->put_Enabled(value));
}

template <typename D> bool impl_IHdrVideoControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IHdrVideoControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::HdrVideoMode> impl_IHdrVideoControl<D>::SupportedModes() const
{
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::HdrVideoMode> value;
    check_hresult(static_cast<const IHdrVideoControl &>(static_cast<const D &>(*this))->get_SupportedModes(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::HdrVideoMode impl_IHdrVideoControl<D>::Mode() const
{
    Windows::Media::Devices::HdrVideoMode value {};
    check_hresult(static_cast<const IHdrVideoControl &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> void impl_IHdrVideoControl<D>::Mode(Windows::Media::Devices::HdrVideoMode value) const
{
    check_hresult(static_cast<const IHdrVideoControl &>(static_cast<const D &>(*this))->put_Mode(value));
}

template <typename D> Windows::Media::Devices::AdvancedPhotoMode impl_IAdvancedPhotoCaptureSettings<D>::Mode() const
{
    Windows::Media::Devices::AdvancedPhotoMode value {};
    check_hresult(static_cast<const IAdvancedPhotoCaptureSettings &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> void impl_IAdvancedPhotoCaptureSettings<D>::Mode(Windows::Media::Devices::AdvancedPhotoMode value) const
{
    check_hresult(static_cast<const IAdvancedPhotoCaptureSettings &>(static_cast<const D &>(*this))->put_Mode(value));
}

template <typename D> bool impl_IAdvancedPhotoControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IAdvancedPhotoControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::AdvancedPhotoMode> impl_IAdvancedPhotoControl<D>::SupportedModes() const
{
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::AdvancedPhotoMode> value;
    check_hresult(static_cast<const IAdvancedPhotoControl &>(static_cast<const D &>(*this))->get_SupportedModes(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::AdvancedPhotoMode impl_IAdvancedPhotoControl<D>::Mode() const
{
    Windows::Media::Devices::AdvancedPhotoMode value {};
    check_hresult(static_cast<const IAdvancedPhotoControl &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> void impl_IAdvancedPhotoControl<D>::Configure(const Windows::Media::Devices::AdvancedPhotoCaptureSettings & settings) const
{
    check_hresult(static_cast<const IAdvancedPhotoControl &>(static_cast<const D &>(*this))->abi_Configure(get(settings)));
}

template <typename D> bool impl_IOpticalImageStabilizationControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IOpticalImageStabilizationControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::OpticalImageStabilizationMode> impl_IOpticalImageStabilizationControl<D>::SupportedModes() const
{
    Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::OpticalImageStabilizationMode> value;
    check_hresult(static_cast<const IOpticalImageStabilizationControl &>(static_cast<const D &>(*this))->get_SupportedModes(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::OpticalImageStabilizationMode impl_IOpticalImageStabilizationControl<D>::Mode() const
{
    Windows::Media::Devices::OpticalImageStabilizationMode value {};
    check_hresult(static_cast<const IOpticalImageStabilizationControl &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> void impl_IOpticalImageStabilizationControl<D>::Mode(Windows::Media::Devices::OpticalImageStabilizationMode value) const
{
    check_hresult(static_cast<const IOpticalImageStabilizationControl &>(static_cast<const D &>(*this))->put_Mode(value));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Media::MediaProperties::IMediaEncodingProperties> impl_IMediaDeviceController<D>::GetAvailableMediaStreamProperties(Windows::Media::Capture::MediaStreamType mediaStreamType) const
{
    Windows::Foundation::Collections::IVectorView<Windows::Media::MediaProperties::IMediaEncodingProperties> value;
    check_hresult(static_cast<const IMediaDeviceController &>(static_cast<const D &>(*this))->abi_GetAvailableMediaStreamProperties(mediaStreamType, put(value)));
    return value;
}

template <typename D> Windows::Media::MediaProperties::IMediaEncodingProperties impl_IMediaDeviceController<D>::GetMediaStreamProperties(Windows::Media::Capture::MediaStreamType mediaStreamType) const
{
    Windows::Media::MediaProperties::IMediaEncodingProperties value;
    check_hresult(static_cast<const IMediaDeviceController &>(static_cast<const D &>(*this))->abi_GetMediaStreamProperties(mediaStreamType, put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IMediaDeviceController<D>::SetMediaStreamPropertiesAsync(Windows::Media::Capture::MediaStreamType mediaStreamType, const Windows::Media::MediaProperties::IMediaEncodingProperties & mediaEncodingProperties) const
{
    Windows::Foundation::IAsyncAction asyncInfo;
    check_hresult(static_cast<const IMediaDeviceController &>(static_cast<const D &>(*this))->abi_SetMediaStreamPropertiesAsync(mediaStreamType, get(mediaEncodingProperties), put(asyncInfo)));
    return asyncInfo;
}

template <typename D> void impl_IAudioDeviceController<D>::Muted(bool value) const
{
    check_hresult(static_cast<const IAudioDeviceController &>(static_cast<const D &>(*this))->put_Muted(value));
}

template <typename D> bool impl_IAudioDeviceController<D>::Muted() const
{
    bool value {};
    check_hresult(static_cast<const IAudioDeviceController &>(static_cast<const D &>(*this))->get_Muted(&value));
    return value;
}

template <typename D> void impl_IAudioDeviceController<D>::VolumePercent(float value) const
{
    check_hresult(static_cast<const IAudioDeviceController &>(static_cast<const D &>(*this))->put_VolumePercent(value));
}

template <typename D> float impl_IAudioDeviceController<D>::VolumePercent() const
{
    float value {};
    check_hresult(static_cast<const IAudioDeviceController &>(static_cast<const D &>(*this))->get_VolumePercent(&value));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControl impl_IVideoDeviceController<D>::Brightness() const
{
    Windows::Media::Devices::MediaDeviceControl value { nullptr };
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->get_Brightness(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControl impl_IVideoDeviceController<D>::Contrast() const
{
    Windows::Media::Devices::MediaDeviceControl value { nullptr };
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->get_Contrast(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControl impl_IVideoDeviceController<D>::Hue() const
{
    Windows::Media::Devices::MediaDeviceControl value { nullptr };
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->get_Hue(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControl impl_IVideoDeviceController<D>::WhiteBalance() const
{
    Windows::Media::Devices::MediaDeviceControl value { nullptr };
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->get_WhiteBalance(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControl impl_IVideoDeviceController<D>::BacklightCompensation() const
{
    Windows::Media::Devices::MediaDeviceControl value { nullptr };
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->get_BacklightCompensation(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControl impl_IVideoDeviceController<D>::Pan() const
{
    Windows::Media::Devices::MediaDeviceControl value { nullptr };
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->get_Pan(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControl impl_IVideoDeviceController<D>::Tilt() const
{
    Windows::Media::Devices::MediaDeviceControl value { nullptr };
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->get_Tilt(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControl impl_IVideoDeviceController<D>::Zoom() const
{
    Windows::Media::Devices::MediaDeviceControl value { nullptr };
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->get_Zoom(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControl impl_IVideoDeviceController<D>::Roll() const
{
    Windows::Media::Devices::MediaDeviceControl value { nullptr };
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->get_Roll(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControl impl_IVideoDeviceController<D>::Exposure() const
{
    Windows::Media::Devices::MediaDeviceControl value { nullptr };
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->get_Exposure(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControl impl_IVideoDeviceController<D>::Focus() const
{
    Windows::Media::Devices::MediaDeviceControl value { nullptr };
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->get_Focus(put(value)));
    return value;
}

template <typename D> bool impl_IVideoDeviceController<D>::TrySetPowerlineFrequency(Windows::Media::Capture::PowerlineFrequency value) const
{
    bool succeeded {};
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->abi_TrySetPowerlineFrequency(value, &succeeded));
    return succeeded;
}

template <typename D> bool impl_IVideoDeviceController<D>::TryGetPowerlineFrequency(Windows::Media::Capture::PowerlineFrequency & value) const
{
    bool succeeded {};
    check_hresult(static_cast<const IVideoDeviceController &>(static_cast<const D &>(*this))->abi_TryGetPowerlineFrequency(&value, &succeeded));
    return succeeded;
}

template <typename D> Windows::Media::Devices::LowLagPhotoSequenceControl impl_IAdvancedVideoCaptureDeviceController2<D>::LowLagPhotoSequence() const
{
    Windows::Media::Devices::LowLagPhotoSequenceControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_LowLagPhotoSequence(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::LowLagPhotoControl impl_IAdvancedVideoCaptureDeviceController2<D>::LowLagPhoto() const
{
    Windows::Media::Devices::LowLagPhotoControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_LowLagPhoto(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::SceneModeControl impl_IAdvancedVideoCaptureDeviceController2<D>::SceneModeControl() const
{
    Windows::Media::Devices::SceneModeControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_SceneModeControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::TorchControl impl_IAdvancedVideoCaptureDeviceController2<D>::TorchControl() const
{
    Windows::Media::Devices::TorchControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_TorchControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::FlashControl impl_IAdvancedVideoCaptureDeviceController2<D>::FlashControl() const
{
    Windows::Media::Devices::FlashControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_FlashControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::WhiteBalanceControl impl_IAdvancedVideoCaptureDeviceController2<D>::WhiteBalanceControl() const
{
    Windows::Media::Devices::WhiteBalanceControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_WhiteBalanceControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::ExposureControl impl_IAdvancedVideoCaptureDeviceController2<D>::ExposureControl() const
{
    Windows::Media::Devices::ExposureControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_ExposureControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::FocusControl impl_IAdvancedVideoCaptureDeviceController2<D>::FocusControl() const
{
    Windows::Media::Devices::FocusControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_FocusControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::ExposureCompensationControl impl_IAdvancedVideoCaptureDeviceController2<D>::ExposureCompensationControl() const
{
    Windows::Media::Devices::ExposureCompensationControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_ExposureCompensationControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::IsoSpeedControl impl_IAdvancedVideoCaptureDeviceController2<D>::IsoSpeedControl() const
{
    Windows::Media::Devices::IsoSpeedControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_IsoSpeedControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::RegionsOfInterestControl impl_IAdvancedVideoCaptureDeviceController2<D>::RegionsOfInterestControl() const
{
    Windows::Media::Devices::RegionsOfInterestControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_RegionsOfInterestControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::CaptureUse impl_IAdvancedVideoCaptureDeviceController2<D>::PrimaryUse() const
{
    Windows::Media::Devices::CaptureUse value {};
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->get_PrimaryUse(&value));
    return value;
}

template <typename D> void impl_IAdvancedVideoCaptureDeviceController2<D>::PrimaryUse(Windows::Media::Devices::CaptureUse value) const
{
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController2 &>(static_cast<const D &>(*this))->put_PrimaryUse(value));
}

template <typename D> Windows::Media::Devices::Core::VariablePhotoSequenceController impl_IAdvancedVideoCaptureDeviceController3<D>::VariablePhotoSequenceController() const
{
    Windows::Media::Devices::Core::VariablePhotoSequenceController value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController3 &>(static_cast<const D &>(*this))->get_VariablePhotoSequenceController(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::PhotoConfirmationControl impl_IAdvancedVideoCaptureDeviceController3<D>::PhotoConfirmationControl() const
{
    Windows::Media::Devices::PhotoConfirmationControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController3 &>(static_cast<const D &>(*this))->get_PhotoConfirmationControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::ZoomControl impl_IAdvancedVideoCaptureDeviceController3<D>::ZoomControl() const
{
    Windows::Media::Devices::ZoomControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController3 &>(static_cast<const D &>(*this))->get_ZoomControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::ExposurePriorityVideoControl impl_IAdvancedVideoCaptureDeviceController4<D>::ExposurePriorityVideoControl() const
{
    Windows::Media::Devices::ExposurePriorityVideoControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController4 &>(static_cast<const D &>(*this))->get_ExposurePriorityVideoControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaCaptureOptimization impl_IAdvancedVideoCaptureDeviceController4<D>::DesiredOptimization() const
{
    Windows::Media::Devices::MediaCaptureOptimization value {};
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController4 &>(static_cast<const D &>(*this))->get_DesiredOptimization(&value));
    return value;
}

template <typename D> void impl_IAdvancedVideoCaptureDeviceController4<D>::DesiredOptimization(Windows::Media::Devices::MediaCaptureOptimization value) const
{
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController4 &>(static_cast<const D &>(*this))->put_DesiredOptimization(value));
}

template <typename D> Windows::Media::Devices::HdrVideoControl impl_IAdvancedVideoCaptureDeviceController4<D>::HdrVideoControl() const
{
    Windows::Media::Devices::HdrVideoControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController4 &>(static_cast<const D &>(*this))->get_HdrVideoControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::OpticalImageStabilizationControl impl_IAdvancedVideoCaptureDeviceController4<D>::OpticalImageStabilizationControl() const
{
    Windows::Media::Devices::OpticalImageStabilizationControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController4 &>(static_cast<const D &>(*this))->get_OpticalImageStabilizationControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::AdvancedPhotoControl impl_IAdvancedVideoCaptureDeviceController4<D>::AdvancedPhotoControl() const
{
    Windows::Media::Devices::AdvancedPhotoControl value { nullptr };
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController4 &>(static_cast<const D &>(*this))->get_AdvancedPhotoControl(put(value)));
    return value;
}

template <typename D> Windows::Media::Devices::MediaDeviceControlCapabilities impl_IMediaDeviceControl<D>::Capabilities() const
{
    Windows::Media::Devices::MediaDeviceControlCapabilities value { nullptr };
    check_hresult(static_cast<const IMediaDeviceControl &>(static_cast<const D &>(*this))->get_Capabilities(put(value)));
    return value;
}

template <typename D> bool impl_IMediaDeviceControl<D>::TryGetValue(double & value) const
{
    bool succeeded {};
    check_hresult(static_cast<const IMediaDeviceControl &>(static_cast<const D &>(*this))->abi_TryGetValue(&value, &succeeded));
    return succeeded;
}

template <typename D> bool impl_IMediaDeviceControl<D>::TrySetValue(double value) const
{
    bool succeeded {};
    check_hresult(static_cast<const IMediaDeviceControl &>(static_cast<const D &>(*this))->abi_TrySetValue(value, &succeeded));
    return succeeded;
}

template <typename D> bool impl_IMediaDeviceControl<D>::TryGetAuto(bool & value) const
{
    bool succeeded {};
    check_hresult(static_cast<const IMediaDeviceControl &>(static_cast<const D &>(*this))->abi_TryGetAuto(&value, &succeeded));
    return succeeded;
}

template <typename D> bool impl_IMediaDeviceControl<D>::TrySetAuto(bool value) const
{
    bool succeeded {};
    check_hresult(static_cast<const IMediaDeviceControl &>(static_cast<const D &>(*this))->abi_TrySetAuto(value, &succeeded));
    return succeeded;
}

template <typename D> bool impl_IMediaDeviceControlCapabilities<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const IMediaDeviceControlCapabilities &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> double impl_IMediaDeviceControlCapabilities<D>::Min() const
{
    double value {};
    check_hresult(static_cast<const IMediaDeviceControlCapabilities &>(static_cast<const D &>(*this))->get_Min(&value));
    return value;
}

template <typename D> double impl_IMediaDeviceControlCapabilities<D>::Max() const
{
    double value {};
    check_hresult(static_cast<const IMediaDeviceControlCapabilities &>(static_cast<const D &>(*this))->get_Max(&value));
    return value;
}

template <typename D> double impl_IMediaDeviceControlCapabilities<D>::Step() const
{
    double value {};
    check_hresult(static_cast<const IMediaDeviceControlCapabilities &>(static_cast<const D &>(*this))->get_Step(&value));
    return value;
}

template <typename D> double impl_IMediaDeviceControlCapabilities<D>::Default() const
{
    double value {};
    check_hresult(static_cast<const IMediaDeviceControlCapabilities &>(static_cast<const D &>(*this))->get_Default(&value));
    return value;
}

template <typename D> bool impl_IMediaDeviceControlCapabilities<D>::AutoModeSupported() const
{
    bool value {};
    check_hresult(static_cast<const IMediaDeviceControlCapabilities &>(static_cast<const D &>(*this))->get_AutoModeSupported(&value));
    return value;
}

template <typename D> void impl_IAdvancedVideoCaptureDeviceController<D>::SetDeviceProperty(hstring_ref propertyId, const Windows::IInspectable & propertyValue) const
{
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController &>(static_cast<const D &>(*this))->abi_SetDeviceProperty(get(propertyId), get(propertyValue)));
}

template <typename D> Windows::IInspectable impl_IAdvancedVideoCaptureDeviceController<D>::GetDeviceProperty(hstring_ref propertyId) const
{
    Windows::IInspectable propertyValue;
    check_hresult(static_cast<const IAdvancedVideoCaptureDeviceController &>(static_cast<const D &>(*this))->abi_GetDeviceProperty(get(propertyId), put(propertyValue)));
    return propertyValue;
}

template <typename D> bool impl_ILowLagPhotoSequenceControl<D>::Supported() const
{
    bool value {};
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->get_Supported(&value));
    return value;
}

template <typename D> uint32_t impl_ILowLagPhotoSequenceControl<D>::MaxPastPhotos() const
{
    uint32_t value {};
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->get_MaxPastPhotos(&value));
    return value;
}

template <typename D> float impl_ILowLagPhotoSequenceControl<D>::MaxPhotosPerSecond() const
{
    float value {};
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->get_MaxPhotosPerSecond(&value));
    return value;
}

template <typename D> uint32_t impl_ILowLagPhotoSequenceControl<D>::PastPhotoLimit() const
{
    uint32_t value {};
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->get_PastPhotoLimit(&value));
    return value;
}

template <typename D> void impl_ILowLagPhotoSequenceControl<D>::PastPhotoLimit(uint32_t value) const
{
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->put_PastPhotoLimit(value));
}

template <typename D> float impl_ILowLagPhotoSequenceControl<D>::PhotosPerSecondLimit() const
{
    float value {};
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->get_PhotosPerSecondLimit(&value));
    return value;
}

template <typename D> void impl_ILowLagPhotoSequenceControl<D>::PhotosPerSecondLimit(float value) const
{
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->put_PhotosPerSecondLimit(value));
}

template <typename D> Windows::Media::MediaProperties::MediaRatio impl_ILowLagPhotoSequenceControl<D>::GetHighestConcurrentFrameRate(const Windows::Media::MediaProperties::IMediaEncodingProperties & captureProperties) const
{
    Windows::Media::MediaProperties::MediaRatio value { nullptr };
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->abi_GetHighestConcurrentFrameRate(get(captureProperties), put(value)));
    return value;
}

template <typename D> Windows::Media::MediaProperties::MediaRatio impl_ILowLagPhotoSequenceControl<D>::GetCurrentFrameRate() const
{
    Windows::Media::MediaProperties::MediaRatio value { nullptr };
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->abi_GetCurrentFrameRate(put(value)));
    return value;
}

template <typename D> bool impl_ILowLagPhotoSequenceControl<D>::ThumbnailEnabled() const
{
    bool value {};
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->get_ThumbnailEnabled(&value));
    return value;
}

template <typename D> void impl_ILowLagPhotoSequenceControl<D>::ThumbnailEnabled(bool value) const
{
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->put_ThumbnailEnabled(value));
}

template <typename D> Windows::Media::MediaProperties::MediaThumbnailFormat impl_ILowLagPhotoSequenceControl<D>::ThumbnailFormat() const
{
    Windows::Media::MediaProperties::MediaThumbnailFormat value {};
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->get_ThumbnailFormat(&value));
    return value;
}

template <typename D> void impl_ILowLagPhotoSequenceControl<D>::ThumbnailFormat(Windows::Media::MediaProperties::MediaThumbnailFormat value) const
{
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->put_ThumbnailFormat(value));
}

template <typename D> uint32_t impl_ILowLagPhotoSequenceControl<D>::DesiredThumbnailSize() const
{
    uint32_t value {};
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->get_DesiredThumbnailSize(&value));
    return value;
}

template <typename D> void impl_ILowLagPhotoSequenceControl<D>::DesiredThumbnailSize(uint32_t value) const
{
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->put_DesiredThumbnailSize(value));
}

template <typename D> uint32_t impl_ILowLagPhotoSequenceControl<D>::HardwareAcceleratedThumbnailSupported() const
{
    uint32_t value {};
    check_hresult(static_cast<const ILowLagPhotoSequenceControl &>(static_cast<const D &>(*this))->get_HardwareAcceleratedThumbnailSupported(&value));
    return value;
}

template <typename D> Windows::Media::MediaProperties::MediaRatio impl_ILowLagPhotoControl<D>::GetHighestConcurrentFrameRate(const Windows::Media::MediaProperties::IMediaEncodingProperties & captureProperties) const
{
    Windows::Media::MediaProperties::MediaRatio value { nullptr };
    check_hresult(static_cast<const ILowLagPhotoControl &>(static_cast<const D &>(*this))->abi_GetHighestConcurrentFrameRate(get(captureProperties), put(value)));
    return value;
}

template <typename D> Windows::Media::MediaProperties::MediaRatio impl_ILowLagPhotoControl<D>::GetCurrentFrameRate() const
{
    Windows::Media::MediaProperties::MediaRatio value { nullptr };
    check_hresult(static_cast<const ILowLagPhotoControl &>(static_cast<const D &>(*this))->abi_GetCurrentFrameRate(put(value)));
    return value;
}

template <typename D> bool impl_ILowLagPhotoControl<D>::ThumbnailEnabled() const
{
    bool value {};
    check_hresult(static_cast<const ILowLagPhotoControl &>(static_cast<const D &>(*this))->get_ThumbnailEnabled(&value));
    return value;
}

template <typename D> void impl_ILowLagPhotoControl<D>::ThumbnailEnabled(bool value) const
{
    check_hresult(static_cast<const ILowLagPhotoControl &>(static_cast<const D &>(*this))->put_ThumbnailEnabled(value));
}

template <typename D> Windows::Media::MediaProperties::MediaThumbnailFormat impl_ILowLagPhotoControl<D>::ThumbnailFormat() const
{
    Windows::Media::MediaProperties::MediaThumbnailFormat value {};
    check_hresult(static_cast<const ILowLagPhotoControl &>(static_cast<const D &>(*this))->get_ThumbnailFormat(&value));
    return value;
}

template <typename D> void impl_ILowLagPhotoControl<D>::ThumbnailFormat(Windows::Media::MediaProperties::MediaThumbnailFormat value) const
{
    check_hresult(static_cast<const ILowLagPhotoControl &>(static_cast<const D &>(*this))->put_ThumbnailFormat(value));
}

template <typename D> uint32_t impl_ILowLagPhotoControl<D>::DesiredThumbnailSize() const
{
    uint32_t value {};
    check_hresult(static_cast<const ILowLagPhotoControl &>(static_cast<const D &>(*this))->get_DesiredThumbnailSize(&value));
    return value;
}

template <typename D> void impl_ILowLagPhotoControl<D>::DesiredThumbnailSize(uint32_t value) const
{
    check_hresult(static_cast<const ILowLagPhotoControl &>(static_cast<const D &>(*this))->put_DesiredThumbnailSize(value));
}

template <typename D> uint32_t impl_ILowLagPhotoControl<D>::HardwareAcceleratedThumbnailSupported() const
{
    uint32_t value {};
    check_hresult(static_cast<const ILowLagPhotoControl &>(static_cast<const D &>(*this))->get_HardwareAcceleratedThumbnailSupported(&value));
    return value;
}

template <typename D> bool impl_IPhotoConfirmationControl<D>::Supported() const
{
    bool pbSupported {};
    check_hresult(static_cast<const IPhotoConfirmationControl &>(static_cast<const D &>(*this))->get_Supported(&pbSupported));
    return pbSupported;
}

template <typename D> bool impl_IPhotoConfirmationControl<D>::Enabled() const
{
    bool value {};
    check_hresult(static_cast<const IPhotoConfirmationControl &>(static_cast<const D &>(*this))->get_Enabled(&value));
    return value;
}

template <typename D> void impl_IPhotoConfirmationControl<D>::Enabled(bool value) const
{
    check_hresult(static_cast<const IPhotoConfirmationControl &>(static_cast<const D &>(*this))->put_Enabled(value));
}

template <typename D> Windows::Media::MediaProperties::MediaPixelFormat impl_IPhotoConfirmationControl<D>::PixelFormat() const
{
    Windows::Media::MediaProperties::MediaPixelFormat format {};
    check_hresult(static_cast<const IPhotoConfirmationControl &>(static_cast<const D &>(*this))->get_PixelFormat(&format));
    return format;
}

template <typename D> void impl_IPhotoConfirmationControl<D>::PixelFormat(Windows::Media::MediaProperties::MediaPixelFormat format) const
{
    check_hresult(static_cast<const IPhotoConfirmationControl &>(static_cast<const D &>(*this))->put_PixelFormat(format));
}

template <typename D> void impl_IDialRequestedEventArgs<D>::Handled() const
{
    check_hresult(static_cast<const IDialRequestedEventArgs &>(static_cast<const D &>(*this))->abi_Handled());
}

template <typename D> Windows::IInspectable impl_IDialRequestedEventArgs<D>::Contact() const
{
    Windows::IInspectable value;
    check_hresult(static_cast<const IDialRequestedEventArgs &>(static_cast<const D &>(*this))->get_Contact(put(value)));
    return value;
}

template <typename D> void impl_IRedialRequestedEventArgs<D>::Handled() const
{
    check_hresult(static_cast<const IRedialRequestedEventArgs &>(static_cast<const D &>(*this))->abi_Handled());
}

template <typename D> Windows::Media::Devices::TelephonyKey impl_IKeypadPressedEventArgs<D>::TelephonyKey() const
{
    Windows::Media::Devices::TelephonyKey telephonyKey {};
    check_hresult(static_cast<const IKeypadPressedEventArgs &>(static_cast<const D &>(*this))->get_TelephonyKey(&telephonyKey));
    return telephonyKey;
}

template <typename D> uint64_t impl_ICallControl<D>::IndicateNewIncomingCall(bool enableRinger, hstring_ref callerId) const
{
    uint64_t callToken {};
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->abi_IndicateNewIncomingCall(enableRinger, get(callerId), &callToken));
    return callToken;
}

template <typename D> uint64_t impl_ICallControl<D>::IndicateNewOutgoingCall() const
{
    uint64_t callToken {};
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->abi_IndicateNewOutgoingCall(&callToken));
    return callToken;
}

template <typename D> void impl_ICallControl<D>::IndicateActiveCall(uint64_t callToken) const
{
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->abi_IndicateActiveCall(callToken));
}

template <typename D> void impl_ICallControl<D>::EndCall(uint64_t callToken) const
{
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->abi_EndCall(callToken));
}

template <typename D> bool impl_ICallControl<D>::HasRinger() const
{
    bool value {};
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->get_HasRinger(&value));
    return value;
}

template <typename D> event_token impl_ICallControl<D>::AnswerRequested(const Windows::Media::Devices::CallControlEventHandler & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->add_AnswerRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ICallControl> impl_ICallControl<D>::AnswerRequested(auto_revoke_t, const Windows::Media::Devices::CallControlEventHandler & handler) const
{
    return impl::make_event_revoker<D, ICallControl>(this, &ABI::Windows::Media::Devices::ICallControl::remove_AnswerRequested, AnswerRequested(handler));
}

template <typename D> void impl_ICallControl<D>::AnswerRequested(event_token token) const
{
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->remove_AnswerRequested(token));
}

template <typename D> event_token impl_ICallControl<D>::HangUpRequested(const Windows::Media::Devices::CallControlEventHandler & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->add_HangUpRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ICallControl> impl_ICallControl<D>::HangUpRequested(auto_revoke_t, const Windows::Media::Devices::CallControlEventHandler & handler) const
{
    return impl::make_event_revoker<D, ICallControl>(this, &ABI::Windows::Media::Devices::ICallControl::remove_HangUpRequested, HangUpRequested(handler));
}

template <typename D> void impl_ICallControl<D>::HangUpRequested(event_token token) const
{
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->remove_HangUpRequested(token));
}

template <typename D> event_token impl_ICallControl<D>::DialRequested(const Windows::Media::Devices::DialRequestedEventHandler & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->add_DialRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ICallControl> impl_ICallControl<D>::DialRequested(auto_revoke_t, const Windows::Media::Devices::DialRequestedEventHandler & handler) const
{
    return impl::make_event_revoker<D, ICallControl>(this, &ABI::Windows::Media::Devices::ICallControl::remove_DialRequested, DialRequested(handler));
}

template <typename D> void impl_ICallControl<D>::DialRequested(event_token token) const
{
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->remove_DialRequested(token));
}

template <typename D> event_token impl_ICallControl<D>::RedialRequested(const Windows::Media::Devices::RedialRequestedEventHandler & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->add_RedialRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ICallControl> impl_ICallControl<D>::RedialRequested(auto_revoke_t, const Windows::Media::Devices::RedialRequestedEventHandler & handler) const
{
    return impl::make_event_revoker<D, ICallControl>(this, &ABI::Windows::Media::Devices::ICallControl::remove_RedialRequested, RedialRequested(handler));
}

template <typename D> void impl_ICallControl<D>::RedialRequested(event_token token) const
{
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->remove_RedialRequested(token));
}

template <typename D> event_token impl_ICallControl<D>::KeypadPressed(const Windows::Media::Devices::KeypadPressedEventHandler & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->add_KeypadPressed(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ICallControl> impl_ICallControl<D>::KeypadPressed(auto_revoke_t, const Windows::Media::Devices::KeypadPressedEventHandler & handler) const
{
    return impl::make_event_revoker<D, ICallControl>(this, &ABI::Windows::Media::Devices::ICallControl::remove_KeypadPressed, KeypadPressed(handler));
}

template <typename D> void impl_ICallControl<D>::KeypadPressed(event_token token) const
{
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->remove_KeypadPressed(token));
}

template <typename D> event_token impl_ICallControl<D>::AudioTransferRequested(const Windows::Media::Devices::CallControlEventHandler & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->add_AudioTransferRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ICallControl> impl_ICallControl<D>::AudioTransferRequested(auto_revoke_t, const Windows::Media::Devices::CallControlEventHandler & handler) const
{
    return impl::make_event_revoker<D, ICallControl>(this, &ABI::Windows::Media::Devices::ICallControl::remove_AudioTransferRequested, AudioTransferRequested(handler));
}

template <typename D> void impl_ICallControl<D>::AudioTransferRequested(event_token token) const
{
    check_hresult(static_cast<const ICallControl &>(static_cast<const D &>(*this))->remove_AudioTransferRequested(token));
}

template <typename D> Windows::Media::Devices::CallControl impl_ICallControlStatics<D>::GetDefault() const
{
    Windows::Media::Devices::CallControl callControl { nullptr };
    check_hresult(static_cast<const ICallControlStatics &>(static_cast<const D &>(*this))->abi_GetDefault(put(callControl)));
    return callControl;
}

template <typename D> Windows::Media::Devices::CallControl impl_ICallControlStatics<D>::FromId(hstring_ref deviceId) const
{
    Windows::Media::Devices::CallControl callControl { nullptr };
    check_hresult(static_cast<const ICallControlStatics &>(static_cast<const D &>(*this))->abi_FromId(get(deviceId), put(callControl)));
    return callControl;
}

inline AdvancedPhotoCaptureSettings::AdvancedPhotoCaptureSettings() :
    AdvancedPhotoCaptureSettings(activate_instance<AdvancedPhotoCaptureSettings>())
{}

inline Windows::Media::Devices::CallControl CallControl::GetDefault()
{
    return get_activation_factory<CallControl, ICallControlStatics>().GetDefault();
}

inline Windows::Media::Devices::CallControl CallControl::FromId(hstring_ref deviceId)
{
    return get_activation_factory<CallControl, ICallControlStatics>().FromId(deviceId);
}

inline FocusSettings::FocusSettings() :
    FocusSettings(activate_instance<FocusSettings>())
{}

inline hstring MediaDevice::GetAudioCaptureSelector()
{
    return get_activation_factory<MediaDevice, IMediaDeviceStatics>().GetAudioCaptureSelector();
}

inline hstring MediaDevice::GetAudioRenderSelector()
{
    return get_activation_factory<MediaDevice, IMediaDeviceStatics>().GetAudioRenderSelector();
}

inline hstring MediaDevice::GetVideoCaptureSelector()
{
    return get_activation_factory<MediaDevice, IMediaDeviceStatics>().GetVideoCaptureSelector();
}

inline hstring MediaDevice::GetDefaultAudioCaptureId(Windows::Media::Devices::AudioDeviceRole role)
{
    return get_activation_factory<MediaDevice, IMediaDeviceStatics>().GetDefaultAudioCaptureId(role);
}

inline hstring MediaDevice::GetDefaultAudioRenderId(Windows::Media::Devices::AudioDeviceRole role)
{
    return get_activation_factory<MediaDevice, IMediaDeviceStatics>().GetDefaultAudioRenderId(role);
}

inline event_token MediaDevice::DefaultAudioCaptureDeviceChanged(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioCaptureDeviceChangedEventArgs> & handler)
{
    return get_activation_factory<MediaDevice, IMediaDeviceStatics>().DefaultAudioCaptureDeviceChanged(handler);
}

inline factory_event_revoker<IMediaDeviceStatics> MediaDevice::DefaultAudioCaptureDeviceChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioCaptureDeviceChangedEventArgs> & handler)
{
    auto factory = get_activation_factory<MediaDevice, IMediaDeviceStatics>();
    return { factory, &ABI::Windows::Media::Devices::IMediaDeviceStatics::remove_DefaultAudioCaptureDeviceChanged, factory.DefaultAudioCaptureDeviceChanged(handler) };
}

inline void MediaDevice::DefaultAudioCaptureDeviceChanged(event_token cookie)
{
    get_activation_factory<MediaDevice, IMediaDeviceStatics>().DefaultAudioCaptureDeviceChanged(cookie);
}

inline event_token MediaDevice::DefaultAudioRenderDeviceChanged(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioRenderDeviceChangedEventArgs> & handler)
{
    return get_activation_factory<MediaDevice, IMediaDeviceStatics>().DefaultAudioRenderDeviceChanged(handler);
}

inline factory_event_revoker<IMediaDeviceStatics> MediaDevice::DefaultAudioRenderDeviceChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioRenderDeviceChangedEventArgs> & handler)
{
    auto factory = get_activation_factory<MediaDevice, IMediaDeviceStatics>();
    return { factory, &ABI::Windows::Media::Devices::IMediaDeviceStatics::remove_DefaultAudioRenderDeviceChanged, factory.DefaultAudioRenderDeviceChanged(handler) };
}

inline void MediaDevice::DefaultAudioRenderDeviceChanged(event_token cookie)
{
    get_activation_factory<MediaDevice, IMediaDeviceStatics>().DefaultAudioRenderDeviceChanged(cookie);
}

inline RegionOfInterest::RegionOfInterest() :
    RegionOfInterest(activate_instance<RegionOfInterest>())
{}

inline ZoomSettings::ZoomSettings() :
    ZoomSettings(activate_instance<ZoomSettings>())
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Networking.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Networking.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Networking.Connectivity.0.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Networking {

struct __declspec(uuid("33a0aa36-f8fa-4b30-b856-76517c3bd06d")) __declspec(novtable) IEndpointPair : Windows::IInspectable
{
    virtual HRESULT __stdcall get_LocalHostName(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall put_LocalHostName(Windows::Networking::IHostName * value) = 0;
    virtual HRESULT __stdcall get_LocalServiceName(hstring * value) = 0;
    virtual HRESULT __stdcall put_LocalServiceName(hstring value) = 0;
    virtual HRESULT __stdcall get_RemoteHostName(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall put_RemoteHostName(Windows::Networking::IHostName * value) = 0;
    virtual HRESULT __stdcall get_RemoteServiceName(hstring * value) = 0;
    virtual HRESULT __stdcall put_RemoteServiceName(hstring value) = 0;
};

struct __declspec(uuid("b609d971-64e0-442b-aa6f-cc8c8f181f78")) __declspec(novtable) IEndpointPairFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateEndpointPair(Windows::Networking::IHostName * localHostName, hstring localServiceName, Windows::Networking::IHostName * remoteHostName, hstring remoteServiceName, Windows::Networking::IEndpointPair ** value) = 0;
};

struct __declspec(uuid("bf8ecaad-ed96-49a7-9084-d416cae88dcb")) __declspec(novtable) IHostName : Windows::IInspectable
{
    virtual HRESULT __stdcall get_IPInformation(Windows::Networking::Connectivity::IIPInformation ** value) = 0;
    virtual HRESULT __stdcall get_RawName(hstring * value) = 0;
    virtual HRESULT __stdcall get_DisplayName(hstring * value) = 0;
    virtual HRESULT __stdcall get_CanonicalName(hstring * value) = 0;
    virtual HRESULT __stdcall get_Type(winrt::Windows::Networking::HostNameType * value) = 0;
    virtual HRESULT __stdcall abi_IsEqual(Windows::Networking::IHostName * hostName, bool * isEqual) = 0;
};

struct __declspec(uuid("458c23ed-712f-4576-adf1-c20b2c643558")) __declspec(novtable) IHostNameFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateHostName(hstring hostName, Windows::Networking::IHostName ** value) = 0;
};

struct __declspec(uuid("f68cd4bf-a388-4e8b-91ea-54dd6dd901c0")) __declspec(novtable) IHostNameStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Compare(hstring value1, hstring value2, int32_t * result) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Networking::EndpointPair> { using default_interface = Windows::Networking::IEndpointPair; };
template <> struct traits<Windows::Networking::HostName> { using default_interface = Windows::Networking::IHostName; };

}

namespace Windows::Networking {

template <typename T> struct impl_IEndpointPair;
template <typename T> struct impl_IEndpointPairFactory;
template <typename T> struct impl_IHostName;
template <typename T> struct impl_IHostNameFactory;
template <typename T> struct impl_IHostNameStatics;

}

namespace impl {

template <> struct traits<Windows::Networking::IEndpointPair>
{
    using abi = ABI::Windows::Networking::IEndpointPair;
    template <typename D> using consume = Windows::Networking::impl_IEndpointPair<D>;
};

template <> struct traits<Windows::Networking::IEndpointPairFactory>
{
    using abi = ABI::Windows::Networking::IEndpointPairFactory;
    template <typename D> using consume = Windows::Networking::impl_IEndpointPairFactory<D>;
};

template <> struct traits<Windows::Networking::IHostName>
{
    using abi = ABI::Windows::Networking::IHostName;
    template <typename D> using consume = Windows::Networking::impl_IHostName<D>;
};

template <> struct traits<Windows::Networking::IHostNameFactory>
{
    using abi = ABI::Windows::Networking::IHostNameFactory;
    template <typename D> using consume = Windows::Networking::impl_IHostNameFactory<D>;
};

template <> struct traits<Windows::Networking::IHostNameStatics>
{
    using abi = ABI::Windows::Networking::IHostNameStatics;
    template <typename D> using consume = Windows::Networking::impl_IHostNameStatics<D>;
};

template <> struct traits<Windows::Networking::EndpointPair>
{
    using abi = ABI::Windows::Networking::EndpointPair;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.EndpointPair"; }
};

template <> struct traits<Windows::Networking::HostName>
{
    using abi = ABI::Windows::Networking::HostName;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.HostName"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Security.Cryptography.Certificates.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Networking.3.h"
#include "internal/Windows.Storage.Streams.3.h"
#include "internal/Windows.Security.Cryptography.Certificates.3.h"
#include "Windows.Security.Cryptography.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificate> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificate>
{
    HRESULT __stdcall abi_BuildChainAsync(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate>> certificates, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Security::Cryptography::Certificates::CertificateChain>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BuildChainAsync(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> *>(&certificates)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_BuildChainWithParametersAsync(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate>> certificates, abi_arg_in<Windows::Security::Cryptography::Certificates::IChainBuildingParameters> parameters, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Security::Cryptography::Certificates::CertificateChain>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BuildChainAsync(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> *>(&certificates), *reinterpret_cast<const Windows::Security::Cryptography::Certificates::ChainBuildingParameters *>(&parameters)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SerialNumber(uint32_t * __valueSize, abi_arg_out<uint8_t> * value) noexcept override
    {
        try
        {
            std::tie(*__valueSize, *value) = detach(this->shim().SerialNumber());
            return S_OK;
        }
        catch (...)
        {
            *__valueSize = 0;
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetHashValue(uint32_t * __valueSize, abi_arg_out<uint8_t> * value) noexcept override
    {
        try
        {
            std::tie(*__valueSize, *value) = detach(this->shim().GetHashValue());
            return S_OK;
        }
        catch (...)
        {
            *__valueSize = 0;
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetHashValueWithAlgorithm(abi_arg_in<hstring> hashAlgorithmName, uint32_t * __valueSize, abi_arg_out<uint8_t> * value) noexcept override
    {
        try
        {
            std::tie(*__valueSize, *value) = detach(this->shim().GetHashValue(*reinterpret_cast<const hstring *>(&hashAlgorithmName)));
            return S_OK;
        }
        catch (...)
        {
            *__valueSize = 0;
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetCertificateBlob(abi_arg_out<Windows::Storage::Streams::IBuffer> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetCertificateBlob());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Subject(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Subject());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Issuer(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Issuer());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HasPrivateKey(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HasPrivateKey());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsStronglyProtected(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsStronglyProtected());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ValidFrom(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ValidFrom());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ValidTo(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ValidTo());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EnhancedKeyUsages(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EnhancedKeyUsages());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FriendlyName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().FriendlyName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FriendlyName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FriendlyName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificate2> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificate2>
{
    HRESULT __stdcall get_IsSecurityDeviceBound(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsSecurityDeviceBound());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyUsages(abi_arg_out<Windows::Security::Cryptography::Certificates::ICertificateKeyUsages> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyUsages());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyAlgorithmName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyAlgorithmName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SignatureAlgorithmName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SignatureAlgorithmName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SignatureHashAlgorithmName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SignatureHashAlgorithmName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SubjectAlternativeName(abi_arg_out<Windows::Security::Cryptography::Certificates::ISubjectAlternativeNameInfo> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SubjectAlternativeName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificate3> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificate3>
{
    HRESULT __stdcall get_IsPerUser(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsPerUser());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_StoreName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().StoreName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyStorageProviderName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyStorageProviderName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateChain> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateChain>
{
    HRESULT __stdcall abi_Validate(Windows::Security::Cryptography::Certificates::ChainValidationResult * status) noexcept override
    {
        try
        {
            *status = detach(this->shim().Validate());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ValidateWithParameters(abi_arg_in<Windows::Security::Cryptography::Certificates::IChainValidationParameters> parameter, Windows::Security::Cryptography::Certificates::ChainValidationResult * status) noexcept override
    {
        try
        {
            *status = detach(this->shim().Validate(*reinterpret_cast<const Windows::Security::Cryptography::Certificates::ChainValidationParameters *>(&parameter)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetCertificates(bool includeRoot, abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> certificates) noexcept override
    {
        try
        {
            *certificates = detach(this->shim().GetCertificates(includeRoot));
            return S_OK;
        }
        catch (...)
        {
            *certificates = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateEnrollmentManagerStatics> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateEnrollmentManagerStatics>
{
    HRESULT __stdcall abi_CreateRequestAsync(abi_arg_in<Windows::Security::Cryptography::Certificates::ICertificateRequestProperties> request, abi_arg_out<Windows::Foundation::IAsyncOperation<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateRequestAsync(*reinterpret_cast<const Windows::Security::Cryptography::Certificates::CertificateRequestProperties *>(&request)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_InstallCertificateAsync(abi_arg_in<hstring> certificate, Windows::Security::Cryptography::Certificates::InstallOptions installOption, abi_arg_out<Windows::Foundation::IAsyncAction> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InstallCertificateAsync(*reinterpret_cast<const hstring *>(&certificate), installOption));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ImportPfxDataAsync(abi_arg_in<hstring> pfxData, abi_arg_in<hstring> password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, abi_arg_in<hstring> friendlyName, abi_arg_out<Windows::Foundation::IAsyncAction> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ImportPfxDataAsync(*reinterpret_cast<const hstring *>(&pfxData), *reinterpret_cast<const hstring *>(&password), exportable, keyProtectionLevel, installOption, *reinterpret_cast<const hstring *>(&friendlyName)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateEnrollmentManagerStatics2> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateEnrollmentManagerStatics2>
{
    HRESULT __stdcall get_UserCertificateEnrollmentManager(abi_arg_out<Windows::Security::Cryptography::Certificates::IUserCertificateEnrollmentManager> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UserCertificateEnrollmentManager());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ImportPfxDataToKspAsync(abi_arg_in<hstring> pfxData, abi_arg_in<hstring> password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, abi_arg_in<hstring> friendlyName, abi_arg_in<hstring> keyStorageProvider, abi_arg_out<Windows::Foundation::IAsyncAction> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ImportPfxDataAsync(*reinterpret_cast<const hstring *>(&pfxData), *reinterpret_cast<const hstring *>(&password), exportable, keyProtectionLevel, installOption, *reinterpret_cast<const hstring *>(&friendlyName), *reinterpret_cast<const hstring *>(&keyStorageProvider)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateEnrollmentManagerStatics3> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateEnrollmentManagerStatics3>
{
    HRESULT __stdcall abi_ImportPfxDataToKspWithParametersAsync(abi_arg_in<hstring> pfxData, abi_arg_in<hstring> password, abi_arg_in<Windows::Security::Cryptography::Certificates::IPfxImportParameters> pfxImportParameters, abi_arg_out<Windows::Foundation::IAsyncAction> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ImportPfxDataAsync(*reinterpret_cast<const hstring *>(&pfxData), *reinterpret_cast<const hstring *>(&password), *reinterpret_cast<const Windows::Security::Cryptography::Certificates::PfxImportParameters *>(&pfxImportParameters)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateFactory> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateFactory>
{
    HRESULT __stdcall abi_CreateCertificate(abi_arg_in<Windows::Storage::Streams::IBuffer> certBlob, abi_arg_out<Windows::Security::Cryptography::Certificates::ICertificate> certificate) noexcept override
    {
        try
        {
            *certificate = detach(this->shim().CreateCertificate(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&certBlob)));
            return S_OK;
        }
        catch (...)
        {
            *certificate = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateKeyUsages> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateKeyUsages>
{
    HRESULT __stdcall get_EncipherOnly(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EncipherOnly());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_EncipherOnly(bool value) noexcept override
    {
        try
        {
            this->shim().EncipherOnly(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CrlSign(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CrlSign());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CrlSign(bool value) noexcept override
    {
        try
        {
            this->shim().CrlSign(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyCertificateSign(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyCertificateSign());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeyCertificateSign(bool value) noexcept override
    {
        try
        {
            this->shim().KeyCertificateSign(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyAgreement(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyAgreement());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeyAgreement(bool value) noexcept override
    {
        try
        {
            this->shim().KeyAgreement(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DataEncipherment(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DataEncipherment());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DataEncipherment(bool value) noexcept override
    {
        try
        {
            this->shim().DataEncipherment(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyEncipherment(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyEncipherment());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeyEncipherment(bool value) noexcept override
    {
        try
        {
            this->shim().KeyEncipherment(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NonRepudiation(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NonRepudiation());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_NonRepudiation(bool value) noexcept override
    {
        try
        {
            this->shim().NonRepudiation(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DigitalSignature(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DigitalSignature());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DigitalSignature(bool value) noexcept override
    {
        try
        {
            this->shim().DigitalSignature(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateQuery> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateQuery>
{
    HRESULT __stdcall get_EnhancedKeyUsages(abi_arg_out<Windows::Foundation::Collections::IVector<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EnhancedKeyUsages());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IssuerName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IssuerName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IssuerName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().IssuerName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FriendlyName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FriendlyName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FriendlyName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().FriendlyName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Thumbprint(uint32_t * __valueSize, abi_arg_out<uint8_t> * value) noexcept override
    {
        try
        {
            std::tie(*__valueSize, *value) = detach(this->shim().Thumbprint());
            return S_OK;
        }
        catch (...)
        {
            *__valueSize = 0;
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Thumbprint(uint32_t __valueSize, abi_arg_in<uint8_t> * value) noexcept override
    {
        try
        {
            this->shim().Thumbprint(array_ref<const uint8_t>(value, value + __valueSize));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HardwareOnly(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HardwareOnly());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_HardwareOnly(bool value) noexcept override
    {
        try
        {
            this->shim().HardwareOnly(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateQuery2> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateQuery2>
{
    HRESULT __stdcall get_IncludeDuplicates(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IncludeDuplicates());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IncludeDuplicates(bool value) noexcept override
    {
        try
        {
            this->shim().IncludeDuplicates(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IncludeExpiredCertificates(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IncludeExpiredCertificates());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IncludeExpiredCertificates(bool value) noexcept override
    {
        try
        {
            this->shim().IncludeExpiredCertificates(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_StoreName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().StoreName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_StoreName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().StoreName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateRequestProperties> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateRequestProperties>
{
    HRESULT __stdcall get_Subject(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Subject());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Subject(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Subject(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyAlgorithmName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyAlgorithmName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeyAlgorithmName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().KeyAlgorithmName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeySize(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeySize());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeySize(uint32_t value) noexcept override
    {
        try
        {
            this->shim().KeySize(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FriendlyName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FriendlyName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FriendlyName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().FriendlyName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HashAlgorithmName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HashAlgorithmName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_HashAlgorithmName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().HashAlgorithmName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Exportable(Windows::Security::Cryptography::Certificates::ExportOption * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Exportable());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Exportable(Windows::Security::Cryptography::Certificates::ExportOption value) noexcept override
    {
        try
        {
            this->shim().Exportable(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyUsages(Windows::Security::Cryptography::Certificates::EnrollKeyUsages * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyUsages());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeyUsages(Windows::Security::Cryptography::Certificates::EnrollKeyUsages value) noexcept override
    {
        try
        {
            this->shim().KeyUsages(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyProtectionLevel(Windows::Security::Cryptography::Certificates::KeyProtectionLevel * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyProtectionLevel());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeyProtectionLevel(Windows::Security::Cryptography::Certificates::KeyProtectionLevel value) noexcept override
    {
        try
        {
            this->shim().KeyProtectionLevel(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyStorageProviderName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyStorageProviderName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeyStorageProviderName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().KeyStorageProviderName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateRequestProperties2> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateRequestProperties2>
{
    HRESULT __stdcall get_SmartcardReaderName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SmartcardReaderName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SmartcardReaderName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().SmartcardReaderName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SigningCertificate(abi_arg_out<Windows::Security::Cryptography::Certificates::ICertificate> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SigningCertificate());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SigningCertificate(abi_arg_in<Windows::Security::Cryptography::Certificates::ICertificate> value) noexcept override
    {
        try
        {
            this->shim().SigningCertificate(*reinterpret_cast<const Windows::Security::Cryptography::Certificates::Certificate *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AttestationCredentialCertificate(abi_arg_out<Windows::Security::Cryptography::Certificates::ICertificate> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AttestationCredentialCertificate());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AttestationCredentialCertificate(abi_arg_in<Windows::Security::Cryptography::Certificates::ICertificate> value) noexcept override
    {
        try
        {
            this->shim().AttestationCredentialCertificate(*reinterpret_cast<const Windows::Security::Cryptography::Certificates::Certificate *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateRequestProperties3> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateRequestProperties3>
{
    HRESULT __stdcall get_CurveName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CurveName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CurveName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().CurveName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CurveParameters(uint32_t * __valueSize, abi_arg_out<uint8_t> * value) noexcept override
    {
        try
        {
            std::tie(*__valueSize, *value) = detach(this->shim().CurveParameters());
            return S_OK;
        }
        catch (...)
        {
            *__valueSize = 0;
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CurveParameters(uint32_t __valueSize, abi_arg_in<uint8_t> * value) noexcept override
    {
        try
        {
            this->shim().CurveParameters(array_ref<const uint8_t>(value, value + __valueSize));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ContainerNamePrefix(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ContainerNamePrefix());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ContainerNamePrefix(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().ContainerNamePrefix(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ContainerName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ContainerName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ContainerName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().ContainerName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_UseExistingKey(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UseExistingKey());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_UseExistingKey(bool value) noexcept override
    {
        try
        {
            this->shim().UseExistingKey(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateStore> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateStore>
{
    HRESULT __stdcall abi_Add(abi_arg_in<Windows::Security::Cryptography::Certificates::ICertificate> certificate) noexcept override
    {
        try
        {
            this->shim().Add(*reinterpret_cast<const Windows::Security::Cryptography::Certificates::Certificate *>(&certificate));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Delete(abi_arg_in<Windows::Security::Cryptography::Certificates::ICertificate> certificate) noexcept override
    {
        try
        {
            this->shim().Delete(*reinterpret_cast<const Windows::Security::Cryptography::Certificates::Certificate *>(&certificate));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateStore2> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateStore2>
{
    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateStoresStatics> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateStoresStatics>
{
    HRESULT __stdcall abi_FindAllAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FindAllAsync());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_FindAllWithQueryAsync(abi_arg_in<Windows::Security::Cryptography::Certificates::ICertificateQuery> query, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FindAllAsync(*reinterpret_cast<const Windows::Security::Cryptography::Certificates::CertificateQuery *>(&query)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TrustedRootCertificationAuthorities(abi_arg_out<Windows::Security::Cryptography::Certificates::ICertificateStore> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TrustedRootCertificationAuthorities());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IntermediateCertificationAuthorities(abi_arg_out<Windows::Security::Cryptography::Certificates::ICertificateStore> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IntermediateCertificationAuthorities());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetStoreByName(abi_arg_in<hstring> storeName, abi_arg_out<Windows::Security::Cryptography::Certificates::ICertificateStore> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetStoreByName(*reinterpret_cast<const hstring *>(&storeName)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICertificateStoresStatics2> : produce_base<D, Windows::Security::Cryptography::Certificates::ICertificateStoresStatics2>
{
    HRESULT __stdcall abi_GetUserStoreByName(abi_arg_in<hstring> storeName, abi_arg_out<Windows::Security::Cryptography::Certificates::IUserCertificateStore> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetUserStoreByName(*reinterpret_cast<const hstring *>(&storeName)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IChainBuildingParameters> : produce_base<D, Windows::Security::Cryptography::Certificates::IChainBuildingParameters>
{
    HRESULT __stdcall get_EnhancedKeyUsages(abi_arg_out<Windows::Foundation::Collections::IVector<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EnhancedKeyUsages());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ValidationTimestamp(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ValidationTimestamp());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ValidationTimestamp(abi_arg_in<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            this->shim().ValidationTimestamp(*reinterpret_cast<const Windows::Foundation::DateTime *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RevocationCheckEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RevocationCheckEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_RevocationCheckEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().RevocationCheckEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NetworkRetrievalEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NetworkRetrievalEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_NetworkRetrievalEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().NetworkRetrievalEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AuthorityInformationAccessEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AuthorityInformationAccessEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AuthorityInformationAccessEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().AuthorityInformationAccessEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CurrentTimeValidationEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CurrentTimeValidationEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CurrentTimeValidationEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().CurrentTimeValidationEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExclusiveTrustRoots(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Security::Cryptography::Certificates::Certificate>> certificates) noexcept override
    {
        try
        {
            *certificates = detach(this->shim().ExclusiveTrustRoots());
            return S_OK;
        }
        catch (...)
        {
            *certificates = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IChainValidationParameters> : produce_base<D, Windows::Security::Cryptography::Certificates::IChainValidationParameters>
{
    HRESULT __stdcall get_CertificateChainPolicy(Windows::Security::Cryptography::Certificates::CertificateChainPolicy * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CertificateChainPolicy());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CertificateChainPolicy(Windows::Security::Cryptography::Certificates::CertificateChainPolicy value) noexcept override
    {
        try
        {
            this->shim().CertificateChainPolicy(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ServerDnsName(abi_arg_out<Windows::Networking::IHostName> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ServerDnsName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ServerDnsName(abi_arg_in<Windows::Networking::IHostName> value) noexcept override
    {
        try
        {
            this->shim().ServerDnsName(*reinterpret_cast<const Windows::Networking::HostName *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICmsAttachedSignature> : produce_base<D, Windows::Security::Cryptography::Certificates::ICmsAttachedSignature>
{
    HRESULT __stdcall get_Certificates(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Certificates());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Content(uint32_t * __valueSize, abi_arg_out<uint8_t> * value) noexcept override
    {
        try
        {
            std::tie(*__valueSize, *value) = detach(this->shim().Content());
            return S_OK;
        }
        catch (...)
        {
            *__valueSize = 0;
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Signers(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::CmsSignerInfo>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Signers());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_VerifySignature(Windows::Security::Cryptography::Certificates::SignatureValidationResult * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().VerifySignature());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICmsAttachedSignatureFactory> : produce_base<D, Windows::Security::Cryptography::Certificates::ICmsAttachedSignatureFactory>
{
    HRESULT __stdcall abi_CreateCmsAttachedSignature(abi_arg_in<Windows::Storage::Streams::IBuffer> inputBlob, abi_arg_out<Windows::Security::Cryptography::Certificates::ICmsAttachedSignature> cmsSignedData) noexcept override
    {
        try
        {
            *cmsSignedData = detach(this->shim().CreateCmsAttachedSignature(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&inputBlob)));
            return S_OK;
        }
        catch (...)
        {
            *cmsSignedData = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICmsAttachedSignatureStatics> : produce_base<D, Windows::Security::Cryptography::Certificates::ICmsAttachedSignatureStatics>
{
    HRESULT __stdcall abi_GenerateSignatureAsync(abi_arg_in<Windows::Storage::Streams::IBuffer> data, abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo>> signers, abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate>> certificates, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer>> outputBlob) noexcept override
    {
        try
        {
            *outputBlob = detach(this->shim().GenerateSignatureAsync(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&data), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo> *>(&signers), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> *>(&certificates)));
            return S_OK;
        }
        catch (...)
        {
            *outputBlob = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICmsDetachedSignature> : produce_base<D, Windows::Security::Cryptography::Certificates::ICmsDetachedSignature>
{
    HRESULT __stdcall get_Certificates(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Certificates());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Signers(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::CmsSignerInfo>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Signers());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_VerifySignatureAsync(abi_arg_in<Windows::Storage::Streams::IInputStream> data, abi_arg_out<Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Cryptography::Certificates::SignatureValidationResult>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().VerifySignatureAsync(*reinterpret_cast<const Windows::Storage::Streams::IInputStream *>(&data)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICmsDetachedSignatureFactory> : produce_base<D, Windows::Security::Cryptography::Certificates::ICmsDetachedSignatureFactory>
{
    HRESULT __stdcall abi_CreateCmsDetachedSignature(abi_arg_in<Windows::Storage::Streams::IBuffer> inputBlob, abi_arg_out<Windows::Security::Cryptography::Certificates::ICmsDetachedSignature> cmsSignedData) noexcept override
    {
        try
        {
            *cmsSignedData = detach(this->shim().CreateCmsDetachedSignature(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&inputBlob)));
            return S_OK;
        }
        catch (...)
        {
            *cmsSignedData = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICmsDetachedSignatureStatics> : produce_base<D, Windows::Security::Cryptography::Certificates::ICmsDetachedSignatureStatics>
{
    HRESULT __stdcall abi_GenerateSignatureAsync(abi_arg_in<Windows::Storage::Streams::IInputStream> data, abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo>> signers, abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate>> certificates, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer>> outputBlob) noexcept override
    {
        try
        {
            *outputBlob = detach(this->shim().GenerateSignatureAsync(*reinterpret_cast<const Windows::Storage::Streams::IInputStream *>(&data), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo> *>(&signers), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> *>(&certificates)));
            return S_OK;
        }
        catch (...)
        {
            *outputBlob = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICmsSignerInfo> : produce_base<D, Windows::Security::Cryptography::Certificates::ICmsSignerInfo>
{
    HRESULT __stdcall get_Certificate(abi_arg_out<Windows::Security::Cryptography::Certificates::ICertificate> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Certificate());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Certificate(abi_arg_in<Windows::Security::Cryptography::Certificates::ICertificate> value) noexcept override
    {
        try
        {
            this->shim().Certificate(*reinterpret_cast<const Windows::Security::Cryptography::Certificates::Certificate *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HashAlgorithmName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HashAlgorithmName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_HashAlgorithmName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().HashAlgorithmName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TimestampInfo(abi_arg_out<Windows::Security::Cryptography::Certificates::ICmsTimestampInfo> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TimestampInfo());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ICmsTimestampInfo> : produce_base<D, Windows::Security::Cryptography::Certificates::ICmsTimestampInfo>
{
    HRESULT __stdcall get_SigningCertificate(abi_arg_out<Windows::Security::Cryptography::Certificates::ICertificate> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SigningCertificate());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Certificates(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Certificates());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Timestamp(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Timestamp());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IKeyAlgorithmNamesStatics> : produce_base<D, Windows::Security::Cryptography::Certificates::IKeyAlgorithmNamesStatics>
{
    HRESULT __stdcall get_Rsa(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Rsa());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Dsa(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Dsa());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Ecdh256(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Ecdh256());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Ecdh384(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Ecdh384());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Ecdh521(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Ecdh521());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Ecdsa256(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Ecdsa256());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Ecdsa384(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Ecdsa384());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Ecdsa521(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Ecdsa521());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IKeyAlgorithmNamesStatics2> : produce_base<D, Windows::Security::Cryptography::Certificates::IKeyAlgorithmNamesStatics2>
{
    HRESULT __stdcall get_Ecdsa(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Ecdsa());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Ecdh(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Ecdh());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IKeyAttestationHelperStatics> : produce_base<D, Windows::Security::Cryptography::Certificates::IKeyAttestationHelperStatics>
{
    HRESULT __stdcall abi_DecryptTpmAttestationCredentialAsync(abi_arg_in<hstring> credential, abi_arg_out<Windows::Foundation::IAsyncOperation<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DecryptTpmAttestationCredentialAsync(*reinterpret_cast<const hstring *>(&credential)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetTpmAttestationCredentialId(abi_arg_in<hstring> credential, abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetTpmAttestationCredentialId(*reinterpret_cast<const hstring *>(&credential)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IKeyAttestationHelperStatics2> : produce_base<D, Windows::Security::Cryptography::Certificates::IKeyAttestationHelperStatics2>
{
    HRESULT __stdcall abi_DecryptTpmAttestationCredentialWithContainerNameAsync(abi_arg_in<hstring> credential, abi_arg_in<hstring> containerName, abi_arg_out<Windows::Foundation::IAsyncOperation<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DecryptTpmAttestationCredentialAsync(*reinterpret_cast<const hstring *>(&credential), *reinterpret_cast<const hstring *>(&containerName)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IKeyStorageProviderNamesStatics> : produce_base<D, Windows::Security::Cryptography::Certificates::IKeyStorageProviderNamesStatics>
{
    HRESULT __stdcall get_SoftwareKeyStorageProvider(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SoftwareKeyStorageProvider());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SmartcardKeyStorageProvider(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SmartcardKeyStorageProvider());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PlatformKeyStorageProvider(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PlatformKeyStorageProvider());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IKeyStorageProviderNamesStatics2> : produce_base<D, Windows::Security::Cryptography::Certificates::IKeyStorageProviderNamesStatics2>
{
    HRESULT __stdcall get_PassportKeyStorageProvider(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PassportKeyStorageProvider());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IPfxImportParameters> : produce_base<D, Windows::Security::Cryptography::Certificates::IPfxImportParameters>
{
    HRESULT __stdcall get_Exportable(Windows::Security::Cryptography::Certificates::ExportOption * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Exportable());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Exportable(Windows::Security::Cryptography::Certificates::ExportOption value) noexcept override
    {
        try
        {
            this->shim().Exportable(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyProtectionLevel(Windows::Security::Cryptography::Certificates::KeyProtectionLevel * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyProtectionLevel());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeyProtectionLevel(Windows::Security::Cryptography::Certificates::KeyProtectionLevel value) noexcept override
    {
        try
        {
            this->shim().KeyProtectionLevel(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InstallOptions(Windows::Security::Cryptography::Certificates::InstallOptions * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InstallOptions());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_InstallOptions(Windows::Security::Cryptography::Certificates::InstallOptions value) noexcept override
    {
        try
        {
            this->shim().InstallOptions(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FriendlyName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FriendlyName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FriendlyName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().FriendlyName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyStorageProviderName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyStorageProviderName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeyStorageProviderName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().KeyStorageProviderName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ContainerNamePrefix(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ContainerNamePrefix());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ContainerNamePrefix(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().ContainerNamePrefix(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ReaderName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ReaderName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ReaderName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().ReaderName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IStandardCertificateStoreNamesStatics> : produce_base<D, Windows::Security::Cryptography::Certificates::IStandardCertificateStoreNamesStatics>
{
    HRESULT __stdcall get_Personal(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Personal());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TrustedRootCertificationAuthorities(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TrustedRootCertificationAuthorities());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IntermediateCertificationAuthorities(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IntermediateCertificationAuthorities());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::ISubjectAlternativeNameInfo> : produce_base<D, Windows::Security::Cryptography::Certificates::ISubjectAlternativeNameInfo>
{
    HRESULT __stdcall get_EmailName(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IPAddress(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IPAddress());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Url(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Url());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DnsName(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DnsName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DistinguishedName(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DistinguishedName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PrincipalName(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PrincipalName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IUserCertificateEnrollmentManager> : produce_base<D, Windows::Security::Cryptography::Certificates::IUserCertificateEnrollmentManager>
{
    HRESULT __stdcall abi_CreateRequestAsync(abi_arg_in<Windows::Security::Cryptography::Certificates::ICertificateRequestProperties> request, abi_arg_out<Windows::Foundation::IAsyncOperation<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateRequestAsync(*reinterpret_cast<const Windows::Security::Cryptography::Certificates::CertificateRequestProperties *>(&request)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_InstallCertificateAsync(abi_arg_in<hstring> certificate, Windows::Security::Cryptography::Certificates::InstallOptions installOption, abi_arg_out<Windows::Foundation::IAsyncAction> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InstallCertificateAsync(*reinterpret_cast<const hstring *>(&certificate), installOption));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ImportPfxDataAsync(abi_arg_in<hstring> pfxData, abi_arg_in<hstring> password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, abi_arg_in<hstring> friendlyName, abi_arg_out<Windows::Foundation::IAsyncAction> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ImportPfxDataAsync(*reinterpret_cast<const hstring *>(&pfxData), *reinterpret_cast<const hstring *>(&password), exportable, keyProtectionLevel, installOption, *reinterpret_cast<const hstring *>(&friendlyName)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ImportPfxDataToKspAsync(abi_arg_in<hstring> pfxData, abi_arg_in<hstring> password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, abi_arg_in<hstring> friendlyName, abi_arg_in<hstring> keyStorageProvider, abi_arg_out<Windows::Foundation::IAsyncAction> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ImportPfxDataAsync(*reinterpret_cast<const hstring *>(&pfxData), *reinterpret_cast<const hstring *>(&password), exportable, keyProtectionLevel, installOption, *reinterpret_cast<const hstring *>(&friendlyName), *reinterpret_cast<const hstring *>(&keyStorageProvider)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IUserCertificateEnrollmentManager2> : produce_base<D, Windows::Security::Cryptography::Certificates::IUserCertificateEnrollmentManager2>
{
    HRESULT __stdcall abi_ImportPfxDataToKspWithParametersAsync(abi_arg_in<hstring> pfxData, abi_arg_in<hstring> password, abi_arg_in<Windows::Security::Cryptography::Certificates::IPfxImportParameters> pfxImportParameters, abi_arg_out<Windows::Foundation::IAsyncAction> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ImportPfxDataAsync(*reinterpret_cast<const hstring *>(&pfxData), *reinterpret_cast<const hstring *>(&password), *reinterpret_cast<const Windows::Security::Cryptography::Certificates::PfxImportParameters *>(&pfxImportParameters)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Security::Cryptography::Certificates::IUserCertificateStore> : produce_base<D, Windows::Security::Cryptography::Certificates::IUserCertificateStore>
{
    HRESULT __stdcall abi_RequestAddAsync(abi_arg_in<Windows::Security::Cryptography::Certificates::ICertificate> certificate, abi_arg_out<Windows::Foundation::IAsyncOperation<bool>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().RequestAddAsync(*reinterpret_cast<const Windows::Security::Cryptography::Certificates::Certificate *>(&certificate)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RequestDeleteAsync(abi_arg_in<Windows::Security::Cryptography::Certificates::ICertificate> certificate, abi_arg_out<Windows::Foundation::IAsyncOperation<bool>> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().RequestDeleteAsync(*reinterpret_cast<const Windows::Security::Cryptography::Certificates::Certificate *>(&certificate)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Security::Cryptography::Certificates {

template <typename D> hstring impl_ICertificateRequestProperties<D>::Subject() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->get_Subject(put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties<D>::Subject(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->put_Subject(get(value)));
}

template <typename D> hstring impl_ICertificateRequestProperties<D>::KeyAlgorithmName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->get_KeyAlgorithmName(put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties<D>::KeyAlgorithmName(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->put_KeyAlgorithmName(get(value)));
}

template <typename D> uint32_t impl_ICertificateRequestProperties<D>::KeySize() const
{
    uint32_t value {};
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->get_KeySize(&value));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties<D>::KeySize(uint32_t value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->put_KeySize(value));
}

template <typename D> hstring impl_ICertificateRequestProperties<D>::FriendlyName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->get_FriendlyName(put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties<D>::FriendlyName(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->put_FriendlyName(get(value)));
}

template <typename D> hstring impl_ICertificateRequestProperties<D>::HashAlgorithmName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->get_HashAlgorithmName(put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties<D>::HashAlgorithmName(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->put_HashAlgorithmName(get(value)));
}

template <typename D> Windows::Security::Cryptography::Certificates::ExportOption impl_ICertificateRequestProperties<D>::Exportable() const
{
    Windows::Security::Cryptography::Certificates::ExportOption value {};
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->get_Exportable(&value));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties<D>::Exportable(Windows::Security::Cryptography::Certificates::ExportOption value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->put_Exportable(value));
}

template <typename D> Windows::Security::Cryptography::Certificates::EnrollKeyUsages impl_ICertificateRequestProperties<D>::KeyUsages() const
{
    Windows::Security::Cryptography::Certificates::EnrollKeyUsages value {};
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->get_KeyUsages(&value));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties<D>::KeyUsages(Windows::Security::Cryptography::Certificates::EnrollKeyUsages value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->put_KeyUsages(value));
}

template <typename D> Windows::Security::Cryptography::Certificates::KeyProtectionLevel impl_ICertificateRequestProperties<D>::KeyProtectionLevel() const
{
    Windows::Security::Cryptography::Certificates::KeyProtectionLevel value {};
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->get_KeyProtectionLevel(&value));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties<D>::KeyProtectionLevel(Windows::Security::Cryptography::Certificates::KeyProtectionLevel value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->put_KeyProtectionLevel(value));
}

template <typename D> hstring impl_ICertificateRequestProperties<D>::KeyStorageProviderName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->get_KeyStorageProviderName(put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties<D>::KeyStorageProviderName(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties &>(static_cast<const D &>(*this))->put_KeyStorageProviderName(get(value)));
}

template <typename D> hstring impl_ICertificateRequestProperties2<D>::SmartcardReaderName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateRequestProperties2 &>(static_cast<const D &>(*this))->get_SmartcardReaderName(put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties2<D>::SmartcardReaderName(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties2 &>(static_cast<const D &>(*this))->put_SmartcardReaderName(get(value)));
}

template <typename D> Windows::Security::Cryptography::Certificates::Certificate impl_ICertificateRequestProperties2<D>::SigningCertificate() const
{
    Windows::Security::Cryptography::Certificates::Certificate value { nullptr };
    check_hresult(static_cast<const ICertificateRequestProperties2 &>(static_cast<const D &>(*this))->get_SigningCertificate(put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties2<D>::SigningCertificate(const Windows::Security::Cryptography::Certificates::Certificate & value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties2 &>(static_cast<const D &>(*this))->put_SigningCertificate(get(value)));
}

template <typename D> Windows::Security::Cryptography::Certificates::Certificate impl_ICertificateRequestProperties2<D>::AttestationCredentialCertificate() const
{
    Windows::Security::Cryptography::Certificates::Certificate value { nullptr };
    check_hresult(static_cast<const ICertificateRequestProperties2 &>(static_cast<const D &>(*this))->get_AttestationCredentialCertificate(put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties2<D>::AttestationCredentialCertificate(const Windows::Security::Cryptography::Certificates::Certificate & value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties2 &>(static_cast<const D &>(*this))->put_AttestationCredentialCertificate(get(value)));
}

template <typename D> hstring impl_ICertificateRequestProperties3<D>::CurveName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateRequestProperties3 &>(static_cast<const D &>(*this))->get_CurveName(put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties3<D>::CurveName(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties3 &>(static_cast<const D &>(*this))->put_CurveName(get(value)));
}

template <typename D> com_array<uint8_t> impl_ICertificateRequestProperties3<D>::CurveParameters() const
{
    com_array<uint8_t> value {};
    check_hresult(static_cast<const ICertificateRequestProperties3 &>(static_cast<const D &>(*this))->get_CurveParameters(put_size(value), put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties3<D>::CurveParameters(array_ref<const uint8_t> value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties3 &>(static_cast<const D &>(*this))->put_CurveParameters(value.size(), get(value)));
}

template <typename D> hstring impl_ICertificateRequestProperties3<D>::ContainerNamePrefix() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateRequestProperties3 &>(static_cast<const D &>(*this))->get_ContainerNamePrefix(put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties3<D>::ContainerNamePrefix(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties3 &>(static_cast<const D &>(*this))->put_ContainerNamePrefix(get(value)));
}

template <typename D> hstring impl_ICertificateRequestProperties3<D>::ContainerName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateRequestProperties3 &>(static_cast<const D &>(*this))->get_ContainerName(put(value)));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties3<D>::ContainerName(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties3 &>(static_cast<const D &>(*this))->put_ContainerName(get(value)));
}

template <typename D> bool impl_ICertificateRequestProperties3<D>::UseExistingKey() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateRequestProperties3 &>(static_cast<const D &>(*this))->get_UseExistingKey(&value));
    return value;
}

template <typename D> void impl_ICertificateRequestProperties3<D>::UseExistingKey(bool value) const
{
    check_hresult(static_cast<const ICertificateRequestProperties3 &>(static_cast<const D &>(*this))->put_UseExistingKey(value));
}

template <typename D> Windows::Foundation::IAsyncOperation<hstring> impl_ICertificateEnrollmentManagerStatics<D>::CreateRequestAsync(const Windows::Security::Cryptography::Certificates::CertificateRequestProperties & request) const
{
    Windows::Foundation::IAsyncOperation<hstring> value;
    check_hresult(static_cast<const ICertificateEnrollmentManagerStatics &>(static_cast<const D &>(*this))->abi_CreateRequestAsync(get(request), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_ICertificateEnrollmentManagerStatics<D>::InstallCertificateAsync(hstring_ref certificate, Windows::Security::Cryptography::Certificates::InstallOptions installOption) const
{
    Windows::Foundation::IAsyncAction value;
    check_hresult(static_cast<const ICertificateEnrollmentManagerStatics &>(static_cast<const D &>(*this))->abi_InstallCertificateAsync(get(certificate), installOption, put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_ICertificateEnrollmentManagerStatics<D>::ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, hstring_ref friendlyName) const
{
    Windows::Foundation::IAsyncAction value;
    check_hresult(static_cast<const ICertificateEnrollmentManagerStatics &>(static_cast<const D &>(*this))->abi_ImportPfxDataAsync(get(pfxData), get(password), exportable, keyProtectionLevel, installOption, get(friendlyName), put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::UserCertificateEnrollmentManager impl_ICertificateEnrollmentManagerStatics2<D>::UserCertificateEnrollmentManager() const
{
    Windows::Security::Cryptography::Certificates::UserCertificateEnrollmentManager value { nullptr };
    check_hresult(static_cast<const ICertificateEnrollmentManagerStatics2 &>(static_cast<const D &>(*this))->get_UserCertificateEnrollmentManager(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_ICertificateEnrollmentManagerStatics2<D>::ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, hstring_ref friendlyName, hstring_ref keyStorageProvider) const
{
    Windows::Foundation::IAsyncAction value;
    check_hresult(static_cast<const ICertificateEnrollmentManagerStatics2 &>(static_cast<const D &>(*this))->abi_ImportPfxDataToKspAsync(get(pfxData), get(password), exportable, keyProtectionLevel, installOption, get(friendlyName), get(keyStorageProvider), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_ICertificateEnrollmentManagerStatics3<D>::ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, const Windows::Security::Cryptography::Certificates::PfxImportParameters & pfxImportParameters) const
{
    Windows::Foundation::IAsyncAction value;
    check_hresult(static_cast<const ICertificateEnrollmentManagerStatics3 &>(static_cast<const D &>(*this))->abi_ImportPfxDataToKspWithParametersAsync(get(pfxData), get(password), get(pfxImportParameters), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<hstring> impl_IKeyAttestationHelperStatics<D>::DecryptTpmAttestationCredentialAsync(hstring_ref credential) const
{
    Windows::Foundation::IAsyncOperation<hstring> value;
    check_hresult(static_cast<const IKeyAttestationHelperStatics &>(static_cast<const D &>(*this))->abi_DecryptTpmAttestationCredentialAsync(get(credential), put(value)));
    return value;
}

template <typename D> hstring impl_IKeyAttestationHelperStatics<D>::GetTpmAttestationCredentialId(hstring_ref credential) const
{
    hstring value;
    check_hresult(static_cast<const IKeyAttestationHelperStatics &>(static_cast<const D &>(*this))->abi_GetTpmAttestationCredentialId(get(credential), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<hstring> impl_IKeyAttestationHelperStatics2<D>::DecryptTpmAttestationCredentialAsync(hstring_ref credential, hstring_ref containerName) const
{
    Windows::Foundation::IAsyncOperation<hstring> value;
    check_hresult(static_cast<const IKeyAttestationHelperStatics2 &>(static_cast<const D &>(*this))->abi_DecryptTpmAttestationCredentialWithContainerNameAsync(get(credential), get(containerName), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> impl_ICertificateStoresStatics<D>::FindAllAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> value;
    check_hresult(static_cast<const ICertificateStoresStatics &>(static_cast<const D &>(*this))->abi_FindAllAsync(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> impl_ICertificateStoresStatics<D>::FindAllAsync(const Windows::Security::Cryptography::Certificates::CertificateQuery & query) const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> value;
    check_hresult(static_cast<const ICertificateStoresStatics &>(static_cast<const D &>(*this))->abi_FindAllWithQueryAsync(get(query), put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::CertificateStore impl_ICertificateStoresStatics<D>::TrustedRootCertificationAuthorities() const
{
    Windows::Security::Cryptography::Certificates::CertificateStore value { nullptr };
    check_hresult(static_cast<const ICertificateStoresStatics &>(static_cast<const D &>(*this))->get_TrustedRootCertificationAuthorities(put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::CertificateStore impl_ICertificateStoresStatics<D>::IntermediateCertificationAuthorities() const
{
    Windows::Security::Cryptography::Certificates::CertificateStore value { nullptr };
    check_hresult(static_cast<const ICertificateStoresStatics &>(static_cast<const D &>(*this))->get_IntermediateCertificationAuthorities(put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::CertificateStore impl_ICertificateStoresStatics<D>::GetStoreByName(hstring_ref storeName) const
{
    Windows::Security::Cryptography::Certificates::CertificateStore value { nullptr };
    check_hresult(static_cast<const ICertificateStoresStatics &>(static_cast<const D &>(*this))->abi_GetStoreByName(get(storeName), put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::UserCertificateStore impl_ICertificateStoresStatics2<D>::GetUserStoreByName(hstring_ref storeName) const
{
    Windows::Security::Cryptography::Certificates::UserCertificateStore result { nullptr };
    check_hresult(static_cast<const ICertificateStoresStatics2 &>(static_cast<const D &>(*this))->abi_GetUserStoreByName(get(storeName), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncOperation<hstring> impl_IUserCertificateEnrollmentManager<D>::CreateRequestAsync(const Windows::Security::Cryptography::Certificates::CertificateRequestProperties & request) const
{
    Windows::Foundation::IAsyncOperation<hstring> value;
    check_hresult(static_cast<const IUserCertificateEnrollmentManager &>(static_cast<const D &>(*this))->abi_CreateRequestAsync(get(request), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IUserCertificateEnrollmentManager<D>::InstallCertificateAsync(hstring_ref certificate, Windows::Security::Cryptography::Certificates::InstallOptions installOption) const
{
    Windows::Foundation::IAsyncAction value;
    check_hresult(static_cast<const IUserCertificateEnrollmentManager &>(static_cast<const D &>(*this))->abi_InstallCertificateAsync(get(certificate), installOption, put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IUserCertificateEnrollmentManager<D>::ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, hstring_ref friendlyName) const
{
    Windows::Foundation::IAsyncAction value;
    check_hresult(static_cast<const IUserCertificateEnrollmentManager &>(static_cast<const D &>(*this))->abi_ImportPfxDataAsync(get(pfxData), get(password), exportable, keyProtectionLevel, installOption, get(friendlyName), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IUserCertificateEnrollmentManager<D>::ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, hstring_ref friendlyName, hstring_ref keyStorageProvider) const
{
    Windows::Foundation::IAsyncAction value;
    check_hresult(static_cast<const IUserCertificateEnrollmentManager &>(static_cast<const D &>(*this))->abi_ImportPfxDataToKspAsync(get(pfxData), get(password), exportable, keyProtectionLevel, installOption, get(friendlyName), get(keyStorageProvider), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IUserCertificateEnrollmentManager2<D>::ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, const Windows::Security::Cryptography::Certificates::PfxImportParameters & pfxImportParameters) const
{
    Windows::Foundation::IAsyncAction value;
    check_hresult(static_cast<const IUserCertificateEnrollmentManager2 &>(static_cast<const D &>(*this))->abi_ImportPfxDataToKspWithParametersAsync(get(pfxData), get(password), get(pfxImportParameters), put(value)));
    return value;
}

template <typename D> void impl_ICertificateStore<D>::Add(const Windows::Security::Cryptography::Certificates::Certificate & certificate) const
{
    check_hresult(static_cast<const ICertificateStore &>(static_cast<const D &>(*this))->abi_Add(get(certificate)));
}

template <typename D> void impl_ICertificateStore<D>::Delete(const Windows::Security::Cryptography::Certificates::Certificate & certificate) const
{
    check_hresult(static_cast<const ICertificateStore &>(static_cast<const D &>(*this))->abi_Delete(get(certificate)));
}

template <typename D> hstring impl_ICertificateStore2<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateStore2 &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<bool> impl_IUserCertificateStore<D>::RequestAddAsync(const Windows::Security::Cryptography::Certificates::Certificate & certificate) const
{
    Windows::Foundation::IAsyncOperation<bool> result;
    check_hresult(static_cast<const IUserCertificateStore &>(static_cast<const D &>(*this))->abi_RequestAddAsync(get(certificate), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncOperation<bool> impl_IUserCertificateStore<D>::RequestDeleteAsync(const Windows::Security::Cryptography::Certificates::Certificate & certificate) const
{
    Windows::Foundation::IAsyncOperation<bool> result;
    check_hresult(static_cast<const IUserCertificateStore &>(static_cast<const D &>(*this))->abi_RequestDeleteAsync(get(certificate), put(result)));
    return result;
}

template <typename D> hstring impl_IUserCertificateStore<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const IUserCertificateStore &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> hstring impl_IStandardCertificateStoreNamesStatics<D>::Personal() const
{
    hstring value;
    check_hresult(static_cast<const IStandardCertificateStoreNamesStatics &>(static_cast<const D &>(*this))->get_Personal(put(value)));
    return value;
}

template <typename D> hstring impl_IStandardCertificateStoreNamesStatics<D>::TrustedRootCertificationAuthorities() const
{
    hstring value;
    check_hresult(static_cast<const IStandardCertificateStoreNamesStatics &>(static_cast<const D &>(*this))->get_TrustedRootCertificationAuthorities(put(value)));
    return value;
}

template <typename D> hstring impl_IStandardCertificateStoreNamesStatics<D>::IntermediateCertificationAuthorities() const
{
    hstring value;
    check_hresult(static_cast<const IStandardCertificateStoreNamesStatics &>(static_cast<const D &>(*this))->get_IntermediateCertificationAuthorities(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyAlgorithmNamesStatics<D>::Rsa() const
{
    hstring value;
    check_hresult(static_cast<const IKeyAlgorithmNamesStatics &>(static_cast<const D &>(*this))->get_Rsa(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyAlgorithmNamesStatics<D>::Dsa() const
{
    hstring value;
    check_hresult(static_cast<const IKeyAlgorithmNamesStatics &>(static_cast<const D &>(*this))->get_Dsa(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyAlgorithmNamesStatics<D>::Ecdh256() const
{
    hstring value;
    check_hresult(static_cast<const IKeyAlgorithmNamesStatics &>(static_cast<const D &>(*this))->get_Ecdh256(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyAlgorithmNamesStatics<D>::Ecdh384() const
{
    hstring value;
    check_hresult(static_cast<const IKeyAlgorithmNamesStatics &>(static_cast<const D &>(*this))->get_Ecdh384(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyAlgorithmNamesStatics<D>::Ecdh521() const
{
    hstring value;
    check_hresult(static_cast<const IKeyAlgorithmNamesStatics &>(static_cast<const D &>(*this))->get_Ecdh521(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyAlgorithmNamesStatics<D>::Ecdsa256() const
{
    hstring value;
    check_hresult(static_cast<const IKeyAlgorithmNamesStatics &>(static_cast<const D &>(*this))->get_Ecdsa256(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyAlgorithmNamesStatics<D>::Ecdsa384() const
{
    hstring value;
    check_hresult(static_cast<const IKeyAlgorithmNamesStatics &>(static_cast<const D &>(*this))->get_Ecdsa384(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyAlgorithmNamesStatics<D>::Ecdsa521() const
{
    hstring value;
    check_hresult(static_cast<const IKeyAlgorithmNamesStatics &>(static_cast<const D &>(*this))->get_Ecdsa521(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyAlgorithmNamesStatics2<D>::Ecdsa() const
{
    hstring value;
    check_hresult(static_cast<const IKeyAlgorithmNamesStatics2 &>(static_cast<const D &>(*this))->get_Ecdsa(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyAlgorithmNamesStatics2<D>::Ecdh() const
{
    hstring value;
    check_hresult(static_cast<const IKeyAlgorithmNamesStatics2 &>(static_cast<const D &>(*this))->get_Ecdh(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyStorageProviderNamesStatics<D>::SoftwareKeyStorageProvider() const
{
    hstring value;
    check_hresult(static_cast<const IKeyStorageProviderNamesStatics &>(static_cast<const D &>(*this))->get_SoftwareKeyStorageProvider(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyStorageProviderNamesStatics<D>::SmartcardKeyStorageProvider() const
{
    hstring value;
    check_hresult(static_cast<const IKeyStorageProviderNamesStatics &>(static_cast<const D &>(*this))->get_SmartcardKeyStorageProvider(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyStorageProviderNamesStatics<D>::PlatformKeyStorageProvider() const
{
    hstring value;
    check_hresult(static_cast<const IKeyStorageProviderNamesStatics &>(static_cast<const D &>(*this))->get_PlatformKeyStorageProvider(put(value)));
    return value;
}

template <typename D> hstring impl_IKeyStorageProviderNamesStatics2<D>::PassportKeyStorageProvider() const
{
    hstring value;
    check_hresult(static_cast<const IKeyStorageProviderNamesStatics2 &>(static_cast<const D &>(*this))->get_PassportKeyStorageProvider(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVector<hstring> impl_IChainBuildingParameters<D>::EnhancedKeyUsages() const
{
    Windows::Foundation::Collections::IVector<hstring> value;
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->get_EnhancedKeyUsages(put(value)));
    return value;
}

template <typename D> Windows::Foundation::DateTime impl_IChainBuildingParameters<D>::ValidationTimestamp() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->get_ValidationTimestamp(put(value)));
    return value;
}

template <typename D> void impl_IChainBuildingParameters<D>::ValidationTimestamp(const Windows::Foundation::DateTime & value) const
{
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->put_ValidationTimestamp(get(value)));
}

template <typename D> bool impl_IChainBuildingParameters<D>::RevocationCheckEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->get_RevocationCheckEnabled(&value));
    return value;
}

template <typename D> void impl_IChainBuildingParameters<D>::RevocationCheckEnabled(bool value) const
{
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->put_RevocationCheckEnabled(value));
}

template <typename D> bool impl_IChainBuildingParameters<D>::NetworkRetrievalEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->get_NetworkRetrievalEnabled(&value));
    return value;
}

template <typename D> void impl_IChainBuildingParameters<D>::NetworkRetrievalEnabled(bool value) const
{
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->put_NetworkRetrievalEnabled(value));
}

template <typename D> bool impl_IChainBuildingParameters<D>::AuthorityInformationAccessEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->get_AuthorityInformationAccessEnabled(&value));
    return value;
}

template <typename D> void impl_IChainBuildingParameters<D>::AuthorityInformationAccessEnabled(bool value) const
{
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->put_AuthorityInformationAccessEnabled(value));
}

template <typename D> bool impl_IChainBuildingParameters<D>::CurrentTimeValidationEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->get_CurrentTimeValidationEnabled(&value));
    return value;
}

template <typename D> void impl_IChainBuildingParameters<D>::CurrentTimeValidationEnabled(bool value) const
{
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->put_CurrentTimeValidationEnabled(value));
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Security::Cryptography::Certificates::Certificate> impl_IChainBuildingParameters<D>::ExclusiveTrustRoots() const
{
    Windows::Foundation::Collections::IVector<Windows::Security::Cryptography::Certificates::Certificate> certificates;
    check_hresult(static_cast<const IChainBuildingParameters &>(static_cast<const D &>(*this))->get_ExclusiveTrustRoots(put(certificates)));
    return certificates;
}

template <typename D> Windows::Security::Cryptography::Certificates::CertificateChainPolicy impl_IChainValidationParameters<D>::CertificateChainPolicy() const
{
    Windows::Security::Cryptography::Certificates::CertificateChainPolicy value {};
    check_hresult(static_cast<const IChainValidationParameters &>(static_cast<const D &>(*this))->get_CertificateChainPolicy(&value));
    return value;
}

template <typename D> void impl_IChainValidationParameters<D>::CertificateChainPolicy(Windows::Security::Cryptography::Certificates::CertificateChainPolicy value) const
{
    check_hresult(static_cast<const IChainValidationParameters &>(static_cast<const D &>(*this))->put_CertificateChainPolicy(value));
}

template <typename D> Windows::Networking::HostName impl_IChainValidationParameters<D>::ServerDnsName() const
{
    Windows::Networking::HostName value { nullptr };
    check_hresult(static_cast<const IChainValidationParameters &>(static_cast<const D &>(*this))->get_ServerDnsName(put(value)));
    return value;
}

template <typename D> void impl_IChainValidationParameters<D>::ServerDnsName(const Windows::Networking::HostName & value) const
{
    check_hresult(static_cast<const IChainValidationParameters &>(static_cast<const D &>(*this))->put_ServerDnsName(get(value)));
}

template <typename D> Windows::Foundation::Collections::IVector<hstring> impl_ICertificateQuery<D>::EnhancedKeyUsages() const
{
    Windows::Foundation::Collections::IVector<hstring> value;
    check_hresult(static_cast<const ICertificateQuery &>(static_cast<const D &>(*this))->get_EnhancedKeyUsages(put(value)));
    return value;
}

template <typename D> hstring impl_ICertificateQuery<D>::IssuerName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateQuery &>(static_cast<const D &>(*this))->get_IssuerName(put(value)));
    return value;
}

template <typename D> void impl_ICertificateQuery<D>::IssuerName(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateQuery &>(static_cast<const D &>(*this))->put_IssuerName(get(value)));
}

template <typename D> hstring impl_ICertificateQuery<D>::FriendlyName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateQuery &>(static_cast<const D &>(*this))->get_FriendlyName(put(value)));
    return value;
}

template <typename D> void impl_ICertificateQuery<D>::FriendlyName(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateQuery &>(static_cast<const D &>(*this))->put_FriendlyName(get(value)));
}

template <typename D> com_array<uint8_t> impl_ICertificateQuery<D>::Thumbprint() const
{
    com_array<uint8_t> value {};
    check_hresult(static_cast<const ICertificateQuery &>(static_cast<const D &>(*this))->get_Thumbprint(put_size(value), put(value)));
    return value;
}

template <typename D> void impl_ICertificateQuery<D>::Thumbprint(array_ref<const uint8_t> value) const
{
    check_hresult(static_cast<const ICertificateQuery &>(static_cast<const D &>(*this))->put_Thumbprint(value.size(), get(value)));
}

template <typename D> bool impl_ICertificateQuery<D>::HardwareOnly() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateQuery &>(static_cast<const D &>(*this))->get_HardwareOnly(&value));
    return value;
}

template <typename D> void impl_ICertificateQuery<D>::HardwareOnly(bool value) const
{
    check_hresult(static_cast<const ICertificateQuery &>(static_cast<const D &>(*this))->put_HardwareOnly(value));
}

template <typename D> bool impl_ICertificateQuery2<D>::IncludeDuplicates() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateQuery2 &>(static_cast<const D &>(*this))->get_IncludeDuplicates(&value));
    return value;
}

template <typename D> void impl_ICertificateQuery2<D>::IncludeDuplicates(bool value) const
{
    check_hresult(static_cast<const ICertificateQuery2 &>(static_cast<const D &>(*this))->put_IncludeDuplicates(value));
}

template <typename D> bool impl_ICertificateQuery2<D>::IncludeExpiredCertificates() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateQuery2 &>(static_cast<const D &>(*this))->get_IncludeExpiredCertificates(&value));
    return value;
}

template <typename D> void impl_ICertificateQuery2<D>::IncludeExpiredCertificates(bool value) const
{
    check_hresult(static_cast<const ICertificateQuery2 &>(static_cast<const D &>(*this))->put_IncludeExpiredCertificates(value));
}

template <typename D> hstring impl_ICertificateQuery2<D>::StoreName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificateQuery2 &>(static_cast<const D &>(*this))->get_StoreName(put(value)));
    return value;
}

template <typename D> void impl_ICertificateQuery2<D>::StoreName(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificateQuery2 &>(static_cast<const D &>(*this))->put_StoreName(get(value)));
}

template <typename D> Windows::Security::Cryptography::Certificates::ChainValidationResult impl_ICertificateChain<D>::Validate() const
{
    Windows::Security::Cryptography::Certificates::ChainValidationResult status {};
    check_hresult(static_cast<const ICertificateChain &>(static_cast<const D &>(*this))->abi_Validate(&status));
    return status;
}

template <typename D> Windows::Security::Cryptography::Certificates::ChainValidationResult impl_ICertificateChain<D>::Validate(const Windows::Security::Cryptography::Certificates::ChainValidationParameters & parameter) const
{
    Windows::Security::Cryptography::Certificates::ChainValidationResult status {};
    check_hresult(static_cast<const ICertificateChain &>(static_cast<const D &>(*this))->abi_ValidateWithParameters(get(parameter), &status));
    return status;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> impl_ICertificateChain<D>::GetCertificates(bool includeRoot) const
{
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> certificates;
    check_hresult(static_cast<const ICertificateChain &>(static_cast<const D &>(*this))->abi_GetCertificates(includeRoot, put(certificates)));
    return certificates;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Security::Cryptography::Certificates::CertificateChain> impl_ICertificate<D>::BuildChainAsync(const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> & certificates) const
{
    Windows::Foundation::IAsyncOperation<Windows::Security::Cryptography::Certificates::CertificateChain> value;
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->abi_BuildChainAsync(get(certificates), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Security::Cryptography::Certificates::CertificateChain> impl_ICertificate<D>::BuildChainAsync(const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> & certificates, const Windows::Security::Cryptography::Certificates::ChainBuildingParameters & parameters) const
{
    Windows::Foundation::IAsyncOperation<Windows::Security::Cryptography::Certificates::CertificateChain> value;
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->abi_BuildChainWithParametersAsync(get(certificates), get(parameters), put(value)));
    return value;
}

template <typename D> com_array<uint8_t> impl_ICertificate<D>::SerialNumber() const
{
    com_array<uint8_t> value {};
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->get_SerialNumber(put_size(value), put(value)));
    return value;
}

template <typename D> com_array<uint8_t> impl_ICertificate<D>::GetHashValue() const
{
    com_array<uint8_t> value {};
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->abi_GetHashValue(put_size(value), put(value)));
    return value;
}

template <typename D> com_array<uint8_t> impl_ICertificate<D>::GetHashValue(hstring_ref hashAlgorithmName) const
{
    com_array<uint8_t> value {};
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->abi_GetHashValueWithAlgorithm(get(hashAlgorithmName), put_size(value), put(value)));
    return value;
}

template <typename D> Windows::Storage::Streams::IBuffer impl_ICertificate<D>::GetCertificateBlob() const
{
    Windows::Storage::Streams::IBuffer value;
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->abi_GetCertificateBlob(put(value)));
    return value;
}

template <typename D> hstring impl_ICertificate<D>::Subject() const
{
    hstring value;
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->get_Subject(put(value)));
    return value;
}

template <typename D> hstring impl_ICertificate<D>::Issuer() const
{
    hstring value;
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->get_Issuer(put(value)));
    return value;
}

template <typename D> bool impl_ICertificate<D>::HasPrivateKey() const
{
    bool value {};
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->get_HasPrivateKey(&value));
    return value;
}

template <typename D> bool impl_ICertificate<D>::IsStronglyProtected() const
{
    bool value {};
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->get_IsStronglyProtected(&value));
    return value;
}

template <typename D> Windows::Foundation::DateTime impl_ICertificate<D>::ValidFrom() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->get_ValidFrom(put(value)));
    return value;
}

template <typename D> Windows::Foundation::DateTime impl_ICertificate<D>::ValidTo() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->get_ValidTo(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_ICertificate<D>::EnhancedKeyUsages() const
{
    Windows::Foundation::Collections::IVectorView<hstring> value;
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->get_EnhancedKeyUsages(put(value)));
    return value;
}

template <typename D> void impl_ICertificate<D>::FriendlyName(hstring_ref value) const
{
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->put_FriendlyName(get(value)));
}

template <typename D> hstring impl_ICertificate<D>::FriendlyName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificate &>(static_cast<const D &>(*this))->get_FriendlyName(put(value)));
    return value;
}

template <typename D> bool impl_ICertificate2<D>::IsSecurityDeviceBound() const
{
    bool value {};
    check_hresult(static_cast<const ICertificate2 &>(static_cast<const D &>(*this))->get_IsSecurityDeviceBound(&value));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::CertificateKeyUsages impl_ICertificate2<D>::KeyUsages() const
{
    Windows::Security::Cryptography::Certificates::CertificateKeyUsages value { nullptr };
    check_hresult(static_cast<const ICertificate2 &>(static_cast<const D &>(*this))->get_KeyUsages(put(value)));
    return value;
}

template <typename D> hstring impl_ICertificate2<D>::KeyAlgorithmName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificate2 &>(static_cast<const D &>(*this))->get_KeyAlgorithmName(put(value)));
    return value;
}

template <typename D> hstring impl_ICertificate2<D>::SignatureAlgorithmName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificate2 &>(static_cast<const D &>(*this))->get_SignatureAlgorithmName(put(value)));
    return value;
}

template <typename D> hstring impl_ICertificate2<D>::SignatureHashAlgorithmName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificate2 &>(static_cast<const D &>(*this))->get_SignatureHashAlgorithmName(put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::SubjectAlternativeNameInfo impl_ICertificate2<D>::SubjectAlternativeName() const
{
    Windows::Security::Cryptography::Certificates::SubjectAlternativeNameInfo value { nullptr };
    check_hresult(static_cast<const ICertificate2 &>(static_cast<const D &>(*this))->get_SubjectAlternativeName(put(value)));
    return value;
}

template <typename D> bool impl_ICertificate3<D>::IsPerUser() const
{
    bool value {};
    check_hresult(static_cast<const ICertificate3 &>(static_cast<const D &>(*this))->get_IsPerUser(&value));
    return value;
}

template <typename D> hstring impl_ICertificate3<D>::StoreName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificate3 &>(static_cast<const D &>(*this))->get_StoreName(put(value)));
    return value;
}

template <typename D> hstring impl_ICertificate3<D>::KeyStorageProviderName() const
{
    hstring value;
    check_hresult(static_cast<const ICertificate3 &>(static_cast<const D &>(*this))->get_KeyStorageProviderName(put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::Certificate impl_ICertificateFactory<D>::CreateCertificate(const Windows::Storage::Streams::IBuffer & certBlob) const
{
    Windows::Security::Cryptography::Certificates::Certificate certificate { nullptr };
    check_hresult(static_cast<const ICertificateFactory &>(static_cast<const D &>(*this))->abi_CreateCertificate(get(certBlob), put(certificate)));
    return certificate;
}

template <typename D> Windows::Security::Cryptography::Certificates::Certificate impl_ICmsTimestampInfo<D>::SigningCertificate() const
{
    Windows::Security::Cryptography::Certificates::Certificate value { nullptr };
    check_hresult(static_cast<const ICmsTimestampInfo &>(static_cast<const D &>(*this))->get_SigningCertificate(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> impl_ICmsTimestampInfo<D>::Certificates() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> value;
    check_hresult(static_cast<const ICmsTimestampInfo &>(static_cast<const D &>(*this))->get_Certificates(put(value)));
    return value;
}

template <typename D> Windows::Foundation::DateTime impl_ICmsTimestampInfo<D>::Timestamp() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const ICmsTimestampInfo &>(static_cast<const D &>(*this))->get_Timestamp(put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::Certificate impl_ICmsSignerInfo<D>::Certificate() const
{
    Windows::Security::Cryptography::Certificates::Certificate value { nullptr };
    check_hresult(static_cast<const ICmsSignerInfo &>(static_cast<const D &>(*this))->get_Certificate(put(value)));
    return value;
}

template <typename D> void impl_ICmsSignerInfo<D>::Certificate(const Windows::Security::Cryptography::Certificates::Certificate & value) const
{
    check_hresult(static_cast<const ICmsSignerInfo &>(static_cast<const D &>(*this))->put_Certificate(get(value)));
}

template <typename D> hstring impl_ICmsSignerInfo<D>::HashAlgorithmName() const
{
    hstring value;
    check_hresult(static_cast<const ICmsSignerInfo &>(static_cast<const D &>(*this))->get_HashAlgorithmName(put(value)));
    return value;
}

template <typename D> void impl_ICmsSignerInfo<D>::HashAlgorithmName(hstring_ref value) const
{
    check_hresult(static_cast<const ICmsSignerInfo &>(static_cast<const D &>(*this))->put_HashAlgorithmName(get(value)));
}

template <typename D> Windows::Security::Cryptography::Certificates::CmsTimestampInfo impl_ICmsSignerInfo<D>::TimestampInfo() const
{
    Windows::Security::Cryptography::Certificates::CmsTimestampInfo value { nullptr };
    check_hresult(static_cast<const ICmsSignerInfo &>(static_cast<const D &>(*this))->get_TimestampInfo(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_ISubjectAlternativeNameInfo<D>::EmailName() const
{
    Windows::Foundation::Collections::IVectorView<hstring> value;
    check_hresult(static_cast<const ISubjectAlternativeNameInfo &>(static_cast<const D &>(*this))->get_EmailName(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_ISubjectAlternativeNameInfo<D>::IPAddress() const
{
    Windows::Foundation::Collections::IVectorView<hstring> value;
    check_hresult(static_cast<const ISubjectAlternativeNameInfo &>(static_cast<const D &>(*this))->get_IPAddress(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_ISubjectAlternativeNameInfo<D>::Url() const
{
    Windows::Foundation::Collections::IVectorView<hstring> value;
    check_hresult(static_cast<const ISubjectAlternativeNameInfo &>(static_cast<const D &>(*this))->get_Url(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_ISubjectAlternativeNameInfo<D>::DnsName() const
{
    Windows::Foundation::Collections::IVectorView<hstring> value;
    check_hresult(static_cast<const ISubjectAlternativeNameInfo &>(static_cast<const D &>(*this))->get_DnsName(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_ISubjectAlternativeNameInfo<D>::DistinguishedName() const
{
    Windows::Foundation::Collections::IVectorView<hstring> value;
    check_hresult(static_cast<const ISubjectAlternativeNameInfo &>(static_cast<const D &>(*this))->get_DistinguishedName(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_ISubjectAlternativeNameInfo<D>::PrincipalName() const
{
    Windows::Foundation::Collections::IVectorView<hstring> value;
    check_hresult(static_cast<const ISubjectAlternativeNameInfo &>(static_cast<const D &>(*this))->get_PrincipalName(put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::ExportOption impl_IPfxImportParameters<D>::Exportable() const
{
    Windows::Security::Cryptography::Certificates::ExportOption value {};
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->get_Exportable(&value));
    return value;
}

template <typename D> void impl_IPfxImportParameters<D>::Exportable(Windows::Security::Cryptography::Certificates::ExportOption value) const
{
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->put_Exportable(value));
}

template <typename D> Windows::Security::Cryptography::Certificates::KeyProtectionLevel impl_IPfxImportParameters<D>::KeyProtectionLevel() const
{
    Windows::Security::Cryptography::Certificates::KeyProtectionLevel value {};
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->get_KeyProtectionLevel(&value));
    return value;
}

template <typename D> void impl_IPfxImportParameters<D>::KeyProtectionLevel(Windows::Security::Cryptography::Certificates::KeyProtectionLevel value) const
{
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->put_KeyProtectionLevel(value));
}

template <typename D> Windows::Security::Cryptography::Certificates::InstallOptions impl_IPfxImportParameters<D>::InstallOptions() const
{
    Windows::Security::Cryptography::Certificates::InstallOptions value {};
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->get_InstallOptions(&value));
    return value;
}

template <typename D> void impl_IPfxImportParameters<D>::InstallOptions(Windows::Security::Cryptography::Certificates::InstallOptions value) const
{
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->put_InstallOptions(value));
}

template <typename D> hstring impl_IPfxImportParameters<D>::FriendlyName() const
{
    hstring value;
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->get_FriendlyName(put(value)));
    return value;
}

template <typename D> void impl_IPfxImportParameters<D>::FriendlyName(hstring_ref value) const
{
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->put_FriendlyName(get(value)));
}

template <typename D> hstring impl_IPfxImportParameters<D>::KeyStorageProviderName() const
{
    hstring value;
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->get_KeyStorageProviderName(put(value)));
    return value;
}

template <typename D> void impl_IPfxImportParameters<D>::KeyStorageProviderName(hstring_ref value) const
{
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->put_KeyStorageProviderName(get(value)));
}

template <typename D> hstring impl_IPfxImportParameters<D>::ContainerNamePrefix() const
{
    hstring value;
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->get_ContainerNamePrefix(put(value)));
    return value;
}

template <typename D> void impl_IPfxImportParameters<D>::ContainerNamePrefix(hstring_ref value) const
{
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->put_ContainerNamePrefix(get(value)));
}

template <typename D> hstring impl_IPfxImportParameters<D>::ReaderName() const
{
    hstring value;
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->get_ReaderName(put(value)));
    return value;
}

template <typename D> void impl_IPfxImportParameters<D>::ReaderName(hstring_ref value) const
{
    check_hresult(static_cast<const IPfxImportParameters &>(static_cast<const D &>(*this))->put_ReaderName(get(value)));
}

template <typename D> bool impl_ICertificateKeyUsages<D>::EncipherOnly() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->get_EncipherOnly(&value));
    return value;
}

template <typename D> void impl_ICertificateKeyUsages<D>::EncipherOnly(bool value) const
{
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->put_EncipherOnly(value));
}

template <typename D> bool impl_ICertificateKeyUsages<D>::CrlSign() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->get_CrlSign(&value));
    return value;
}

template <typename D> void impl_ICertificateKeyUsages<D>::CrlSign(bool value) const
{
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->put_CrlSign(value));
}

template <typename D> bool impl_ICertificateKeyUsages<D>::KeyCertificateSign() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->get_KeyCertificateSign(&value));
    return value;
}

template <typename D> void impl_ICertificateKeyUsages<D>::KeyCertificateSign(bool value) const
{
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->put_KeyCertificateSign(value));
}

template <typename D> bool impl_ICertificateKeyUsages<D>::KeyAgreement() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->get_KeyAgreement(&value));
    return value;
}

template <typename D> void impl_ICertificateKeyUsages<D>::KeyAgreement(bool value) const
{
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->put_KeyAgreement(value));
}

template <typename D> bool impl_ICertificateKeyUsages<D>::DataEncipherment() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->get_DataEncipherment(&value));
    return value;
}

template <typename D> void impl_ICertificateKeyUsages<D>::DataEncipherment(bool value) const
{
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->put_DataEncipherment(value));
}

template <typename D> bool impl_ICertificateKeyUsages<D>::KeyEncipherment() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->get_KeyEncipherment(&value));
    return value;
}

template <typename D> void impl_ICertificateKeyUsages<D>::KeyEncipherment(bool value) const
{
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->put_KeyEncipherment(value));
}

template <typename D> bool impl_ICertificateKeyUsages<D>::NonRepudiation() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->get_NonRepudiation(&value));
    return value;
}

template <typename D> void impl_ICertificateKeyUsages<D>::NonRepudiation(bool value) const
{
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->put_NonRepudiation(value));
}

template <typename D> bool impl_ICertificateKeyUsages<D>::DigitalSignature() const
{
    bool value {};
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->get_DigitalSignature(&value));
    return value;
}

template <typename D> void impl_ICertificateKeyUsages<D>::DigitalSignature(bool value) const
{
    check_hresult(static_cast<const ICertificateKeyUsages &>(static_cast<const D &>(*this))->put_DigitalSignature(value));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> impl_ICmsAttachedSignature<D>::Certificates() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> value;
    check_hresult(static_cast<const ICmsAttachedSignature &>(static_cast<const D &>(*this))->get_Certificates(put(value)));
    return value;
}

template <typename D> com_array<uint8_t> impl_ICmsAttachedSignature<D>::Content() const
{
    com_array<uint8_t> value {};
    check_hresult(static_cast<const ICmsAttachedSignature &>(static_cast<const D &>(*this))->get_Content(put_size(value), put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::CmsSignerInfo> impl_ICmsAttachedSignature<D>::Signers() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::CmsSignerInfo> value;
    check_hresult(static_cast<const ICmsAttachedSignature &>(static_cast<const D &>(*this))->get_Signers(put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::SignatureValidationResult impl_ICmsAttachedSignature<D>::VerifySignature() const
{
    Windows::Security::Cryptography::Certificates::SignatureValidationResult value {};
    check_hresult(static_cast<const ICmsAttachedSignature &>(static_cast<const D &>(*this))->abi_VerifySignature(&value));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::CmsAttachedSignature impl_ICmsAttachedSignatureFactory<D>::CreateCmsAttachedSignature(const Windows::Storage::Streams::IBuffer & inputBlob) const
{
    Windows::Security::Cryptography::Certificates::CmsAttachedSignature cmsSignedData { nullptr };
    check_hresult(static_cast<const ICmsAttachedSignatureFactory &>(static_cast<const D &>(*this))->abi_CreateCmsAttachedSignature(get(inputBlob), put(cmsSignedData)));
    return cmsSignedData;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> impl_ICmsAttachedSignatureStatics<D>::GenerateSignatureAsync(const Windows::Storage::Streams::IBuffer & data, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo> & signers, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> & certificates) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> outputBlob;
    check_hresult(static_cast<const ICmsAttachedSignatureStatics &>(static_cast<const D &>(*this))->abi_GenerateSignatureAsync(get(data), get(signers), get(certificates), put(outputBlob)));
    return outputBlob;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> impl_ICmsDetachedSignature<D>::Certificates() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> value;
    check_hresult(static_cast<const ICmsDetachedSignature &>(static_cast<const D &>(*this))->get_Certificates(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::CmsSignerInfo> impl_ICmsDetachedSignature<D>::Signers() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::CmsSignerInfo> value;
    check_hresult(static_cast<const ICmsDetachedSignature &>(static_cast<const D &>(*this))->get_Signers(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Cryptography::Certificates::SignatureValidationResult> impl_ICmsDetachedSignature<D>::VerifySignatureAsync(const Windows::Storage::Streams::IInputStream & data) const
{
    Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Cryptography::Certificates::SignatureValidationResult> value;
    check_hresult(static_cast<const ICmsDetachedSignature &>(static_cast<const D &>(*this))->abi_VerifySignatureAsync(get(data), put(value)));
    return value;
}

template <typename D> Windows::Security::Cryptography::Certificates::CmsDetachedSignature impl_ICmsDetachedSignatureFactory<D>::CreateCmsDetachedSignature(const Windows::Storage::Streams::IBuffer & inputBlob) const
{
    Windows::Security::Cryptography::Certificates::CmsDetachedSignature cmsSignedData { nullptr };
    check_hresult(static_cast<const ICmsDetachedSignatureFactory &>(static_cast<const D &>(*this))->abi_CreateCmsDetachedSignature(get(inputBlob), put(cmsSignedData)));
    return cmsSignedData;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> impl_ICmsDetachedSignatureStatics<D>::GenerateSignatureAsync(const Windows::Storage::Streams::IInputStream & data, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo> & signers, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> & certificates) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> outputBlob;
    check_hresult(static_cast<const ICmsDetachedSignatureStatics &>(static_cast<const D &>(*this))->abi_GenerateSignatureAsync(get(data), get(signers), get(certificates), put(outputBlob)));
    return outputBlob;
}

inline Certificate::Certificate(const Windows::Storage::Streams::IBuffer & certBlob) :
    Certificate(get_activation_factory<Certificate, ICertificateFactory>().CreateCertificate(certBlob))
{}

inline Windows::Foundation::IAsyncOperation<hstring> CertificateEnrollmentManager::CreateRequestAsync(const Windows::Security::Cryptography::Certificates::CertificateRequestProperties & request)
{
    return get_activation_factory<CertificateEnrollmentManager, ICertificateEnrollmentManagerStatics>().CreateRequestAsync(request);
}

inline Windows::Foundation::IAsyncAction CertificateEnrollmentManager::InstallCertificateAsync(hstring_ref certificate, Windows::Security::Cryptography::Certificates::InstallOptions installOption)
{
    return get_activation_factory<CertificateEnrollmentManager, ICertificateEnrollmentManagerStatics>().InstallCertificateAsync(certificate, installOption);
}

inline Windows::Foundation::IAsyncAction CertificateEnrollmentManager::ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, hstring_ref friendlyName)
{
    return get_activation_factory<CertificateEnrollmentManager, ICertificateEnrollmentManagerStatics>().ImportPfxDataAsync(pfxData, password, exportable, keyProtectionLevel, installOption, friendlyName);
}

inline Windows::Security::Cryptography::Certificates::UserCertificateEnrollmentManager CertificateEnrollmentManager::UserCertificateEnrollmentManager()
{
    return get_activation_factory<CertificateEnrollmentManager, ICertificateEnrollmentManagerStatics2>().UserCertificateEnrollmentManager();
}

inline Windows::Foundation::IAsyncAction CertificateEnrollmentManager::ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, Windows::Security::Cryptography::Certificates::ExportOption exportable, Windows::Security::Cryptography::Certificates::KeyProtectionLevel keyProtectionLevel, Windows::Security::Cryptography::Certificates::InstallOptions installOption, hstring_ref friendlyName, hstring_ref keyStorageProvider)
{
    return get_activation_factory<CertificateEnrollmentManager, ICertificateEnrollmentManagerStatics2>().ImportPfxDataAsync(pfxData, password, exportable, keyProtectionLevel, installOption, friendlyName, keyStorageProvider);
}

inline Windows::Foundation::IAsyncAction CertificateEnrollmentManager::ImportPfxDataAsync(hstring_ref pfxData, hstring_ref password, const Windows::Security::Cryptography::Certificates::PfxImportParameters & pfxImportParameters)
{
    return get_activation_factory<CertificateEnrollmentManager, ICertificateEnrollmentManagerStatics3>().ImportPfxDataAsync(pfxData, password, pfxImportParameters);
}

inline CertificateKeyUsages::CertificateKeyUsages() :
    CertificateKeyUsages(activate_instance<CertificateKeyUsages>())
{}

inline CertificateQuery::CertificateQuery() :
    CertificateQuery(activate_instance<CertificateQuery>())
{}

inline CertificateRequestProperties::CertificateRequestProperties() :
    CertificateRequestProperties(activate_instance<CertificateRequestProperties>())
{}

inline Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> CertificateStores::FindAllAsync()
{
    return get_activation_factory<CertificateStores, ICertificateStoresStatics>().FindAllAsync();
}

inline Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> CertificateStores::FindAllAsync(const Windows::Security::Cryptography::Certificates::CertificateQuery & query)
{
    return get_activation_factory<CertificateStores, ICertificateStoresStatics>().FindAllAsync(query);
}

inline Windows::Security::Cryptography::Certificates::CertificateStore CertificateStores::TrustedRootCertificationAuthorities()
{
    return get_activation_factory<CertificateStores, ICertificateStoresStatics>().TrustedRootCertificationAuthorities();
}

inline Windows::Security::Cryptography::Certificates::CertificateStore CertificateStores::IntermediateCertificationAuthorities()
{
    return get_activation_factory<CertificateStores, ICertificateStoresStatics>().IntermediateCertificationAuthorities();
}

inline Windows::Security::Cryptography::Certificates::CertificateStore CertificateStores::GetStoreByName(hstring_ref storeName)
{
    return get_activation_factory<CertificateStores, ICertificateStoresStatics>().GetStoreByName(storeName);
}

inline Windows::Security::Cryptography::Certificates::UserCertificateStore CertificateStores::GetUserStoreByName(hstring_ref storeName)
{
    return get_activation_factory<CertificateStores, ICertificateStoresStatics2>().GetUserStoreByName(storeName);
}

inline ChainBuildingParameters::ChainBuildingParameters() :
    ChainBuildingParameters(activate_instance<ChainBuildingParameters>())
{}

inline ChainValidationParameters::ChainValidationParameters() :
    ChainValidationParameters(activate_instance<ChainValidationParameters>())
{}

inline CmsAttachedSignature::CmsAttachedSignature(const Windows::Storage::Streams::IBuffer & inputBlob) :
    CmsAttachedSignature(get_activation_factory<CmsAttachedSignature, ICmsAttachedSignatureFactory>().CreateCmsAttachedSignature(inputBlob))
{}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> CmsAttachedSignature::GenerateSignatureAsync(const Windows::Storage::Streams::IBuffer & data, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo> & signers, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> & certificates)
{
    return get_activation_factory<CmsAttachedSignature, ICmsAttachedSignatureStatics>().GenerateSignatureAsync(data, signers, certificates);
}

inline CmsDetachedSignature::CmsDetachedSignature(const Windows::Storage::Streams::IBuffer & inputBlob) :
    CmsDetachedSignature(get_activation_factory<CmsDetachedSignature, ICmsDetachedSignatureFactory>().CreateCmsDetachedSignature(inputBlob))
{}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> CmsDetachedSignature::GenerateSignatureAsync(const Windows::Storage::Streams::IInputStream & data, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::CmsSignerInfo> & signers, const Windows::Foundation::Collections::IIterable<Windows::Security::Cryptography::Certificates::Certificate> & certificates)
{
    return get_activation_factory<CmsDetachedSignature, ICmsDetachedSignatureStatics>().GenerateSignatureAsync(data, signers, certificates);
}

inline CmsSignerInfo::CmsSignerInfo() :
    CmsSignerInfo(activate_instance<CmsSignerInfo>())
{}

inline hstring KeyAlgorithmNames::Rsa()
{
    return get_activation_factory<KeyAlgorithmNames, IKeyAlgorithmNamesStatics>().Rsa();
}

inline hstring KeyAlgorithmNames::Dsa()
{
    return get_activation_factory<KeyAlgorithmNames, IKeyAlgorithmNamesStatics>().Dsa();
}

inline hstring KeyAlgorithmNames::Ecdh256()
{
    return get_activation_factory<KeyAlgorithmNames, IKeyAlgorithmNamesStatics>().Ecdh256();
}

inline hstring KeyAlgorithmNames::Ecdh384()
{
    return get_activation_factory<KeyAlgorithmNames, IKeyAlgorithmNamesStatics>().Ecdh384();
}

inline hstring KeyAlgorithmNames::Ecdh521()
{
    return get_activation_factory<KeyAlgorithmNames, IKeyAlgorithmNamesStatics>().Ecdh521();
}

inline hstring KeyAlgorithmNames::Ecdsa256()
{
    return get_activation_factory<KeyAlgorithmNames, IKeyAlgorithmNamesStatics>().Ecdsa256();
}

inline hstring KeyAlgorithmNames::Ecdsa384()
{
    return get_activation_factory<KeyAlgorithmNames, IKeyAlgorithmNamesStatics>().Ecdsa384();
}

inline hstring KeyAlgorithmNames::Ecdsa521()
{
    return get_activation_factory<KeyAlgorithmNames, IKeyAlgorithmNamesStatics>().Ecdsa521();
}

inline hstring KeyAlgorithmNames::Ecdsa()
{
    return get_activation_factory<KeyAlgorithmNames, IKeyAlgorithmNamesStatics2>().Ecdsa();
}

inline hstring KeyAlgorithmNames::Ecdh()
{
    return get_activation_factory<KeyAlgorithmNames, IKeyAlgorithmNamesStatics2>().Ecdh();
}

inline Windows::Foundation::IAsyncOperation<hstring> KeyAttestationHelper::DecryptTpmAttestationCredentialAsync(hstring_ref credential)
{
    return get_activation_factory<KeyAttestationHelper, IKeyAttestationHelperStatics>().DecryptTpmAttestationCredentialAsync(credential);
}

inline hstring KeyAttestationHelper::GetTpmAttestationCredentialId(hstring_ref credential)
{
    return get_activation_factory<KeyAttestationHelper, IKeyAttestationHelperStatics>().GetTpmAttestationCredentialId(credential);
}

inline Windows::Foundation::IAsyncOperation<hstring> KeyAttestationHelper::DecryptTpmAttestationCredentialAsync(hstring_ref credential, hstring_ref containerName)
{
    return get_activation_factory<KeyAttestationHelper, IKeyAttestationHelperStatics2>().DecryptTpmAttestationCredentialAsync(credential, containerName);
}

inline hstring KeyStorageProviderNames::SoftwareKeyStorageProvider()
{
    return get_activation_factory<KeyStorageProviderNames, IKeyStorageProviderNamesStatics>().SoftwareKeyStorageProvider();
}

inline hstring KeyStorageProviderNames::SmartcardKeyStorageProvider()
{
    return get_activation_factory<KeyStorageProviderNames, IKeyStorageProviderNamesStatics>().SmartcardKeyStorageProvider();
}

inline hstring KeyStorageProviderNames::PlatformKeyStorageProvider()
{
    return get_activation_factory<KeyStorageProviderNames, IKeyStorageProviderNamesStatics>().PlatformKeyStorageProvider();
}

inline hstring KeyStorageProviderNames::PassportKeyStorageProvider()
{
    return get_activation_factory<KeyStorageProviderNames, IKeyStorageProviderNamesStatics2>().PassportKeyStorageProvider();
}

inline PfxImportParameters::PfxImportParameters() :
    PfxImportParameters(activate_instance<PfxImportParameters>())
{}

inline hstring StandardCertificateStoreNames::Personal()
{
    return get_activation_factory<StandardCertificateStoreNames, IStandardCertificateStoreNamesStatics>().Personal();
}

inline hstring StandardCertificateStoreNames::TrustedRootCertificationAuthorities()
{
    return get_activation_factory<StandardCertificateStoreNames, IStandardCertificateStoreNamesStatics>().TrustedRootCertificationAuthorities();
}

inline hstring StandardCertificateStoreNames::IntermediateCertificationAuthorities()
{
    return get_activation_factory<StandardCertificateStoreNames, IStandardCertificateStoreNamesStatics>().IntermediateCertificationAuthorities();
}

inline SubjectAlternativeNameInfo::SubjectAlternativeNameInfo() :
    SubjectAlternativeNameInfo(activate_instance<SubjectAlternativeNameInfo>())
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.System.RemoteSystems.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.System.RemoteSystems.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::System::RemoteSystems {

struct WINRT_EBO RemoteSystem :
    Windows::System::RemoteSystems::IRemoteSystem
{
    RemoteSystem(std::nullptr_t) noexcept {}
    static Windows::Foundation::IAsyncOperation<Windows::System::RemoteSystems::RemoteSystem> FindByHostNameAsync(const Windows::Networking::HostName & hostName);
    static Windows::System::RemoteSystems::RemoteSystemWatcher CreateWatcher();
    static Windows::System::RemoteSystems::RemoteSystemWatcher CreateWatcher(const Windows::Foundation::Collections::IIterable<Windows::System::RemoteSystems::IRemoteSystemFilter> & filters);
    static Windows::Foundation::IAsyncOperation<winrt::Windows::System::RemoteSystems::RemoteSystemAccessStatus> RequestAccessAsync();
};

struct WINRT_EBO RemoteSystemAddedEventArgs :
    Windows::System::RemoteSystems::IRemoteSystemAddedEventArgs
{
    RemoteSystemAddedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO RemoteSystemConnectionRequest :
    Windows::System::RemoteSystems::IRemoteSystemConnectionRequest
{
    RemoteSystemConnectionRequest(std::nullptr_t) noexcept {}
    RemoteSystemConnectionRequest(const Windows::System::RemoteSystems::RemoteSystem & remoteSystem);
};

struct WINRT_EBO RemoteSystemDiscoveryTypeFilter :
    Windows::System::RemoteSystems::IRemoteSystemDiscoveryTypeFilter,
    impl::require<RemoteSystemDiscoveryTypeFilter, Windows::System::RemoteSystems::IRemoteSystemFilter>
{
    RemoteSystemDiscoveryTypeFilter(std::nullptr_t) noexcept {}
    RemoteSystemDiscoveryTypeFilter(Windows::System::RemoteSystems::RemoteSystemDiscoveryType discoveryType);
};

struct WINRT_EBO RemoteSystemKindFilter :
    Windows::System::RemoteSystems::IRemoteSystemKindFilter,
    impl::require<RemoteSystemKindFilter, Windows::System::RemoteSystems::IRemoteSystemFilter>
{
    RemoteSystemKindFilter(std::nullptr_t) noexcept {}
    RemoteSystemKindFilter(const Windows::Foundation::Collections::IIterable<hstring> & remoteSystemKinds);
};

struct RemoteSystemKinds
{
    RemoteSystemKinds() = delete;
    static hstring Phone();
    static hstring Hub();
    static hstring Holographic();
    static hstring Desktop();
    static hstring Xbox();
};

struct WINRT_EBO RemoteSystemRemovedEventArgs :
    Windows::System::RemoteSystems::IRemoteSystemRemovedEventArgs
{
    RemoteSystemRemovedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO RemoteSystemStatusTypeFilter :
    Windows::System::RemoteSystems::IRemoteSystemStatusTypeFilter,
    impl::require<RemoteSystemStatusTypeFilter, Windows::System::RemoteSystems::IRemoteSystemFilter>
{
    RemoteSystemStatusTypeFilter(std::nullptr_t) noexcept {}
    RemoteSystemStatusTypeFilter(Windows::System::RemoteSystems::RemoteSystemStatusType remoteSystemStatusType);
};

struct WINRT_EBO RemoteSystemUpdatedEventArgs :
    Windows::System::RemoteSystems::IRemoteSystemUpdatedEventArgs
{
    RemoteSystemUpdatedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO RemoteSystemWatcher :
    Windows::System::RemoteSystems::IRemoteSystemWatcher
{
    RemoteSystemWatcher(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.UI.Text.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.UI.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Storage.Streams.3.h"
#include "internal/Windows.UI.Text.3.h"
#include "Windows.UI.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::UI::Text::IFontWeights> : produce_base<D, Windows::UI::Text::IFontWeights>
{};

template <typename D>
struct produce<D, Windows::UI::Text::IFontWeightsStatics> : produce_base<D, Windows::UI::Text::IFontWeightsStatics>
{
    HRESULT __stdcall get_Black(abi_arg_out<Windows::UI::Text::FontWeight> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Black());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Bold(abi_arg_out<Windows::UI::Text::FontWeight> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Bold());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExtraBlack(abi_arg_out<Windows::UI::Text::FontWeight> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExtraBlack());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExtraBold(abi_arg_out<Windows::UI::Text::FontWeight> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExtraBold());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExtraLight(abi_arg_out<Windows::UI::Text::FontWeight> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExtraLight());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Light(abi_arg_out<Windows::UI::Text::FontWeight> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Light());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Medium(abi_arg_out<Windows::UI::Text::FontWeight> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Medium());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Normal(abi_arg_out<Windows::UI::Text::FontWeight> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Normal());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SemiBold(abi_arg_out<Windows::UI::Text::FontWeight> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SemiBold());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SemiLight(abi_arg_out<Windows::UI::Text::FontWeight> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SemiLight());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Thin(abi_arg_out<Windows::UI::Text::FontWeight> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Thin());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Text::ITextCharacterFormat> : produce_base<D, Windows::UI::Text::ITextCharacterFormat>
{
    HRESULT __stdcall get_AllCaps(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AllCaps());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AllCaps(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().AllCaps(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BackgroundColor(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BackgroundColor());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_BackgroundColor(abi_arg_in<Windows::UI::Color> value) noexcept override
    {
        try
        {
            this->shim().BackgroundColor(*reinterpret_cast<const Windows::UI::Color *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Bold(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Bold());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Bold(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().Bold(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FontStretch(Windows::UI::Text::FontStretch * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FontStretch());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FontStretch(Windows::UI::Text::FontStretch value) noexcept override
    {
        try
        {
            this->shim().FontStretch(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FontStyle(Windows::UI::Text::FontStyle * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FontStyle());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FontStyle(Windows::UI::Text::FontStyle value) noexcept override
    {
        try
        {
            this->shim().FontStyle(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ForegroundColor(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ForegroundColor());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ForegroundColor(abi_arg_in<Windows::UI::Color> value) noexcept override
    {
        try
        {
            this->shim().ForegroundColor(*reinterpret_cast<const Windows::UI::Color *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Hidden(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Hidden());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Hidden(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().Hidden(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Italic(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Italic());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Italic(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().Italic(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Kerning(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Kerning());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Kerning(float value) noexcept override
    {
        try
        {
            this->shim().Kerning(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LanguageTag(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LanguageTag());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_LanguageTag(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().LanguageTag(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LinkType(Windows::UI::Text::LinkType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LinkType());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Name(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Name(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Outline(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Outline());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Outline(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().Outline(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Position(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Position());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Position(float value) noexcept override
    {
        try
        {
            this->shim().Position(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ProtectedText(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ProtectedText());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ProtectedText(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().ProtectedText(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Size(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Size());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Size(float value) noexcept override
    {
        try
        {
            this->shim().Size(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SmallCaps(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SmallCaps());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SmallCaps(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().SmallCaps(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Spacing(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Spacing());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Spacing(float value) noexcept override
    {
        try
        {
            this->shim().Spacing(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Strikethrough(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Strikethrough());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Strikethrough(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().Strikethrough(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Subscript(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Subscript());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Subscript(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().Subscript(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Superscript(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Superscript());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Superscript(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().Superscript(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TextScript(Windows::UI::Text::TextScript * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TextScript());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_TextScript(Windows::UI::Text::TextScript value) noexcept override
    {
        try
        {
            this->shim().TextScript(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Underline(Windows::UI::Text::UnderlineType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Underline());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Underline(Windows::UI::Text::UnderlineType value) noexcept override
    {
        try
        {
            this->shim().Underline(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Weight(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Weight());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Weight(int32_t value) noexcept override
    {
        try
        {
            this->shim().Weight(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetClone(abi_arg_in<Windows::UI::Text::ITextCharacterFormat> value) noexcept override
    {
        try
        {
            this->shim().SetClone(*reinterpret_cast<const Windows::UI::Text::ITextCharacterFormat *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetClone(abi_arg_out<Windows::UI::Text::ITextCharacterFormat> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetClone());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_IsEqual(abi_arg_in<Windows::UI::Text::ITextCharacterFormat> format, bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsEqual(*reinterpret_cast<const Windows::UI::Text::ITextCharacterFormat *>(&format)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Text::ITextConstantsStatics> : produce_base<D, Windows::UI::Text::ITextConstantsStatics>
{
    HRESULT __stdcall get_AutoColor(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AutoColor());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MinUnitCount(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MinUnitCount());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaxUnitCount(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxUnitCount());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_UndefinedColor(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UndefinedColor());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_UndefinedFloatValue(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UndefinedFloatValue());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_UndefinedInt32Value(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UndefinedInt32Value());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_UndefinedFontStretch(Windows::UI::Text::FontStretch * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UndefinedFontStretch());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_UndefinedFontStyle(Windows::UI::Text::FontStyle * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UndefinedFontStyle());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Text::ITextDocument> : produce_base<D, Windows::UI::Text::ITextDocument>
{
    HRESULT __stdcall get_CaretType(Windows::UI::Text::CaretType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CaretType());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CaretType(Windows::UI::Text::CaretType value) noexcept override
    {
        try
        {
            this->shim().CaretType(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DefaultTabStop(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DefaultTabStop());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DefaultTabStop(float value) noexcept override
    {
        try
        {
            this->shim().DefaultTabStop(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Selection(abi_arg_out<Windows::UI::Text::ITextSelection> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Selection());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_UndoLimit(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UndoLimit());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_UndoLimit(uint32_t value) noexcept override
    {
        try
        {
            this->shim().UndoLimit(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CanCopy(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CanCopy());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CanPaste(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CanPaste());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CanRedo(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CanRedo());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CanUndo(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CanUndo());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ApplyDisplayUpdates(int32_t * count) noexcept override
    {
        try
        {
            *count = detach(this->shim().ApplyDisplayUpdates());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_BatchDisplayUpdates(int32_t * count) noexcept override
    {
        try
        {
            *count = detach(this->shim().BatchDisplayUpdates());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_BeginUndoGroup() noexcept override
    {
        try
        {
            this->shim().BeginUndoGroup();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EndUndoGroup() noexcept override
    {
        try
        {
            this->shim().EndUndoGroup();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDefaultCharacterFormat(abi_arg_out<Windows::UI::Text::ITextCharacterFormat> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDefaultCharacterFormat());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDefaultParagraphFormat(abi_arg_out<Windows::UI::Text::ITextParagraphFormat> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDefaultParagraphFormat());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetRange(int32_t startPosition, int32_t endPosition, abi_arg_out<Windows::UI::Text::ITextRange> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetRange(startPosition, endPosition));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetRangeFromPoint(abi_arg_in<Windows::Foundation::Point> point, Windows::UI::Text::PointOptions options, abi_arg_out<Windows::UI::Text::ITextRange> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetRangeFromPoint(*reinterpret_cast<const Windows::Foundation::Point *>(&point), options));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetText(Windows::UI::Text::TextGetOptions options, abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            this->shim().GetText(options, *value);
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_LoadFromStream(Windows::UI::Text::TextSetOptions options, abi_arg_in<Windows::Storage::Streams::IRandomAccessStream> value) noexcept override
    {
        try
        {
            this->shim().LoadFromStream(options, *reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStream *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Redo() noexcept override
    {
        try
        {
            this->shim().Redo();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SaveToStream(Windows::UI::Text::TextGetOptions options, abi_arg_in<Windows::Storage::Streams::IRandomAccessStream> value) noexcept override
    {
        try
        {
            this->shim().SaveToStream(options, *reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStream *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetDefaultCharacterFormat(abi_arg_in<Windows::UI::Text::ITextCharacterFormat> value) noexcept override
    {
        try
        {
            this->shim().SetDefaultCharacterFormat(*reinterpret_cast<const Windows::UI::Text::ITextCharacterFormat *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetDefaultParagraphFormat(abi_arg_in<Windows::UI::Text::ITextParagraphFormat> value) noexcept override
    {
        try
        {
            this->shim().SetDefaultParagraphFormat(*reinterpret_cast<const Windows::UI::Text::ITextParagraphFormat *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetText(Windows::UI::Text::TextSetOptions options, abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().SetText(options, *reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Undo() noexcept override
    {
        try
        {
            this->shim().Undo();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Text::ITextParagraphFormat> : produce_base<D, Windows::UI::Text::ITextParagraphFormat>
{
    HRESULT __stdcall get_Alignment(Windows::UI::Text::ParagraphAlignment * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Alignment());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Alignment(Windows::UI::Text::ParagraphAlignment value) noexcept override
    {
        try
        {
            this->shim().Alignment(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FirstLineIndent(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FirstLineIndent());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeepTogether(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeepTogether());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeepTogether(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().KeepTogether(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeepWithNext(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeepWithNext());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeepWithNext(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().KeepWithNext(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LeftIndent(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LeftIndent());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LineSpacing(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LineSpacing());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LineSpacingRule(Windows::UI::Text::LineSpacingRule * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LineSpacingRule());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ListAlignment(Windows::UI::Text::MarkerAlignment * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ListAlignment());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ListAlignment(Windows::UI::Text::MarkerAlignment value) noexcept override
    {
        try
        {
            this->shim().ListAlignment(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ListLevelIndex(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ListLevelIndex());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ListLevelIndex(int32_t value) noexcept override
    {
        try
        {
            this->shim().ListLevelIndex(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ListStart(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ListStart());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ListStart(int32_t value) noexcept override
    {
        try
        {
            this->shim().ListStart(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ListStyle(Windows::UI::Text::MarkerStyle * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ListStyle());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ListStyle(Windows::UI::Text::MarkerStyle value) noexcept override
    {
        try
        {
            this->shim().ListStyle(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ListTab(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ListTab());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ListTab(float value) noexcept override
    {
        try
        {
            this->shim().ListTab(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ListType(Windows::UI::Text::MarkerType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ListType());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ListType(Windows::UI::Text::MarkerType value) noexcept override
    {
        try
        {
            this->shim().ListType(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NoLineNumber(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NoLineNumber());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_NoLineNumber(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().NoLineNumber(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PageBreakBefore(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PageBreakBefore());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PageBreakBefore(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().PageBreakBefore(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RightIndent(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RightIndent());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_RightIndent(float value) noexcept override
    {
        try
        {
            this->shim().RightIndent(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RightToLeft(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RightToLeft());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_RightToLeft(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().RightToLeft(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Style(Windows::UI::Text::ParagraphStyle * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Style());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Style(Windows::UI::Text::ParagraphStyle value) noexcept override
    {
        try
        {
            this->shim().Style(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SpaceAfter(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SpaceAfter());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SpaceAfter(float value) noexcept override
    {
        try
        {
            this->shim().SpaceAfter(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SpaceBefore(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SpaceBefore());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SpaceBefore(float value) noexcept override
    {
        try
        {
            this->shim().SpaceBefore(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WidowControl(Windows::UI::Text::FormatEffect * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WidowControl());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_WidowControl(Windows::UI::Text::FormatEffect value) noexcept override
    {
        try
        {
            this->shim().WidowControl(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TabCount(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TabCount());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddTab(float position, Windows::UI::Text::TabAlignment align, Windows::UI::Text::TabLeader leader) noexcept override
    {
        try
        {
            this->shim().AddTab(position, align, leader);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ClearAllTabs() noexcept override
    {
        try
        {
            this->shim().ClearAllTabs();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_DeleteTab(float position) noexcept override
    {
        try
        {
            this->shim().DeleteTab(position);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetClone(abi_arg_out<Windows::UI::Text::ITextParagraphFormat> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetClone());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetTab(int32_t index, float * position, Windows::UI::Text::TabAlignment * align, Windows::UI::Text::TabLeader * leader) noexcept override
    {
        try
        {
            this->shim().GetTab(index, *position, *align, *leader);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_IsEqual(abi_arg_in<Windows::UI::Text::ITextParagraphFormat> format, bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsEqual(*reinterpret_cast<const Windows::UI::Text::ITextParagraphFormat *>(&format)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetClone(abi_arg_in<Windows::UI::Text::ITextParagraphFormat> format) noexcept override
    {
        try
        {
            this->shim().SetClone(*reinterpret_cast<const Windows::UI::Text::ITextParagraphFormat *>(&format));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetIndents(float start, float left, float right) noexcept override
    {
        try
        {
            this->shim().SetIndents(start, left, right);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetLineSpacing(Windows::UI::Text::LineSpacingRule rule, float spacing) noexcept override
    {
        try
        {
            this->shim().SetLineSpacing(rule, spacing);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Text::ITextRange> : produce_base<D, Windows::UI::Text::ITextRange>
{
    HRESULT __stdcall get_Character(wchar_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Character());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Character(wchar_t value) noexcept override
    {
        try
        {
            this->shim().Character(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CharacterFormat(abi_arg_out<Windows::UI::Text::ITextCharacterFormat> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CharacterFormat());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CharacterFormat(abi_arg_in<Windows::UI::Text::ITextCharacterFormat> value) noexcept override
    {
        try
        {
            this->shim().CharacterFormat(*reinterpret_cast<const Windows::UI::Text::ITextCharacterFormat *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FormattedText(abi_arg_out<Windows::UI::Text::ITextRange> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FormattedText());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FormattedText(abi_arg_in<Windows::UI::Text::ITextRange> value) noexcept override
    {
        try
        {
            this->shim().FormattedText(*reinterpret_cast<const Windows::UI::Text::ITextRange *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EndPosition(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EndPosition());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_EndPosition(int32_t value) noexcept override
    {
        try
        {
            this->shim().EndPosition(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Gravity(Windows::UI::Text::RangeGravity * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Gravity());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Gravity(Windows::UI::Text::RangeGravity value) noexcept override
    {
        try
        {
            this->shim().Gravity(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Length(int32_t * length) noexcept override
    {
        try
        {
            *length = detach(this->shim().Length());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Link(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Link());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Link(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Link(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ParagraphFormat(abi_arg_out<Windows::UI::Text::ITextParagraphFormat> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ParagraphFormat());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ParagraphFormat(abi_arg_in<Windows::UI::Text::ITextParagraphFormat> value) noexcept override
    {
        try
        {
            this->shim().ParagraphFormat(*reinterpret_cast<const Windows::UI::Text::ITextParagraphFormat *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_StartPosition(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().StartPosition());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_StartPosition(int32_t value) noexcept override
    {
        try
        {
            this->shim().StartPosition(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_StoryLength(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().StoryLength());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Text(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Text());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Text(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Text(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CanPaste(int32_t format, bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CanPaste(format));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ChangeCase(Windows::UI::Text::LetterCase value) noexcept override
    {
        try
        {
            this->shim().ChangeCase(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Collapse(bool value) noexcept override
    {
        try
        {
            this->shim().Collapse(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Copy() noexcept override
    {
        try
        {
            this->shim().Copy();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Cut() noexcept override
    {
        try
        {
            this->shim().Cut();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Delete(Windows::UI::Text::TextRangeUnit unit, int32_t count, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().Delete(unit, count));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EndOf(Windows::UI::Text::TextRangeUnit unit, bool extend, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().EndOf(unit, extend));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Expand(Windows::UI::Text::TextRangeUnit unit, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().Expand(unit));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_FindText(abi_arg_in<hstring> value, int32_t scanLength, Windows::UI::Text::FindOptions options, int32_t * length) noexcept override
    {
        try
        {
            *length = detach(this->shim().FindText(*reinterpret_cast<const hstring *>(&value), scanLength, options));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetCharacterUtf32(uint32_t * value, int32_t offset) noexcept override
    {
        try
        {
            this->shim().GetCharacterUtf32(*value, offset);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetClone(abi_arg_out<Windows::UI::Text::ITextRange> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetClone());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetIndex(Windows::UI::Text::TextRangeUnit unit, int32_t * index) noexcept override
    {
        try
        {
            *index = detach(this->shim().GetIndex(unit));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetPoint(Windows::UI::Text::HorizontalCharacterAlignment horizontalAlign, Windows::UI::Text::VerticalCharacterAlignment verticalAlign, Windows::UI::Text::PointOptions options, abi_arg_out<Windows::Foundation::Point> point) noexcept override
    {
        try
        {
            this->shim().GetPoint(horizontalAlign, verticalAlign, options, *point);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetRect(Windows::UI::Text::PointOptions options, abi_arg_out<Windows::Foundation::Rect> rect, int32_t * hit) noexcept override
    {
        try
        {
            this->shim().GetRect(options, *rect, *hit);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetText(Windows::UI::Text::TextGetOptions options, abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            this->shim().GetText(options, *value);
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetTextViaStream(Windows::UI::Text::TextGetOptions options, abi_arg_in<Windows::Storage::Streams::IRandomAccessStream> value) noexcept override
    {
        try
        {
            this->shim().GetTextViaStream(options, *reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStream *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_InRange(abi_arg_in<Windows::UI::Text::ITextRange> range, bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InRange(*reinterpret_cast<const Windows::UI::Text::ITextRange *>(&range)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_InsertImage(int32_t width, int32_t height, int32_t ascent, Windows::UI::Text::VerticalCharacterAlignment verticalAlign, abi_arg_in<hstring> alternateText, abi_arg_in<Windows::Storage::Streams::IRandomAccessStream> value) noexcept override
    {
        try
        {
            this->shim().InsertImage(width, height, ascent, verticalAlign, *reinterpret_cast<const hstring *>(&alternateText), *reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStream *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_InStory(abi_arg_in<Windows::UI::Text::ITextRange> range, bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InStory(*reinterpret_cast<const Windows::UI::Text::ITextRange *>(&range)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_IsEqual(abi_arg_in<Windows::UI::Text::ITextRange> range, bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsEqual(*reinterpret_cast<const Windows::UI::Text::ITextRange *>(&range)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Move(Windows::UI::Text::TextRangeUnit unit, int32_t count, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().Move(unit, count));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MoveEnd(Windows::UI::Text::TextRangeUnit unit, int32_t count, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().MoveEnd(unit, count));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MoveStart(Windows::UI::Text::TextRangeUnit unit, int32_t count, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().MoveStart(unit, count));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Paste(int32_t format) noexcept override
    {
        try
        {
            this->shim().Paste(format);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ScrollIntoView(Windows::UI::Text::PointOptions value) noexcept override
    {
        try
        {
            this->shim().ScrollIntoView(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MatchSelection() noexcept override
    {
        try
        {
            this->shim().MatchSelection();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetIndex(Windows::UI::Text::TextRangeUnit unit, int32_t index, bool extend) noexcept override
    {
        try
        {
            this->shim().SetIndex(unit, index, extend);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetPoint(abi_arg_in<Windows::Foundation::Point> point, Windows::UI::Text::PointOptions options, bool extend) noexcept override
    {
        try
        {
            this->shim().SetPoint(*reinterpret_cast<const Windows::Foundation::Point *>(&point), options, extend);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetRange(int32_t startPosition, int32_t endPosition) noexcept override
    {
        try
        {
            this->shim().SetRange(startPosition, endPosition);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetText(Windows::UI::Text::TextSetOptions options, abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().SetText(options, *reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetTextViaStream(Windows::UI::Text::TextSetOptions options, abi_arg_in<Windows::Storage::Streams::IRandomAccessStream> value) noexcept override
    {
        try
        {
            this->shim().SetTextViaStream(options, *reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStream *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_StartOf(Windows::UI::Text::TextRangeUnit unit, bool extend, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().StartOf(unit, extend));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::UI::Text::ITextSelection> : produce_base<D, Windows::UI::Text::ITextSelection>
{
    HRESULT __stdcall get_Options(Windows::UI::Text::SelectionOptions * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Options());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Options(Windows::UI::Text::SelectionOptions value) noexcept override
    {
        try
        {
            this->shim().Options(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Type(Windows::UI::Text::SelectionType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Type());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EndKey(Windows::UI::Text::TextRangeUnit unit, bool extend, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().EndKey(unit, extend));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_HomeKey(Windows::UI::Text::TextRangeUnit unit, bool extend, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().HomeKey(unit, extend));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MoveDown(Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().MoveDown(unit, count, extend));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MoveLeft(Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().MoveLeft(unit, count, extend));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MoveRight(Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().MoveRight(unit, count, extend));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MoveUp(Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend, int32_t * delta) noexcept override
    {
        try
        {
            *delta = detach(this->shim().MoveUp(unit, count, extend));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TypeText(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().TypeText(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::UI::Text {

template <typename D> Windows::UI::Color impl_ITextConstantsStatics<D>::AutoColor() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const ITextConstantsStatics &>(static_cast<const D &>(*this))->get_AutoColor(put(value)));
    return value;
}

template <typename D> int32_t impl_ITextConstantsStatics<D>::MinUnitCount() const
{
    int32_t value {};
    check_hresult(static_cast<const ITextConstantsStatics &>(static_cast<const D &>(*this))->get_MinUnitCount(&value));
    return value;
}

template <typename D> int32_t impl_ITextConstantsStatics<D>::MaxUnitCount() const
{
    int32_t value {};
    check_hresult(static_cast<const ITextConstantsStatics &>(static_cast<const D &>(*this))->get_MaxUnitCount(&value));
    return value;
}

template <typename D> Windows::UI::Color impl_ITextConstantsStatics<D>::UndefinedColor() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const ITextConstantsStatics &>(static_cast<const D &>(*this))->get_UndefinedColor(put(value)));
    return value;
}

template <typename D> float impl_ITextConstantsStatics<D>::UndefinedFloatValue() const
{
    float value {};
    check_hresult(static_cast<const ITextConstantsStatics &>(static_cast<const D &>(*this))->get_UndefinedFloatValue(&value));
    return value;
}

template <typename D> int32_t impl_ITextConstantsStatics<D>::UndefinedInt32Value() const
{
    int32_t value {};
    check_hresult(static_cast<const ITextConstantsStatics &>(static_cast<const D &>(*this))->get_UndefinedInt32Value(&value));
    return value;
}

template <typename D> Windows::UI::Text::FontStretch impl_ITextConstantsStatics<D>::UndefinedFontStretch() const
{
    Windows::UI::Text::FontStretch value {};
    check_hresult(static_cast<const ITextConstantsStatics &>(static_cast<const D &>(*this))->get_UndefinedFontStretch(&value));
    return value;
}

template <typename D> Windows::UI::Text::FontStyle impl_ITextConstantsStatics<D>::UndefinedFontStyle() const
{
    Windows::UI::Text::FontStyle value {};
    check_hresult(static_cast<const ITextConstantsStatics &>(static_cast<const D &>(*this))->get_UndefinedFontStyle(&value));
    return value;
}

template <typename D> Windows::UI::Text::CaretType impl_ITextDocument<D>::CaretType() const
{
    Windows::UI::Text::CaretType value {};
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->get_CaretType(&value));
    return value;
}

template <typename D> void impl_ITextDocument<D>::CaretType(Windows::UI::Text::CaretType value) const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->put_CaretType(value));
}

template <typename D> float impl_ITextDocument<D>::DefaultTabStop() const
{
    float value {};
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->get_DefaultTabStop(&value));
    return value;
}

template <typename D> void impl_ITextDocument<D>::DefaultTabStop(float value) const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->put_DefaultTabStop(value));
}

template <typename D> Windows::UI::Text::ITextSelection impl_ITextDocument<D>::Selection() const
{
    Windows::UI::Text::ITextSelection value;
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->get_Selection(put(value)));
    return value;
}

template <typename D> uint32_t impl_ITextDocument<D>::UndoLimit() const
{
    uint32_t value {};
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->get_UndoLimit(&value));
    return value;
}

template <typename D> void impl_ITextDocument<D>::UndoLimit(uint32_t value) const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->put_UndoLimit(value));
}

template <typename D> bool impl_ITextDocument<D>::CanCopy() const
{
    bool value {};
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_CanCopy(&value));
    return value;
}

template <typename D> bool impl_ITextDocument<D>::CanPaste() const
{
    bool value {};
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_CanPaste(&value));
    return value;
}

template <typename D> bool impl_ITextDocument<D>::CanRedo() const
{
    bool value {};
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_CanRedo(&value));
    return value;
}

template <typename D> bool impl_ITextDocument<D>::CanUndo() const
{
    bool value {};
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_CanUndo(&value));
    return value;
}

template <typename D> int32_t impl_ITextDocument<D>::ApplyDisplayUpdates() const
{
    int32_t count {};
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_ApplyDisplayUpdates(&count));
    return count;
}

template <typename D> int32_t impl_ITextDocument<D>::BatchDisplayUpdates() const
{
    int32_t count {};
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_BatchDisplayUpdates(&count));
    return count;
}

template <typename D> void impl_ITextDocument<D>::BeginUndoGroup() const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_BeginUndoGroup());
}

template <typename D> void impl_ITextDocument<D>::EndUndoGroup() const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_EndUndoGroup());
}

template <typename D> Windows::UI::Text::ITextCharacterFormat impl_ITextDocument<D>::GetDefaultCharacterFormat() const
{
    Windows::UI::Text::ITextCharacterFormat value;
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_GetDefaultCharacterFormat(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::ITextParagraphFormat impl_ITextDocument<D>::GetDefaultParagraphFormat() const
{
    Windows::UI::Text::ITextParagraphFormat value;
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_GetDefaultParagraphFormat(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::ITextRange impl_ITextDocument<D>::GetRange(int32_t startPosition, int32_t endPosition) const
{
    Windows::UI::Text::ITextRange value;
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_GetRange(startPosition, endPosition, put(value)));
    return value;
}

template <typename D> Windows::UI::Text::ITextRange impl_ITextDocument<D>::GetRangeFromPoint(const Windows::Foundation::Point & point, Windows::UI::Text::PointOptions options) const
{
    Windows::UI::Text::ITextRange value;
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_GetRangeFromPoint(get(point), options, put(value)));
    return value;
}

template <typename D> void impl_ITextDocument<D>::GetText(Windows::UI::Text::TextGetOptions options, hstring & value) const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_GetText(options, put(value)));
}

template <typename D> void impl_ITextDocument<D>::LoadFromStream(Windows::UI::Text::TextSetOptions options, const Windows::Storage::Streams::IRandomAccessStream & value) const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_LoadFromStream(options, get(value)));
}

template <typename D> void impl_ITextDocument<D>::Redo() const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_Redo());
}

template <typename D> void impl_ITextDocument<D>::SaveToStream(Windows::UI::Text::TextGetOptions options, const Windows::Storage::Streams::IRandomAccessStream & value) const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_SaveToStream(options, get(value)));
}

template <typename D> void impl_ITextDocument<D>::SetDefaultCharacterFormat(const Windows::UI::Text::ITextCharacterFormat & value) const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_SetDefaultCharacterFormat(get(value)));
}

template <typename D> void impl_ITextDocument<D>::SetDefaultParagraphFormat(const Windows::UI::Text::ITextParagraphFormat & value) const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_SetDefaultParagraphFormat(get(value)));
}

template <typename D> void impl_ITextDocument<D>::SetText(Windows::UI::Text::TextSetOptions options, hstring_ref value) const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_SetText(options, get(value)));
}

template <typename D> void impl_ITextDocument<D>::Undo() const
{
    check_hresult(static_cast<const ITextDocument &>(static_cast<const D &>(*this))->abi_Undo());
}

template <typename D> wchar_t impl_ITextRange<D>::Character() const
{
    wchar_t value {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->get_Character(&value));
    return value;
}

template <typename D> void impl_ITextRange<D>::Character(wchar_t value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->put_Character(value));
}

template <typename D> Windows::UI::Text::ITextCharacterFormat impl_ITextRange<D>::CharacterFormat() const
{
    Windows::UI::Text::ITextCharacterFormat value;
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->get_CharacterFormat(put(value)));
    return value;
}

template <typename D> void impl_ITextRange<D>::CharacterFormat(const Windows::UI::Text::ITextCharacterFormat & value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->put_CharacterFormat(get(value)));
}

template <typename D> Windows::UI::Text::ITextRange impl_ITextRange<D>::FormattedText() const
{
    Windows::UI::Text::ITextRange value;
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->get_FormattedText(put(value)));
    return value;
}

template <typename D> void impl_ITextRange<D>::FormattedText(const Windows::UI::Text::ITextRange & value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->put_FormattedText(get(value)));
}

template <typename D> int32_t impl_ITextRange<D>::EndPosition() const
{
    int32_t value {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->get_EndPosition(&value));
    return value;
}

template <typename D> void impl_ITextRange<D>::EndPosition(int32_t value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->put_EndPosition(value));
}

template <typename D> Windows::UI::Text::RangeGravity impl_ITextRange<D>::Gravity() const
{
    Windows::UI::Text::RangeGravity value {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->get_Gravity(&value));
    return value;
}

template <typename D> void impl_ITextRange<D>::Gravity(Windows::UI::Text::RangeGravity value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->put_Gravity(value));
}

template <typename D> int32_t impl_ITextRange<D>::Length() const
{
    int32_t length {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->get_Length(&length));
    return length;
}

template <typename D> hstring impl_ITextRange<D>::Link() const
{
    hstring value;
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->get_Link(put(value)));
    return value;
}

template <typename D> void impl_ITextRange<D>::Link(hstring_ref value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->put_Link(get(value)));
}

template <typename D> Windows::UI::Text::ITextParagraphFormat impl_ITextRange<D>::ParagraphFormat() const
{
    Windows::UI::Text::ITextParagraphFormat value;
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->get_ParagraphFormat(put(value)));
    return value;
}

template <typename D> void impl_ITextRange<D>::ParagraphFormat(const Windows::UI::Text::ITextParagraphFormat & value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->put_ParagraphFormat(get(value)));
}

template <typename D> int32_t impl_ITextRange<D>::StartPosition() const
{
    int32_t value {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->get_StartPosition(&value));
    return value;
}

template <typename D> void impl_ITextRange<D>::StartPosition(int32_t value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->put_StartPosition(value));
}

template <typename D> int32_t impl_ITextRange<D>::StoryLength() const
{
    int32_t value {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->get_StoryLength(&value));
    return value;
}

template <typename D> hstring impl_ITextRange<D>::Text() const
{
    hstring value;
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->get_Text(put(value)));
    return value;
}

template <typename D> void impl_ITextRange<D>::Text(hstring_ref value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->put_Text(get(value)));
}

template <typename D> bool impl_ITextRange<D>::CanPaste(int32_t format) const
{
    bool value {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_CanPaste(format, &value));
    return value;
}

template <typename D> void impl_ITextRange<D>::ChangeCase(Windows::UI::Text::LetterCase value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_ChangeCase(value));
}

template <typename D> void impl_ITextRange<D>::Collapse(bool value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_Collapse(value));
}

template <typename D> void impl_ITextRange<D>::Copy() const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_Copy());
}

template <typename D> void impl_ITextRange<D>::Cut() const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_Cut());
}

template <typename D> int32_t impl_ITextRange<D>::Delete(Windows::UI::Text::TextRangeUnit unit, int32_t count) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_Delete(unit, count, &delta));
    return delta;
}

template <typename D> int32_t impl_ITextRange<D>::EndOf(Windows::UI::Text::TextRangeUnit unit, bool extend) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_EndOf(unit, extend, &delta));
    return delta;
}

template <typename D> int32_t impl_ITextRange<D>::Expand(Windows::UI::Text::TextRangeUnit unit) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_Expand(unit, &delta));
    return delta;
}

template <typename D> int32_t impl_ITextRange<D>::FindText(hstring_ref value, int32_t scanLength, Windows::UI::Text::FindOptions options) const
{
    int32_t length {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_FindText(get(value), scanLength, options, &length));
    return length;
}

template <typename D> void impl_ITextRange<D>::GetCharacterUtf32(uint32_t & value, int32_t offset) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_GetCharacterUtf32(&value, offset));
}

template <typename D> Windows::UI::Text::ITextRange impl_ITextRange<D>::GetClone() const
{
    Windows::UI::Text::ITextRange value;
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_GetClone(put(value)));
    return value;
}

template <typename D> int32_t impl_ITextRange<D>::GetIndex(Windows::UI::Text::TextRangeUnit unit) const
{
    int32_t index {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_GetIndex(unit, &index));
    return index;
}

template <typename D> void impl_ITextRange<D>::GetPoint(Windows::UI::Text::HorizontalCharacterAlignment horizontalAlign, Windows::UI::Text::VerticalCharacterAlignment verticalAlign, Windows::UI::Text::PointOptions options, Windows::Foundation::Point & point) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_GetPoint(horizontalAlign, verticalAlign, options, put(point)));
}

template <typename D> void impl_ITextRange<D>::GetRect(Windows::UI::Text::PointOptions options, Windows::Foundation::Rect & rect, int32_t & hit) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_GetRect(options, put(rect), &hit));
}

template <typename D> void impl_ITextRange<D>::GetText(Windows::UI::Text::TextGetOptions options, hstring & value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_GetText(options, put(value)));
}

template <typename D> void impl_ITextRange<D>::GetTextViaStream(Windows::UI::Text::TextGetOptions options, const Windows::Storage::Streams::IRandomAccessStream & value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_GetTextViaStream(options, get(value)));
}

template <typename D> bool impl_ITextRange<D>::InRange(const Windows::UI::Text::ITextRange & range) const
{
    bool value {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_InRange(get(range), &value));
    return value;
}

template <typename D> void impl_ITextRange<D>::InsertImage(int32_t width, int32_t height, int32_t ascent, Windows::UI::Text::VerticalCharacterAlignment verticalAlign, hstring_ref alternateText, const Windows::Storage::Streams::IRandomAccessStream & value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_InsertImage(width, height, ascent, verticalAlign, get(alternateText), get(value)));
}

template <typename D> bool impl_ITextRange<D>::InStory(const Windows::UI::Text::ITextRange & range) const
{
    bool value {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_InStory(get(range), &value));
    return value;
}

template <typename D> bool impl_ITextRange<D>::IsEqual(const Windows::UI::Text::ITextRange & range) const
{
    bool value {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_IsEqual(get(range), &value));
    return value;
}

template <typename D> int32_t impl_ITextRange<D>::Move(Windows::UI::Text::TextRangeUnit unit, int32_t count) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_Move(unit, count, &delta));
    return delta;
}

template <typename D> int32_t impl_ITextRange<D>::MoveEnd(Windows::UI::Text::TextRangeUnit unit, int32_t count) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_MoveEnd(unit, count, &delta));
    return delta;
}

template <typename D> int32_t impl_ITextRange<D>::MoveStart(Windows::UI::Text::TextRangeUnit unit, int32_t count) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_MoveStart(unit, count, &delta));
    return delta;
}

template <typename D> void impl_ITextRange<D>::Paste(int32_t format) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_Paste(format));
}

template <typename D> void impl_ITextRange<D>::ScrollIntoView(Windows::UI::Text::PointOptions value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_ScrollIntoView(value));
}

template <typename D> void impl_ITextRange<D>::MatchSelection() const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_MatchSelection());
}

template <typename D> void impl_ITextRange<D>::SetIndex(Windows::UI::Text::TextRangeUnit unit, int32_t index, bool extend) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_SetIndex(unit, index, extend));
}

template <typename D> void impl_ITextRange<D>::SetPoint(const Windows::Foundation::Point & point, Windows::UI::Text::PointOptions options, bool extend) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_SetPoint(get(point), options, extend));
}

template <typename D> void impl_ITextRange<D>::SetRange(int32_t startPosition, int32_t endPosition) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_SetRange(startPosition, endPosition));
}

template <typename D> void impl_ITextRange<D>::SetText(Windows::UI::Text::TextSetOptions options, hstring_ref value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_SetText(options, get(value)));
}

template <typename D> void impl_ITextRange<D>::SetTextViaStream(Windows::UI::Text::TextSetOptions options, const Windows::Storage::Streams::IRandomAccessStream & value) const
{
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_SetTextViaStream(options, get(value)));
}

template <typename D> int32_t impl_ITextRange<D>::StartOf(Windows::UI::Text::TextRangeUnit unit, bool extend) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextRange &>(static_cast<const D &>(*this))->abi_StartOf(unit, extend, &delta));
    return delta;
}

template <typename D> Windows::UI::Text::SelectionOptions impl_ITextSelection<D>::Options() const
{
    Windows::UI::Text::SelectionOptions value {};
    check_hresult(static_cast<const ITextSelection &>(static_cast<const D &>(*this))->get_Options(&value));
    return value;
}

template <typename D> void impl_ITextSelection<D>::Options(Windows::UI::Text::SelectionOptions value) const
{
    check_hresult(static_cast<const ITextSelection &>(static_cast<const D &>(*this))->put_Options(value));
}

template <typename D> Windows::UI::Text::SelectionType impl_ITextSelection<D>::Type() const
{
    Windows::UI::Text::SelectionType value {};
    check_hresult(static_cast<const ITextSelection &>(static_cast<const D &>(*this))->get_Type(&value));
    return value;
}

template <typename D> int32_t impl_ITextSelection<D>::EndKey(Windows::UI::Text::TextRangeUnit unit, bool extend) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextSelection &>(static_cast<const D &>(*this))->abi_EndKey(unit, extend, &delta));
    return delta;
}

template <typename D> int32_t impl_ITextSelection<D>::HomeKey(Windows::UI::Text::TextRangeUnit unit, bool extend) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextSelection &>(static_cast<const D &>(*this))->abi_HomeKey(unit, extend, &delta));
    return delta;
}

template <typename D> int32_t impl_ITextSelection<D>::MoveDown(Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextSelection &>(static_cast<const D &>(*this))->abi_MoveDown(unit, count, extend, &delta));
    return delta;
}

template <typename D> int32_t impl_ITextSelection<D>::MoveLeft(Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextSelection &>(static_cast<const D &>(*this))->abi_MoveLeft(unit, count, extend, &delta));
    return delta;
}

template <typename D> int32_t impl_ITextSelection<D>::MoveRight(Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextSelection &>(static_cast<const D &>(*this))->abi_MoveRight(unit, count, extend, &delta));
    return delta;
}

template <typename D> int32_t impl_ITextSelection<D>::MoveUp(Windows::UI::Text::TextRangeUnit unit, int32_t count, bool extend) const
{
    int32_t delta {};
    check_hresult(static_cast<const ITextSelection &>(static_cast<const D &>(*this))->abi_MoveUp(unit, count, extend, &delta));
    return delta;
}

template <typename D> void impl_ITextSelection<D>::TypeText(hstring_ref value) const
{
    check_hresult(static_cast<const ITextSelection &>(static_cast<const D &>(*this))->abi_TypeText(get(value)));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextCharacterFormat<D>::AllCaps() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_AllCaps(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::AllCaps(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_AllCaps(value));
}

template <typename D> Windows::UI::Color impl_ITextCharacterFormat<D>::BackgroundColor() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_BackgroundColor(put(value)));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::BackgroundColor(const Windows::UI::Color & value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_BackgroundColor(get(value)));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextCharacterFormat<D>::Bold() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Bold(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Bold(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Bold(value));
}

template <typename D> Windows::UI::Text::FontStretch impl_ITextCharacterFormat<D>::FontStretch() const
{
    Windows::UI::Text::FontStretch value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_FontStretch(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::FontStretch(Windows::UI::Text::FontStretch value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_FontStretch(value));
}

template <typename D> Windows::UI::Text::FontStyle impl_ITextCharacterFormat<D>::FontStyle() const
{
    Windows::UI::Text::FontStyle value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_FontStyle(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::FontStyle(Windows::UI::Text::FontStyle value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_FontStyle(value));
}

template <typename D> Windows::UI::Color impl_ITextCharacterFormat<D>::ForegroundColor() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_ForegroundColor(put(value)));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::ForegroundColor(const Windows::UI::Color & value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_ForegroundColor(get(value)));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextCharacterFormat<D>::Hidden() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Hidden(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Hidden(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Hidden(value));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextCharacterFormat<D>::Italic() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Italic(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Italic(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Italic(value));
}

template <typename D> float impl_ITextCharacterFormat<D>::Kerning() const
{
    float value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Kerning(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Kerning(float value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Kerning(value));
}

template <typename D> hstring impl_ITextCharacterFormat<D>::LanguageTag() const
{
    hstring value;
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_LanguageTag(put(value)));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::LanguageTag(hstring_ref value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_LanguageTag(get(value)));
}

template <typename D> Windows::UI::Text::LinkType impl_ITextCharacterFormat<D>::LinkType() const
{
    Windows::UI::Text::LinkType value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_LinkType(&value));
    return value;
}

template <typename D> hstring impl_ITextCharacterFormat<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Name(hstring_ref value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Name(get(value)));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextCharacterFormat<D>::Outline() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Outline(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Outline(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Outline(value));
}

template <typename D> float impl_ITextCharacterFormat<D>::Position() const
{
    float value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Position(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Position(float value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Position(value));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextCharacterFormat<D>::ProtectedText() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_ProtectedText(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::ProtectedText(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_ProtectedText(value));
}

template <typename D> float impl_ITextCharacterFormat<D>::Size() const
{
    float value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Size(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Size(float value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Size(value));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextCharacterFormat<D>::SmallCaps() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_SmallCaps(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::SmallCaps(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_SmallCaps(value));
}

template <typename D> float impl_ITextCharacterFormat<D>::Spacing() const
{
    float value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Spacing(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Spacing(float value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Spacing(value));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextCharacterFormat<D>::Strikethrough() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Strikethrough(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Strikethrough(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Strikethrough(value));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextCharacterFormat<D>::Subscript() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Subscript(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Subscript(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Subscript(value));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextCharacterFormat<D>::Superscript() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Superscript(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Superscript(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Superscript(value));
}

template <typename D> Windows::UI::Text::TextScript impl_ITextCharacterFormat<D>::TextScript() const
{
    Windows::UI::Text::TextScript value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_TextScript(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::TextScript(Windows::UI::Text::TextScript value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_TextScript(value));
}

template <typename D> Windows::UI::Text::UnderlineType impl_ITextCharacterFormat<D>::Underline() const
{
    Windows::UI::Text::UnderlineType value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Underline(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Underline(Windows::UI::Text::UnderlineType value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Underline(value));
}

template <typename D> int32_t impl_ITextCharacterFormat<D>::Weight() const
{
    int32_t value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->get_Weight(&value));
    return value;
}

template <typename D> void impl_ITextCharacterFormat<D>::Weight(int32_t value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->put_Weight(value));
}

template <typename D> void impl_ITextCharacterFormat<D>::SetClone(const Windows::UI::Text::ITextCharacterFormat & value) const
{
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->abi_SetClone(get(value)));
}

template <typename D> Windows::UI::Text::ITextCharacterFormat impl_ITextCharacterFormat<D>::GetClone() const
{
    Windows::UI::Text::ITextCharacterFormat value;
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->abi_GetClone(put(value)));
    return value;
}

template <typename D> bool impl_ITextCharacterFormat<D>::IsEqual(const Windows::UI::Text::ITextCharacterFormat & format) const
{
    bool value {};
    check_hresult(static_cast<const ITextCharacterFormat &>(static_cast<const D &>(*this))->abi_IsEqual(get(format), &value));
    return value;
}

template <typename D> Windows::UI::Text::ParagraphAlignment impl_ITextParagraphFormat<D>::Alignment() const
{
    Windows::UI::Text::ParagraphAlignment value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_Alignment(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::Alignment(Windows::UI::Text::ParagraphAlignment value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_Alignment(value));
}

template <typename D> float impl_ITextParagraphFormat<D>::FirstLineIndent() const
{
    float value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_FirstLineIndent(&value));
    return value;
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextParagraphFormat<D>::KeepTogether() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_KeepTogether(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::KeepTogether(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_KeepTogether(value));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextParagraphFormat<D>::KeepWithNext() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_KeepWithNext(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::KeepWithNext(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_KeepWithNext(value));
}

template <typename D> float impl_ITextParagraphFormat<D>::LeftIndent() const
{
    float value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_LeftIndent(&value));
    return value;
}

template <typename D> float impl_ITextParagraphFormat<D>::LineSpacing() const
{
    float value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_LineSpacing(&value));
    return value;
}

template <typename D> Windows::UI::Text::LineSpacingRule impl_ITextParagraphFormat<D>::LineSpacingRule() const
{
    Windows::UI::Text::LineSpacingRule value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_LineSpacingRule(&value));
    return value;
}

template <typename D> Windows::UI::Text::MarkerAlignment impl_ITextParagraphFormat<D>::ListAlignment() const
{
    Windows::UI::Text::MarkerAlignment value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_ListAlignment(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::ListAlignment(Windows::UI::Text::MarkerAlignment value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_ListAlignment(value));
}

template <typename D> int32_t impl_ITextParagraphFormat<D>::ListLevelIndex() const
{
    int32_t value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_ListLevelIndex(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::ListLevelIndex(int32_t value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_ListLevelIndex(value));
}

template <typename D> int32_t impl_ITextParagraphFormat<D>::ListStart() const
{
    int32_t value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_ListStart(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::ListStart(int32_t value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_ListStart(value));
}

template <typename D> Windows::UI::Text::MarkerStyle impl_ITextParagraphFormat<D>::ListStyle() const
{
    Windows::UI::Text::MarkerStyle value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_ListStyle(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::ListStyle(Windows::UI::Text::MarkerStyle value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_ListStyle(value));
}

template <typename D> float impl_ITextParagraphFormat<D>::ListTab() const
{
    float value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_ListTab(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::ListTab(float value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_ListTab(value));
}

template <typename D> Windows::UI::Text::MarkerType impl_ITextParagraphFormat<D>::ListType() const
{
    Windows::UI::Text::MarkerType value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_ListType(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::ListType(Windows::UI::Text::MarkerType value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_ListType(value));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextParagraphFormat<D>::NoLineNumber() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_NoLineNumber(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::NoLineNumber(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_NoLineNumber(value));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextParagraphFormat<D>::PageBreakBefore() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_PageBreakBefore(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::PageBreakBefore(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_PageBreakBefore(value));
}

template <typename D> float impl_ITextParagraphFormat<D>::RightIndent() const
{
    float value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_RightIndent(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::RightIndent(float value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_RightIndent(value));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextParagraphFormat<D>::RightToLeft() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_RightToLeft(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::RightToLeft(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_RightToLeft(value));
}

template <typename D> Windows::UI::Text::ParagraphStyle impl_ITextParagraphFormat<D>::Style() const
{
    Windows::UI::Text::ParagraphStyle value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_Style(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::Style(Windows::UI::Text::ParagraphStyle value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_Style(value));
}

template <typename D> float impl_ITextParagraphFormat<D>::SpaceAfter() const
{
    float value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_SpaceAfter(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::SpaceAfter(float value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_SpaceAfter(value));
}

template <typename D> float impl_ITextParagraphFormat<D>::SpaceBefore() const
{
    float value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_SpaceBefore(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::SpaceBefore(float value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_SpaceBefore(value));
}

template <typename D> Windows::UI::Text::FormatEffect impl_ITextParagraphFormat<D>::WidowControl() const
{
    Windows::UI::Text::FormatEffect value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_WidowControl(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::WidowControl(Windows::UI::Text::FormatEffect value) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->put_WidowControl(value));
}

template <typename D> int32_t impl_ITextParagraphFormat<D>::TabCount() const
{
    int32_t value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->get_TabCount(&value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::AddTab(float position, Windows::UI::Text::TabAlignment align, Windows::UI::Text::TabLeader leader) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->abi_AddTab(position, align, leader));
}

template <typename D> void impl_ITextParagraphFormat<D>::ClearAllTabs() const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->abi_ClearAllTabs());
}

template <typename D> void impl_ITextParagraphFormat<D>::DeleteTab(float position) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->abi_DeleteTab(position));
}

template <typename D> Windows::UI::Text::ITextParagraphFormat impl_ITextParagraphFormat<D>::GetClone() const
{
    Windows::UI::Text::ITextParagraphFormat value;
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->abi_GetClone(put(value)));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::GetTab(int32_t index, float & position, Windows::UI::Text::TabAlignment & align, Windows::UI::Text::TabLeader & leader) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->abi_GetTab(index, &position, &align, &leader));
}

template <typename D> bool impl_ITextParagraphFormat<D>::IsEqual(const Windows::UI::Text::ITextParagraphFormat & format) const
{
    bool value {};
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->abi_IsEqual(get(format), &value));
    return value;
}

template <typename D> void impl_ITextParagraphFormat<D>::SetClone(const Windows::UI::Text::ITextParagraphFormat & format) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->abi_SetClone(get(format)));
}

template <typename D> void impl_ITextParagraphFormat<D>::SetIndents(float start, float left, float right) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->abi_SetIndents(start, left, right));
}

template <typename D> void impl_ITextParagraphFormat<D>::SetLineSpacing(Windows::UI::Text::LineSpacingRule rule, float spacing) const
{
    check_hresult(static_cast<const ITextParagraphFormat &>(static_cast<const D &>(*this))->abi_SetLineSpacing(rule, spacing));
}

template <typename D> Windows::UI::Text::FontWeight impl_IFontWeightsStatics<D>::Black() const
{
    Windows::UI::Text::FontWeight value {};
    check_hresult(static_cast<const IFontWeightsStatics &>(static_cast<const D &>(*this))->get_Black(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::FontWeight impl_IFontWeightsStatics<D>::Bold() const
{
    Windows::UI::Text::FontWeight value {};
    check_hresult(static_cast<const IFontWeightsStatics &>(static_cast<const D &>(*this))->get_Bold(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::FontWeight impl_IFontWeightsStatics<D>::ExtraBlack() const
{
    Windows::UI::Text::FontWeight value {};
    check_hresult(static_cast<const IFontWeightsStatics &>(static_cast<const D &>(*this))->get_ExtraBlack(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::FontWeight impl_IFontWeightsStatics<D>::ExtraBold() const
{
    Windows::UI::Text::FontWeight value {};
    check_hresult(static_cast<const IFontWeightsStatics &>(static_cast<const D &>(*this))->get_ExtraBold(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::FontWeight impl_IFontWeightsStatics<D>::ExtraLight() const
{
    Windows::UI::Text::FontWeight value {};
    check_hresult(static_cast<const IFontWeightsStatics &>(static_cast<const D &>(*this))->get_ExtraLight(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::FontWeight impl_IFontWeightsStatics<D>::Light() const
{
    Windows::UI::Text::FontWeight value {};
    check_hresult(static_cast<const IFontWeightsStatics &>(static_cast<const D &>(*this))->get_Light(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::FontWeight impl_IFontWeightsStatics<D>::Medium() const
{
    Windows::UI::Text::FontWeight value {};
    check_hresult(static_cast<const IFontWeightsStatics &>(static_cast<const D &>(*this))->get_Medium(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::FontWeight impl_IFontWeightsStatics<D>::Normal() const
{
    Windows::UI::Text::FontWeight value {};
    check_hresult(static_cast<const IFontWeightsStatics &>(static_cast<const D &>(*this))->get_Normal(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::FontWeight impl_IFontWeightsStatics<D>::SemiBold() const
{
    Windows::UI::Text::FontWeight value {};
    check_hresult(static_cast<const IFontWeightsStatics &>(static_cast<const D &>(*this))->get_SemiBold(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::FontWeight impl_IFontWeightsStatics<D>::SemiLight() const
{
    Windows::UI::Text::FontWeight value {};
    check_hresult(static_cast<const IFontWeightsStatics &>(static_cast<const D &>(*this))->get_SemiLight(put(value)));
    return value;
}

template <typename D> Windows::UI::Text::FontWeight impl_IFontWeightsStatics<D>::Thin() const
{
    Windows::UI::Text::FontWeight value {};
    check_hresult(static_cast<const IFontWeightsStatics &>(static_cast<const D &>(*this))->get_Thin(put(value)));
    return value;
}

inline Windows::UI::Text::FontWeight FontWeights::Black()
{
    return get_activation_factory<FontWeights, IFontWeightsStatics>().Black();
}

inline Windows::UI::Text::FontWeight FontWeights::Bold()
{
    return get_activation_factory<FontWeights, IFontWeightsStatics>().Bold();
}

inline Windows::UI::Text::FontWeight FontWeights::ExtraBlack()
{
    return get_activation_factory<FontWeights, IFontWeightsStatics>().ExtraBlack();
}

inline Windows::UI::Text::FontWeight FontWeights::ExtraBold()
{
    return get_activation_factory<FontWeights, IFontWeightsStatics>().ExtraBold();
}

inline Windows::UI::Text::FontWeight FontWeights::ExtraLight()
{
    return get_activation_factory<FontWeights, IFontWeightsStatics>().ExtraLight();
}

inline Windows::UI::Text::FontWeight FontWeights::Light()
{
    return get_activation_factory<FontWeights, IFontWeightsStatics>().Light();
}

inline Windows::UI::Text::FontWeight FontWeights::Medium()
{
    return get_activation_factory<FontWeights, IFontWeightsStatics>().Medium();
}

inline Windows::UI::Text::FontWeight FontWeights::Normal()
{
    return get_activation_factory<FontWeights, IFontWeightsStatics>().Normal();
}

inline Windows::UI::Text::FontWeight FontWeights::SemiBold()
{
    return get_activation_factory<FontWeights, IFontWeightsStatics>().SemiBold();
}

inline Windows::UI::Text::FontWeight FontWeights::SemiLight()
{
    return get_activation_factory<FontWeights, IFontWeightsStatics>().SemiLight();
}

inline Windows::UI::Text::FontWeight FontWeights::Thin()
{
    return get_activation_factory<FontWeights, IFontWeightsStatics>().Thin();
}

inline Windows::UI::Color TextConstants::AutoColor()
{
    return get_activation_factory<TextConstants, ITextConstantsStatics>().AutoColor();
}

inline int32_t TextConstants::MinUnitCount()
{
    return get_activation_factory<TextConstants, ITextConstantsStatics>().MinUnitCount();
}

inline int32_t TextConstants::MaxUnitCount()
{
    return get_activation_factory<TextConstants, ITextConstantsStatics>().MaxUnitCount();
}

inline Windows::UI::Color TextConstants::UndefinedColor()
{
    return get_activation_factory<TextConstants, ITextConstantsStatics>().UndefinedColor();
}

inline float TextConstants::UndefinedFloatValue()
{
    return get_activation_factory<TextConstants, ITextConstantsStatics>().UndefinedFloatValue();
}

inline int32_t TextConstants::UndefinedInt32Value()
{
    return get_activation_factory<TextConstants, ITextConstantsStatics>().UndefinedInt32Value();
}

inline Windows::UI::Text::FontStretch TextConstants::UndefinedFontStretch()
{
    return get_activation_factory<TextConstants, ITextConstantsStatics>().UndefinedFontStretch();
}

inline Windows::UI::Text::FontStyle TextConstants::UndefinedFontStyle()
{
    return get_activation_factory<TextConstants, ITextConstantsStatics>().UndefinedFontStyle();
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Networking.Vpn.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Networking::Vpn {

struct IVpnAppId;
struct IVpnAppIdFactory;
struct IVpnChannel;
struct IVpnChannel2;
struct IVpnChannelActivityEventArgs;
struct IVpnChannelActivityStateChangedArgs;
struct IVpnChannelConfiguration;
struct IVpnChannelConfiguration2;
struct IVpnChannelStatics;
struct IVpnCredential;
struct IVpnCustomCheckBox;
struct IVpnCustomComboBox;
struct IVpnCustomEditBox;
struct IVpnCustomErrorBox;
struct IVpnCustomPrompt;
struct IVpnCustomPromptBooleanInput;
struct IVpnCustomPromptElement;
struct IVpnCustomPromptOptionSelector;
struct IVpnCustomPromptText;
struct IVpnCustomPromptTextInput;
struct IVpnCustomTextBox;
struct IVpnDomainNameAssignment;
struct IVpnDomainNameInfo;
struct IVpnDomainNameInfo2;
struct IVpnDomainNameInfoFactory;
struct IVpnInterfaceId;
struct IVpnInterfaceIdFactory;
struct IVpnManagementAgent;
struct IVpnNamespaceAssignment;
struct IVpnNamespaceInfo;
struct IVpnNamespaceInfoFactory;
struct IVpnNativeProfile;
struct IVpnNativeProfile2;
struct IVpnPacketBuffer;
struct IVpnPacketBuffer2;
struct IVpnPacketBufferFactory;
struct IVpnPacketBufferList;
struct IVpnPacketBufferList2;
struct IVpnPickedCredential;
struct IVpnPlugIn;
struct IVpnPlugInProfile;
struct IVpnPlugInProfile2;
struct IVpnProfile;
struct IVpnRoute;
struct IVpnRouteAssignment;
struct IVpnRouteFactory;
struct IVpnSystemHealth;
struct IVpnTrafficFilter;
struct IVpnTrafficFilterAssignment;
struct IVpnTrafficFilterFactory;
struct VpnAppId;
struct VpnChannel;
struct VpnChannelActivityEventArgs;
struct VpnChannelActivityStateChangedArgs;
struct VpnChannelConfiguration;
struct VpnCredential;
struct VpnCustomCheckBox;
struct VpnCustomComboBox;
struct VpnCustomEditBox;
struct VpnCustomErrorBox;
struct VpnCustomPromptBooleanInput;
struct VpnCustomPromptOptionSelector;
struct VpnCustomPromptText;
struct VpnCustomPromptTextInput;
struct VpnCustomTextBox;
struct VpnDomainNameAssignment;
struct VpnDomainNameInfo;
struct VpnInterfaceId;
struct VpnManagementAgent;
struct VpnNamespaceAssignment;
struct VpnNamespaceInfo;
struct VpnNativeProfile;
struct VpnPacketBuffer;
struct VpnPacketBufferList;
struct VpnPickedCredential;
struct VpnPlugInProfile;
struct VpnRoute;
struct VpnRouteAssignment;
struct VpnSystemHealth;
struct VpnTrafficFilter;
struct VpnTrafficFilterAssignment;

}

namespace Windows::Networking::Vpn {

struct IVpnAppId;
struct IVpnAppIdFactory;
struct IVpnChannel;
struct IVpnChannel2;
struct IVpnChannelActivityEventArgs;
struct IVpnChannelActivityStateChangedArgs;
struct IVpnChannelConfiguration;
struct IVpnChannelConfiguration2;
struct IVpnChannelStatics;
struct IVpnCredential;
struct IVpnCustomCheckBox;
struct IVpnCustomComboBox;
struct IVpnCustomEditBox;
struct IVpnCustomErrorBox;
struct IVpnCustomPrompt;
struct IVpnCustomPromptBooleanInput;
struct IVpnCustomPromptElement;
struct IVpnCustomPromptOptionSelector;
struct IVpnCustomPromptText;
struct IVpnCustomPromptTextInput;
struct IVpnCustomTextBox;
struct IVpnDomainNameAssignment;
struct IVpnDomainNameInfo;
struct IVpnDomainNameInfo2;
struct IVpnDomainNameInfoFactory;
struct IVpnInterfaceId;
struct IVpnInterfaceIdFactory;
struct IVpnManagementAgent;
struct IVpnNamespaceAssignment;
struct IVpnNamespaceInfo;
struct IVpnNamespaceInfoFactory;
struct IVpnNativeProfile;
struct IVpnNativeProfile2;
struct IVpnPacketBuffer;
struct IVpnPacketBuffer2;
struct IVpnPacketBufferFactory;
struct IVpnPacketBufferList;
struct IVpnPacketBufferList2;
struct IVpnPickedCredential;
struct IVpnPlugIn;
struct IVpnPlugInProfile;
struct IVpnPlugInProfile2;
struct IVpnProfile;
struct IVpnRoute;
struct IVpnRouteAssignment;
struct IVpnRouteFactory;
struct IVpnSystemHealth;
struct IVpnTrafficFilter;
struct IVpnTrafficFilterAssignment;
struct IVpnTrafficFilterFactory;
struct VpnAppId;
struct VpnChannel;
struct VpnChannelActivityEventArgs;
struct VpnChannelActivityStateChangedArgs;
struct VpnChannelConfiguration;
struct VpnCredential;
struct VpnCustomCheckBox;
struct VpnCustomComboBox;
struct VpnCustomEditBox;
struct VpnCustomErrorBox;
struct VpnCustomPromptBooleanInput;
struct VpnCustomPromptOptionSelector;
struct VpnCustomPromptText;
struct VpnCustomPromptTextInput;
struct VpnCustomTextBox;
struct VpnDomainNameAssignment;
struct VpnDomainNameInfo;
struct VpnInterfaceId;
struct VpnManagementAgent;
struct VpnNamespaceAssignment;
struct VpnNamespaceInfo;
struct VpnNativeProfile;
struct VpnPacketBuffer;
struct VpnPacketBufferList;
struct VpnPickedCredential;
struct VpnPlugInProfile;
struct VpnRoute;
struct VpnRouteAssignment;
struct VpnSystemHealth;
struct VpnTrafficFilter;
struct VpnTrafficFilterAssignment;

}

namespace Windows::Networking::Vpn {

enum class VpnAppIdType
{
    PackageFamilyName = 0,
    FullyQualifiedBinaryName = 1,
    FilePath = 2,
};

enum class VpnAuthenticationMethod
{
    Mschapv2 = 0,
    Eap = 1,
    Certificate = 2,
    PresharedKey = 3,
};

enum class VpnChannelActivityEventType
{
    Idle = 0,
    Active = 1,
};

enum class VpnChannelRequestCredentialsOptions : unsigned
{
    None = 0x0,
    Retrying = 0x1,
    UseForSingleSignIn = 0x2,
};

DEFINE_ENUM_FLAG_OPERATORS(VpnChannelRequestCredentialsOptions)

enum class VpnCredentialType
{
    UsernamePassword = 0,
    UsernameOtpPin = 1,
    UsernamePasswordAndPin = 2,
    UsernamePasswordChange = 3,
    SmartCard = 4,
    ProtectedCertificate = 5,
    UnProtectedCertificate = 6,
};

enum class VpnDataPathType
{
    Send = 0,
    Receive = 1,
};

enum class VpnDomainNameType
{
    Suffix = 0,
    FullyQualified = 1,
    Reserved = 65535,
};

enum class VpnIPProtocol
{
    None = 0,
    Tcp = 6,
    Udp = 17,
    Icmp = 1,
    Ipv6Icmp = 58,
    Igmp = 2,
    Pgm = 113,
};

enum class VpnManagementConnectionStatus
{
    Disconnected = 0,
    Disconnecting = 1,
    Connected = 2,
    Connecting = 3,
};

enum class VpnManagementErrorStatus
{
    Ok = 0,
    Other = 1,
    InvalidXmlSyntax = 2,
    ProfileNameTooLong = 3,
    ProfileInvalidAppId = 4,
    AccessDenied = 5,
    CannotFindProfile = 6,
    AlreadyDisconnecting = 7,
    AlreadyConnected = 8,
    GeneralAuthenticationFailure = 9,
    EapFailure = 10,
    SmartCardFailure = 11,
    CertificateFailure = 12,
    ServerConfiguration = 13,
    NoConnection = 14,
    ServerConnection = 15,
    UserNamePassword = 16,
    DnsNotResolvable = 17,
    InvalidIP = 18,
};

enum class VpnNativeProtocolType
{
    Pptp = 0,
    L2tp = 1,
    IpsecIkev2 = 2,
};

enum class VpnPacketBufferStatus
{
    Ok = 0,
    InvalidBufferSize = 1,
};

enum class VpnRoutingPolicyType
{
    SplitRouting = 0,
    ForceAllTrafficOverVpn = 1,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Embedded.DeviceLockdown.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Embedded.DeviceLockdown.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Foundation.Collections.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Embedded::DeviceLockdown {

struct __declspec(uuid("7980e14e-45b1-4a96-92fc-62756b739678")) __declspec(novtable) IDeviceLockdownProfileInformation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Name(hstring * phProfileName) = 0;
};

struct __declspec(uuid("622f6965-f9a8-41a1-a691-88cd80c7a069")) __declspec(novtable) IDeviceLockdownProfileStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetSupportedLockdownProfiles(Windows::Foundation::Collections::IVectorView<GUID> ** ppProfileIDs) = 0;
    virtual HRESULT __stdcall abi_GetCurrentLockdownProfile(GUID * pProfileID) = 0;
    virtual HRESULT __stdcall abi_ApplyLockdownProfileAsync(GUID profileID, Windows::Foundation::IAsyncAction ** ppWaitableOperation) = 0;
    virtual HRESULT __stdcall abi_GetLockdownProfileInformation(GUID profileID, Windows::Embedded::DeviceLockdown::IDeviceLockdownProfileInformation ** ppInformation) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Embedded::DeviceLockdown::DeviceLockdownProfileInformation> { using default_interface = Windows::Embedded::DeviceLockdown::IDeviceLockdownProfileInformation; };

}

namespace Windows::Embedded::DeviceLockdown {

template <typename T> struct impl_IDeviceLockdownProfileInformation;
template <typename T> struct impl_IDeviceLockdownProfileStatics;

}

namespace impl {

template <> struct traits<Windows::Embedded::DeviceLockdown::IDeviceLockdownProfileInformation>
{
    using abi = ABI::Windows::Embedded::DeviceLockdown::IDeviceLockdownProfileInformation;
    template <typename D> using consume = Windows::Embedded::DeviceLockdown::impl_IDeviceLockdownProfileInformation<D>;
};

template <> struct traits<Windows::Embedded::DeviceLockdown::IDeviceLockdownProfileStatics>
{
    using abi = ABI::Windows::Embedded::DeviceLockdown::IDeviceLockdownProfileStatics;
    template <typename D> using consume = Windows::Embedded::DeviceLockdown::impl_IDeviceLockdownProfileStatics<D>;
};

template <> struct traits<Windows::Embedded::DeviceLockdown::DeviceLockdownProfile>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Embedded.DeviceLockdown.DeviceLockdownProfile"; }
};

template <> struct traits<Windows::Embedded::DeviceLockdown::DeviceLockdownProfileInformation>
{
    using abi = ABI::Windows::Embedded::DeviceLockdown::DeviceLockdownProfileInformation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Embedded.DeviceLockdown.DeviceLockdownProfileInformation"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.Casting.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Media.Casting.0.h"
#include "Windows.Devices.Enumeration.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.UI.Popups.0.h"
#include "Windows.Foundation.1.h"
#include "Windows.Foundation.Collections.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Media::Casting {

struct __declspec(uuid("cd951653-c2f1-4498-8b78-5fb4cd3640dd")) __declspec(novtable) ICastingConnection : Windows::IInspectable
{
    virtual HRESULT __stdcall get_State(winrt::Windows::Media::Casting::CastingConnectionState * value) = 0;
    virtual HRESULT __stdcall get_Device(Windows::Media::Casting::ICastingDevice ** value) = 0;
    virtual HRESULT __stdcall get_Source(Windows::Media::Casting::ICastingSource ** value) = 0;
    virtual HRESULT __stdcall put_Source(Windows::Media::Casting::ICastingSource * value) = 0;
    virtual HRESULT __stdcall add_StateChanged(Windows::Foundation::TypedEventHandler<Windows::Media::Casting::CastingConnection, Windows::IInspectable> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_StateChanged(event_token token) = 0;
    virtual HRESULT __stdcall add_ErrorOccurred(Windows::Foundation::TypedEventHandler<Windows::Media::Casting::CastingConnection, Windows::Media::Casting::CastingConnectionErrorOccurredEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ErrorOccurred(event_token token) = 0;
    virtual HRESULT __stdcall abi_RequestStartCastingAsync(Windows::Media::Casting::ICastingSource * value, Windows::Foundation::IAsyncOperation<winrt::Windows::Media::Casting::CastingConnectionErrorStatus> ** operation) = 0;
    virtual HRESULT __stdcall abi_DisconnectAsync(Windows::Foundation::IAsyncOperation<winrt::Windows::Media::Casting::CastingConnectionErrorStatus> ** operation) = 0;
};

struct __declspec(uuid("a7fb3c69-8719-4f00-81fb-961863c79a32")) __declspec(novtable) ICastingConnectionErrorOccurredEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ErrorStatus(winrt::Windows::Media::Casting::CastingConnectionErrorStatus * value) = 0;
    virtual HRESULT __stdcall get_Message(hstring * value) = 0;
};

struct __declspec(uuid("de721c83-4a43-4ad1-a6d2-2492a796c3f2")) __declspec(novtable) ICastingDevice : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Id(hstring * value) = 0;
    virtual HRESULT __stdcall get_FriendlyName(hstring * value) = 0;
    virtual HRESULT __stdcall get_Icon(Windows::Storage::Streams::IRandomAccessStreamWithContentType ** value) = 0;
    virtual HRESULT __stdcall abi_GetSupportedCastingPlaybackTypesAsync(Windows::Foundation::IAsyncOperation<winrt::Windows::Media::Casting::CastingPlaybackTypes> ** operation) = 0;
    virtual HRESULT __stdcall abi_CreateCastingConnection(Windows::Media::Casting::ICastingConnection ** value) = 0;
};

struct __declspec(uuid("dcd39924-0591-49be-aacb-4b82ee756a95")) __declspec(novtable) ICastingDevicePicker : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Filter(Windows::Media::Casting::ICastingDevicePickerFilter ** value) = 0;
    virtual HRESULT __stdcall get_Appearance(Windows::Devices::Enumeration::IDevicePickerAppearance ** value) = 0;
    virtual HRESULT __stdcall add_CastingDeviceSelected(Windows::Foundation::TypedEventHandler<Windows::Media::Casting::CastingDevicePicker, Windows::Media::Casting::CastingDeviceSelectedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_CastingDeviceSelected(event_token token) = 0;
    virtual HRESULT __stdcall add_CastingDevicePickerDismissed(Windows::Foundation::TypedEventHandler<Windows::Media::Casting::CastingDevicePicker, Windows::IInspectable> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_CastingDevicePickerDismissed(event_token token) = 0;
    virtual HRESULT __stdcall abi_Show(Windows::Foundation::Rect selection) = 0;
    virtual HRESULT __stdcall abi_ShowWithPlacement(Windows::Foundation::Rect selection, winrt::Windows::UI::Popups::Placement preferredPlacement) = 0;
    virtual HRESULT __stdcall abi_Hide() = 0;
};

struct __declspec(uuid("be8c619c-b563-4354-ae33-9fdaad8c6291")) __declspec(novtable) ICastingDevicePickerFilter : Windows::IInspectable
{
    virtual HRESULT __stdcall get_SupportsAudio(bool * value) = 0;
    virtual HRESULT __stdcall put_SupportsAudio(bool value) = 0;
    virtual HRESULT __stdcall get_SupportsVideo(bool * value) = 0;
    virtual HRESULT __stdcall put_SupportsVideo(bool value) = 0;
    virtual HRESULT __stdcall get_SupportsPictures(bool * value) = 0;
    virtual HRESULT __stdcall put_SupportsPictures(bool value) = 0;
    virtual HRESULT __stdcall get_SupportedCastingSources(Windows::Foundation::Collections::IVector<Windows::Media::Casting::CastingSource> ** value) = 0;
};

struct __declspec(uuid("dc439e86-dd57-4d0d-9400-af45e4fb3663")) __declspec(novtable) ICastingDeviceSelectedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_SelectedCastingDevice(Windows::Media::Casting::ICastingDevice ** value) = 0;
};

struct __declspec(uuid("e7d958d7-4d13-4237-a365-4c4f6a4cfd2f")) __declspec(novtable) ICastingDeviceStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDeviceSelector(winrt::Windows::Media::Casting::CastingPlaybackTypes type, hstring * value) = 0;
    virtual HRESULT __stdcall abi_GetDeviceSelectorFromCastingSourceAsync(Windows::Media::Casting::ICastingSource * castingSource, Windows::Foundation::IAsyncOperation<hstring> ** operation) = 0;
    virtual HRESULT __stdcall abi_FromIdAsync(hstring value, Windows::Foundation::IAsyncOperation<Windows::Media::Casting::CastingDevice> ** operation) = 0;
    virtual HRESULT __stdcall abi_DeviceInfoSupportsCastingAsync(Windows::Devices::Enumeration::IDeviceInformation * device, Windows::Foundation::IAsyncOperation<bool> ** operation) = 0;
};

struct __declspec(uuid("f429ea72-3467-47e6-a027-522923e9d727")) __declspec(novtable) ICastingSource : Windows::IInspectable
{
    virtual HRESULT __stdcall get_PreferredSourceUri(Windows::Foundation::IUriRuntimeClass ** value) = 0;
    virtual HRESULT __stdcall put_PreferredSourceUri(Windows::Foundation::IUriRuntimeClass * value) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Media::Casting::CastingConnection> { using default_interface = Windows::Media::Casting::ICastingConnection; };
template <> struct traits<Windows::Media::Casting::CastingConnectionErrorOccurredEventArgs> { using default_interface = Windows::Media::Casting::ICastingConnectionErrorOccurredEventArgs; };
template <> struct traits<Windows::Media::Casting::CastingDevice> { using default_interface = Windows::Media::Casting::ICastingDevice; };
template <> struct traits<Windows::Media::Casting::CastingDevicePicker> { using default_interface = Windows::Media::Casting::ICastingDevicePicker; };
template <> struct traits<Windows::Media::Casting::CastingDevicePickerFilter> { using default_interface = Windows::Media::Casting::ICastingDevicePickerFilter; };
template <> struct traits<Windows::Media::Casting::CastingDeviceSelectedEventArgs> { using default_interface = Windows::Media::Casting::ICastingDeviceSelectedEventArgs; };
template <> struct traits<Windows::Media::Casting::CastingSource> { using default_interface = Windows::Media::Casting::ICastingSource; };

}

namespace Windows::Media::Casting {

template <typename T> struct impl_ICastingConnection;
template <typename T> struct impl_ICastingConnectionErrorOccurredEventArgs;
template <typename T> struct impl_ICastingDevice;
template <typename T> struct impl_ICastingDevicePicker;
template <typename T> struct impl_ICastingDevicePickerFilter;
template <typename T> struct impl_ICastingDeviceSelectedEventArgs;
template <typename T> struct impl_ICastingDeviceStatics;
template <typename T> struct impl_ICastingSource;

}

namespace impl {

template <> struct traits<Windows::Media::Casting::ICastingConnection>
{
    using abi = ABI::Windows::Media::Casting::ICastingConnection;
    template <typename D> using consume = Windows::Media::Casting::impl_ICastingConnection<D>;
};

template <> struct traits<Windows::Media::Casting::ICastingConnectionErrorOccurredEventArgs>
{
    using abi = ABI::Windows::Media::Casting::ICastingConnectionErrorOccurredEventArgs;
    template <typename D> using consume = Windows::Media::Casting::impl_ICastingConnectionErrorOccurredEventArgs<D>;
};

template <> struct traits<Windows::Media::Casting::ICastingDevice>
{
    using abi = ABI::Windows::Media::Casting::ICastingDevice;
    template <typename D> using consume = Windows::Media::Casting::impl_ICastingDevice<D>;
};

template <> struct traits<Windows::Media::Casting::ICastingDevicePicker>
{
    using abi = ABI::Windows::Media::Casting::ICastingDevicePicker;
    template <typename D> using consume = Windows::Media::Casting::impl_ICastingDevicePicker<D>;
};

template <> struct traits<Windows::Media::Casting::ICastingDevicePickerFilter>
{
    using abi = ABI::Windows::Media::Casting::ICastingDevicePickerFilter;
    template <typename D> using consume = Windows::Media::Casting::impl_ICastingDevicePickerFilter<D>;
};

template <> struct traits<Windows::Media::Casting::ICastingDeviceSelectedEventArgs>
{
    using abi = ABI::Windows::Media::Casting::ICastingDeviceSelectedEventArgs;
    template <typename D> using consume = Windows::Media::Casting::impl_ICastingDeviceSelectedEventArgs<D>;
};

template <> struct traits<Windows::Media::Casting::ICastingDeviceStatics>
{
    using abi = ABI::Windows::Media::Casting::ICastingDeviceStatics;
    template <typename D> using consume = Windows::Media::Casting::impl_ICastingDeviceStatics<D>;
};

template <> struct traits<Windows::Media::Casting::ICastingSource>
{
    using abi = ABI::Windows::Media::Casting::ICastingSource;
    template <typename D> using consume = Windows::Media::Casting::impl_ICastingSource<D>;
};

template <> struct traits<Windows::Media::Casting::CastingConnection>
{
    using abi = ABI::Windows::Media::Casting::CastingConnection;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Casting.CastingConnection"; }
};

template <> struct traits<Windows::Media::Casting::CastingConnectionErrorOccurredEventArgs>
{
    using abi = ABI::Windows::Media::Casting::CastingConnectionErrorOccurredEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Casting.CastingConnectionErrorOccurredEventArgs"; }
};

template <> struct traits<Windows::Media::Casting::CastingDevice>
{
    using abi = ABI::Windows::Media::Casting::CastingDevice;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Casting.CastingDevice"; }
};

template <> struct traits<Windows::Media::Casting::CastingDevicePicker>
{
    using abi = ABI::Windows::Media::Casting::CastingDevicePicker;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Casting.CastingDevicePicker"; }
};

template <> struct traits<Windows::Media::Casting::CastingDevicePickerFilter>
{
    using abi = ABI::Windows::Media::Casting::CastingDevicePickerFilter;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Casting.CastingDevicePickerFilter"; }
};

template <> struct traits<Windows::Media::Casting::CastingDeviceSelectedEventArgs>
{
    using abi = ABI::Windows::Media::Casting::CastingDeviceSelectedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Casting.CastingDeviceSelectedEventArgs"; }
};

template <> struct traits<Windows::Media::Casting::CastingSource>
{
    using abi = ABI::Windows::Media::Casting::CastingSource;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Casting.CastingSource"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Bluetooth.Background.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Devices.Bluetooth.Background.0.h"
#include "Windows.Devices.Bluetooth.0.h"
#include "Windows.Devices.Bluetooth.Advertisement.0.h"
#include "Windows.Devices.Bluetooth.GenericAttributeProfile.0.h"
#include "Windows.Devices.Bluetooth.Rfcomm.0.h"
#include "Windows.Networking.Sockets.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.Devices.Bluetooth.Advertisement.1.h"
#include "Windows.Foundation.Collections.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::Bluetooth::Background {

struct __declspec(uuid("610eca86-3480-41c9-a918-7ddadf207e00")) __declspec(novtable) IBluetoothLEAdvertisementPublisherTriggerDetails : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Status(winrt::Windows::Devices::Bluetooth::Advertisement::BluetoothLEAdvertisementPublisherStatus * value) = 0;
    virtual HRESULT __stdcall get_Error(winrt::Windows::Devices::Bluetooth::BluetoothError * value) = 0;
};

struct __declspec(uuid("a7db5ad7-2257-4e69-9784-fee645c1dce0")) __declspec(novtable) IBluetoothLEAdvertisementWatcherTriggerDetails : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Error(winrt::Windows::Devices::Bluetooth::BluetoothError * value) = 0;
    virtual HRESULT __stdcall get_Advertisements(Windows::Foundation::Collections::IVectorView<Windows::Devices::Bluetooth::Advertisement::BluetoothLEAdvertisementReceivedEventArgs> ** value) = 0;
    virtual HRESULT __stdcall get_SignalStrengthFilter(Windows::Devices::Bluetooth::IBluetoothSignalStrengthFilter ** value) = 0;
};

struct __declspec(uuid("9ba03b18-0fec-436a-93b1-f46c697532a2")) __declspec(novtable) IGattCharacteristicNotificationTriggerDetails : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Characteristic(Windows::Devices::Bluetooth::GenericAttributeProfile::IGattCharacteristic ** value) = 0;
    virtual HRESULT __stdcall get_Value(Windows::Storage::Streams::IBuffer ** value) = 0;
};

struct __declspec(uuid("f922734d-2e3c-4efc-ab59-fc5cf96f97e3")) __declspec(novtable) IRfcommConnectionTriggerDetails : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Socket(Windows::Networking::Sockets::IStreamSocket ** value) = 0;
    virtual HRESULT __stdcall get_Incoming(bool * value) = 0;
    virtual HRESULT __stdcall get_RemoteDevice(Windows::Devices::Bluetooth::IBluetoothDevice ** value) = 0;
};

struct __declspec(uuid("6d3e75a8-5429-4059-92e3-1e8b65528707")) __declspec(novtable) IRfcommInboundConnectionInformation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_SdpRecord(Windows::Storage::Streams::IBuffer ** value) = 0;
    virtual HRESULT __stdcall put_SdpRecord(Windows::Storage::Streams::IBuffer * value) = 0;
    virtual HRESULT __stdcall get_LocalServiceId(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** value) = 0;
    virtual HRESULT __stdcall put_LocalServiceId(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId * value) = 0;
    virtual HRESULT __stdcall get_ServiceCapabilities(winrt::Windows::Devices::Bluetooth::BluetoothServiceCapabilities * value) = 0;
    virtual HRESULT __stdcall put_ServiceCapabilities(winrt::Windows::Devices::Bluetooth::BluetoothServiceCapabilities value) = 0;
};

struct __declspec(uuid("b091227b-f434-4cb0-99b1-4ab8cedaedd7")) __declspec(novtable) IRfcommOutboundConnectionInformation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_RemoteServiceId(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId ** value) = 0;
    virtual HRESULT __stdcall put_RemoteServiceId(Windows::Devices::Bluetooth::Rfcomm::IRfcommServiceId * value) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Devices::Bluetooth::Background::BluetoothLEAdvertisementPublisherTriggerDetails> { using default_interface = Windows::Devices::Bluetooth::Background::IBluetoothLEAdvertisementPublisherTriggerDetails; };
template <> struct traits<Windows::Devices::Bluetooth::Background::BluetoothLEAdvertisementWatcherTriggerDetails> { using default_interface = Windows::Devices::Bluetooth::Background::IBluetoothLEAdvertisementWatcherTriggerDetails; };
template <> struct traits<Windows::Devices::Bluetooth::Background::GattCharacteristicNotificationTriggerDetails> { using default_interface = Windows::Devices::Bluetooth::Background::IGattCharacteristicNotificationTriggerDetails; };
template <> struct traits<Windows::Devices::Bluetooth::Background::RfcommConnectionTriggerDetails> { using default_interface = Windows::Devices::Bluetooth::Background::IRfcommConnectionTriggerDetails; };
template <> struct traits<Windows::Devices::Bluetooth::Background::RfcommInboundConnectionInformation> { using default_interface = Windows::Devices::Bluetooth::Background::IRfcommInboundConnectionInformation; };
template <> struct traits<Windows::Devices::Bluetooth::Background::RfcommOutboundConnectionInformation> { using default_interface = Windows::Devices::Bluetooth::Background::IRfcommOutboundConnectionInformation; };

}

namespace Windows::Devices::Bluetooth::Background {

template <typename T> struct impl_IBluetoothLEAdvertisementPublisherTriggerDetails;
template <typename T> struct impl_IBluetoothLEAdvertisementWatcherTriggerDetails;
template <typename T> struct impl_IGattCharacteristicNotificationTriggerDetails;
template <typename T> struct impl_IRfcommConnectionTriggerDetails;
template <typename T> struct impl_IRfcommInboundConnectionInformation;
template <typename T> struct impl_IRfcommOutboundConnectionInformation;

}

namespace impl {

template <> struct traits<Windows::Devices::Bluetooth::Background::IBluetoothLEAdvertisementPublisherTriggerDetails>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::IBluetoothLEAdvertisementPublisherTriggerDetails;
    template <typename D> using consume = Windows::Devices::Bluetooth::Background::impl_IBluetoothLEAdvertisementPublisherTriggerDetails<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Background::IBluetoothLEAdvertisementWatcherTriggerDetails>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::IBluetoothLEAdvertisementWatcherTriggerDetails;
    template <typename D> using consume = Windows::Devices::Bluetooth::Background::impl_IBluetoothLEAdvertisementWatcherTriggerDetails<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Background::IGattCharacteristicNotificationTriggerDetails>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::IGattCharacteristicNotificationTriggerDetails;
    template <typename D> using consume = Windows::Devices::Bluetooth::Background::impl_IGattCharacteristicNotificationTriggerDetails<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Background::IRfcommConnectionTriggerDetails>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::IRfcommConnectionTriggerDetails;
    template <typename D> using consume = Windows::Devices::Bluetooth::Background::impl_IRfcommConnectionTriggerDetails<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Background::IRfcommInboundConnectionInformation>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::IRfcommInboundConnectionInformation;
    template <typename D> using consume = Windows::Devices::Bluetooth::Background::impl_IRfcommInboundConnectionInformation<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Background::IRfcommOutboundConnectionInformation>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::IRfcommOutboundConnectionInformation;
    template <typename D> using consume = Windows::Devices::Bluetooth::Background::impl_IRfcommOutboundConnectionInformation<D>;
};

template <> struct traits<Windows::Devices::Bluetooth::Background::BluetoothLEAdvertisementPublisherTriggerDetails>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::BluetoothLEAdvertisementPublisherTriggerDetails;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.Background.BluetoothLEAdvertisementPublisherTriggerDetails"; }
};

template <> struct traits<Windows::Devices::Bluetooth::Background::BluetoothLEAdvertisementWatcherTriggerDetails>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::BluetoothLEAdvertisementWatcherTriggerDetails;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.Background.BluetoothLEAdvertisementWatcherTriggerDetails"; }
};

template <> struct traits<Windows::Devices::Bluetooth::Background::GattCharacteristicNotificationTriggerDetails>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::GattCharacteristicNotificationTriggerDetails;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.Background.GattCharacteristicNotificationTriggerDetails"; }
};

template <> struct traits<Windows::Devices::Bluetooth::Background::RfcommConnectionTriggerDetails>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::RfcommConnectionTriggerDetails;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.Background.RfcommConnectionTriggerDetails"; }
};

template <> struct traits<Windows::Devices::Bluetooth::Background::RfcommInboundConnectionInformation>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::RfcommInboundConnectionInformation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.Background.RfcommInboundConnectionInformation"; }
};

template <> struct traits<Windows::Devices::Bluetooth::Background::RfcommOutboundConnectionInformation>
{
    using abi = ABI::Windows::Devices::Bluetooth::Background::RfcommOutboundConnectionInformation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Bluetooth.Background.RfcommOutboundConnectionInformation"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI {

struct Color;

}

namespace Windows::UI {

using Color = ABI::Windows::UI::Color;

}

namespace ABI::Windows::UI {

struct IColorHelper;
struct IColorHelperStatics;
struct IColors;
struct IColorsStatics;
struct ColorHelper;
struct Colors;

}

namespace Windows::UI {

struct IColorHelper;
struct IColorHelperStatics;
struct IColors;
struct IColorsStatics;
struct ColorHelper;
struct Colors;

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Devices.Lights.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.UI.3.h"
#include "internal/Windows.Devices.Lights.3.h"
#include "Windows.Devices.h"
#include "Windows.Foundation.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Devices::Lights::ILamp> : produce_base<D, Windows::Devices::Lights::ILamp>
{
    HRESULT __stdcall get_DeviceId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DeviceId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IsEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().IsEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BrightnessLevel(float * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BrightnessLevel());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_BrightnessLevel(float value) noexcept override
    {
        try
        {
            this->shim().BrightnessLevel(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsColorSettable(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsColorSettable());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Color(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Color());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Color(abi_arg_in<Windows::UI::Color> value) noexcept override
    {
        try
        {
            this->shim().Color(*reinterpret_cast<const Windows::UI::Color *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_AvailabilityChanged(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Devices::Lights::Lamp, Windows::Devices::Lights::LampAvailabilityChangedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().AvailabilityChanged(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Devices::Lights::Lamp, Windows::Devices::Lights::LampAvailabilityChangedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_AvailabilityChanged(event_token token) noexcept override
    {
        try
        {
            this->shim().AvailabilityChanged(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Lights::ILampAvailabilityChangedEventArgs> : produce_base<D, Windows::Devices::Lights::ILampAvailabilityChangedEventArgs>
{
    HRESULT __stdcall get_IsAvailable(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsAvailable());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Lights::ILampStatics> : produce_base<D, Windows::Devices::Lights::ILampStatics>
{
    HRESULT __stdcall abi_GetDeviceSelector(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeviceSelector());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_FromIdAsync(abi_arg_in<hstring> deviceId, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Devices::Lights::Lamp>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().FromIdAsync(*reinterpret_cast<const hstring *>(&deviceId)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDefaultAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Devices::Lights::Lamp>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetDefaultAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Devices::Lights {

template <typename D> hstring impl_ILampStatics<D>::GetDeviceSelector() const
{
    hstring value;
    check_hresult(static_cast<const ILampStatics &>(static_cast<const D &>(*this))->abi_GetDeviceSelector(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Devices::Lights::Lamp> impl_ILampStatics<D>::FromIdAsync(hstring_ref deviceId) const
{
    Windows::Foundation::IAsyncOperation<Windows::Devices::Lights::Lamp> operation;
    check_hresult(static_cast<const ILampStatics &>(static_cast<const D &>(*this))->abi_FromIdAsync(get(deviceId), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Devices::Lights::Lamp> impl_ILampStatics<D>::GetDefaultAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Devices::Lights::Lamp> operation;
    check_hresult(static_cast<const ILampStatics &>(static_cast<const D &>(*this))->abi_GetDefaultAsync(put(operation)));
    return operation;
}

template <typename D> bool impl_ILampAvailabilityChangedEventArgs<D>::IsAvailable() const
{
    bool value {};
    check_hresult(static_cast<const ILampAvailabilityChangedEventArgs &>(static_cast<const D &>(*this))->get_IsAvailable(&value));
    return value;
}

template <typename D> hstring impl_ILamp<D>::DeviceId() const
{
    hstring value;
    check_hresult(static_cast<const ILamp &>(static_cast<const D &>(*this))->get_DeviceId(put(value)));
    return value;
}

template <typename D> bool impl_ILamp<D>::IsEnabled() const
{
    bool value {};
    check_hresult(static_cast<const ILamp &>(static_cast<const D &>(*this))->get_IsEnabled(&value));
    return value;
}

template <typename D> void impl_ILamp<D>::IsEnabled(bool value) const
{
    check_hresult(static_cast<const ILamp &>(static_cast<const D &>(*this))->put_IsEnabled(value));
}

template <typename D> float impl_ILamp<D>::BrightnessLevel() const
{
    float value {};
    check_hresult(static_cast<const ILamp &>(static_cast<const D &>(*this))->get_BrightnessLevel(&value));
    return value;
}

template <typename D> void impl_ILamp<D>::BrightnessLevel(float value) const
{
    check_hresult(static_cast<const ILamp &>(static_cast<const D &>(*this))->put_BrightnessLevel(value));
}

template <typename D> bool impl_ILamp<D>::IsColorSettable() const
{
    bool value {};
    check_hresult(static_cast<const ILamp &>(static_cast<const D &>(*this))->get_IsColorSettable(&value));
    return value;
}

template <typename D> Windows::UI::Color impl_ILamp<D>::Color() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const ILamp &>(static_cast<const D &>(*this))->get_Color(put(value)));
    return value;
}

template <typename D> void impl_ILamp<D>::Color(const Windows::UI::Color & value) const
{
    check_hresult(static_cast<const ILamp &>(static_cast<const D &>(*this))->put_Color(get(value)));
}

template <typename D> event_token impl_ILamp<D>::AvailabilityChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Lights::Lamp, Windows::Devices::Lights::LampAvailabilityChangedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ILamp &>(static_cast<const D &>(*this))->add_AvailabilityChanged(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ILamp> impl_ILamp<D>::AvailabilityChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Lights::Lamp, Windows::Devices::Lights::LampAvailabilityChangedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, ILamp>(this, &ABI::Windows::Devices::Lights::ILamp::remove_AvailabilityChanged, AvailabilityChanged(handler));
}

template <typename D> void impl_ILamp<D>::AvailabilityChanged(event_token token) const
{
    check_hresult(static_cast<const ILamp &>(static_cast<const D &>(*this))->remove_AvailabilityChanged(token));
}

inline hstring Lamp::GetDeviceSelector()
{
    return get_activation_factory<Lamp, ILampStatics>().GetDeviceSelector();
}

inline Windows::Foundation::IAsyncOperation<Windows::Devices::Lights::Lamp> Lamp::FromIdAsync(hstring_ref deviceId)
{
    return get_activation_factory<Lamp, ILampStatics>().FromIdAsync(deviceId);
}

inline Windows::Foundation::IAsyncOperation<Windows::Devices::Lights::Lamp> Lamp::GetDefaultAsync()
{
    return get_activation_factory<Lamp, ILampStatics>().GetDefaultAsync();
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Controls.Primitives.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Xaml::Controls::Primitives {

struct GeneratorPosition;

}

namespace Windows::UI::Xaml::Controls::Primitives {

using GeneratorPosition = ABI::Windows::UI::Xaml::Controls::Primitives::GeneratorPosition;

}

namespace ABI::Windows::UI::Xaml::Controls::Primitives {

struct DragCompletedEventHandler;
struct DragDeltaEventHandler;
struct DragStartedEventHandler;
struct IAppBarTemplateSettings;
struct IButtonBase;
struct IButtonBaseFactory;
struct IButtonBaseStatics;
struct ICalendarPanel;
struct ICalendarViewTemplateSettings;
struct ICarouselPanel;
struct ICarouselPanelFactory;
struct IComboBoxTemplateSettings;
struct IComboBoxTemplateSettings2;
struct ICommandBarTemplateSettings;
struct ICommandBarTemplateSettings2;
struct ICommandBarTemplateSettings3;
struct IDragCompletedEventArgs;
struct IDragCompletedEventArgsFactory;
struct IDragDeltaEventArgs;
struct IDragDeltaEventArgsFactory;
struct IDragStartedEventArgs;
struct IDragStartedEventArgsFactory;
struct IFlyoutBase;
struct IFlyoutBase2;
struct IFlyoutBaseClosingEventArgs;
struct IFlyoutBaseFactory;
struct IFlyoutBaseOverrides;
struct IFlyoutBaseStatics;
struct IFlyoutBaseStatics2;
struct IGeneratorPositionHelper;
struct IGeneratorPositionHelperStatics;
struct IGridViewItemPresenter;
struct IGridViewItemPresenterFactory;
struct IGridViewItemPresenterStatics;
struct IGridViewItemTemplateSettings;
struct IItemsChangedEventArgs;
struct IJumpListItemBackgroundConverter;
struct IJumpListItemBackgroundConverterStatics;
struct IJumpListItemForegroundConverter;
struct IJumpListItemForegroundConverterStatics;
struct ILayoutInformation;
struct ILayoutInformationStatics;
struct IListViewItemPresenter;
struct IListViewItemPresenter2;
struct IListViewItemPresenterFactory;
struct IListViewItemPresenterStatics;
struct IListViewItemPresenterStatics2;
struct IListViewItemTemplateSettings;
struct ILoopingSelector;
struct ILoopingSelectorItem;
struct ILoopingSelectorPanel;
struct ILoopingSelectorStatics;
struct IMenuFlyoutPresenterTemplateSettings;
struct IOrientedVirtualizingPanel;
struct IOrientedVirtualizingPanelFactory;
struct IPickerFlyoutBase;
struct IPickerFlyoutBaseFactory;
struct IPickerFlyoutBaseOverrides;
struct IPickerFlyoutBaseStatics;
struct IPivotHeaderItem;
struct IPivotHeaderItemFactory;
struct IPivotHeaderPanel;
struct IPivotPanel;
struct IPopup;
struct IPopup2;
struct IPopupStatics;
struct IPopupStatics2;
struct IProgressBarTemplateSettings;
struct IProgressRingTemplateSettings;
struct IRangeBase;
struct IRangeBaseFactory;
struct IRangeBaseOverrides;
struct IRangeBaseStatics;
struct IRangeBaseValueChangedEventArgs;
struct IRepeatButton;
struct IRepeatButtonStatics;
struct IScrollBar;
struct IScrollBarStatics;
struct IScrollEventArgs;
struct IScrollSnapPointsInfo;
struct ISelector;
struct ISelectorFactory;
struct ISelectorItem;
struct ISelectorItemFactory;
struct ISelectorItemStatics;
struct ISelectorStatics;
struct ISettingsFlyoutTemplateSettings;
struct ISplitViewTemplateSettings;
struct IThumb;
struct IThumbStatics;
struct ITickBar;
struct ITickBarStatics;
struct IToggleButton;
struct IToggleButtonFactory;
struct IToggleButtonOverrides;
struct IToggleButtonStatics;
struct IToggleSwitchTemplateSettings;
struct IToolTipTemplateSettings;
struct ItemsChangedEventHandler;
struct RangeBaseValueChangedEventHandler;
struct ScrollEventHandler;
struct AppBarTemplateSettings;
struct ButtonBase;
struct CalendarPanel;
struct CalendarViewTemplateSettings;
struct CarouselPanel;
struct ComboBoxTemplateSettings;
struct CommandBarTemplateSettings;
struct DragCompletedEventArgs;
struct DragDeltaEventArgs;
struct DragStartedEventArgs;
struct FlyoutBase;
struct FlyoutBaseClosingEventArgs;
struct GeneratorPositionHelper;
struct GridViewItemPresenter;
struct GridViewItemTemplateSettings;
struct ItemsChangedEventArgs;
struct JumpListItemBackgroundConverter;
struct JumpListItemForegroundConverter;
struct LayoutInformation;
struct ListViewItemPresenter;
struct ListViewItemTemplateSettings;
struct LoopingSelector;
struct LoopingSelectorItem;
struct LoopingSelectorPanel;
struct MenuFlyoutPresenterTemplateSettings;
struct OrientedVirtualizingPanel;
struct PickerFlyoutBase;
struct PivotHeaderItem;
struct PivotHeaderPanel;
struct PivotPanel;
struct Popup;
struct ProgressBarTemplateSettings;
struct ProgressRingTemplateSettings;
struct RangeBase;
struct RangeBaseValueChangedEventArgs;
struct RepeatButton;
struct ScrollBar;
struct ScrollEventArgs;
struct Selector;
struct SelectorItem;
struct SettingsFlyoutTemplateSettings;
struct SplitViewTemplateSettings;
struct Thumb;
struct TickBar;
struct ToggleButton;
struct ToggleSwitchTemplateSettings;
struct ToolTipTemplateSettings;

}

namespace Windows::UI::Xaml::Controls::Primitives {

struct DragCompletedEventHandler;
struct DragDeltaEventHandler;
struct DragStartedEventHandler;
struct ItemsChangedEventHandler;
struct RangeBaseValueChangedEventHandler;
struct ScrollEventHandler;
struct IAppBarTemplateSettings;
struct IButtonBase;
struct IButtonBaseFactory;
struct IButtonBaseStatics;
struct ICalendarPanel;
struct ICalendarViewTemplateSettings;
struct ICarouselPanel;
struct ICarouselPanelFactory;
struct IComboBoxTemplateSettings;
struct IComboBoxTemplateSettings2;
struct ICommandBarTemplateSettings;
struct ICommandBarTemplateSettings2;
struct ICommandBarTemplateSettings3;
struct IDragCompletedEventArgs;
struct IDragCompletedEventArgsFactory;
struct IDragDeltaEventArgs;
struct IDragDeltaEventArgsFactory;
struct IDragStartedEventArgs;
struct IDragStartedEventArgsFactory;
struct IFlyoutBase;
struct IFlyoutBase2;
struct IFlyoutBaseClosingEventArgs;
struct IFlyoutBaseFactory;
struct IFlyoutBaseOverrides;
struct IFlyoutBaseStatics;
struct IFlyoutBaseStatics2;
struct IGeneratorPositionHelper;
struct IGeneratorPositionHelperStatics;
struct IGridViewItemPresenter;
struct IGridViewItemPresenterFactory;
struct IGridViewItemPresenterStatics;
struct IGridViewItemTemplateSettings;
struct IItemsChangedEventArgs;
struct IJumpListItemBackgroundConverter;
struct IJumpListItemBackgroundConverterStatics;
struct IJumpListItemForegroundConverter;
struct IJumpListItemForegroundConverterStatics;
struct ILayoutInformation;
struct ILayoutInformationStatics;
struct IListViewItemPresenter;
struct IListViewItemPresenter2;
struct IListViewItemPresenterFactory;
struct IListViewItemPresenterStatics;
struct IListViewItemPresenterStatics2;
struct IListViewItemTemplateSettings;
struct ILoopingSelector;
struct ILoopingSelectorItem;
struct ILoopingSelectorPanel;
struct ILoopingSelectorStatics;
struct IMenuFlyoutPresenterTemplateSettings;
struct IOrientedVirtualizingPanel;
struct IOrientedVirtualizingPanelFactory;
struct IPickerFlyoutBase;
struct IPickerFlyoutBaseFactory;
struct IPickerFlyoutBaseOverrides;
struct IPickerFlyoutBaseStatics;
struct IPivotHeaderItem;
struct IPivotHeaderItemFactory;
struct IPivotHeaderPanel;
struct IPivotPanel;
struct IPopup;
struct IPopup2;
struct IPopupStatics;
struct IPopupStatics2;
struct IProgressBarTemplateSettings;
struct IProgressRingTemplateSettings;
struct IRangeBase;
struct IRangeBaseFactory;
struct IRangeBaseOverrides;
struct IRangeBaseStatics;
struct IRangeBaseValueChangedEventArgs;
struct IRepeatButton;
struct IRepeatButtonStatics;
struct IScrollBar;
struct IScrollBarStatics;
struct IScrollEventArgs;
struct IScrollSnapPointsInfo;
struct ISelector;
struct ISelectorFactory;
struct ISelectorItem;
struct ISelectorItemFactory;
struct ISelectorItemStatics;
struct ISelectorStatics;
struct ISettingsFlyoutTemplateSettings;
struct ISplitViewTemplateSettings;
struct IThumb;
struct IThumbStatics;
struct ITickBar;
struct ITickBarStatics;
struct IToggleButton;
struct IToggleButtonFactory;
struct IToggleButtonOverrides;
struct IToggleButtonStatics;
struct IToggleSwitchTemplateSettings;
struct IToolTipTemplateSettings;
struct AppBarTemplateSettings;
struct ButtonBase;
struct CalendarPanel;
struct CalendarViewTemplateSettings;
struct CarouselPanel;
struct ComboBoxTemplateSettings;
struct CommandBarTemplateSettings;
struct DragCompletedEventArgs;
struct DragDeltaEventArgs;
struct DragStartedEventArgs;
struct FlyoutBase;
struct FlyoutBaseClosingEventArgs;
struct GeneratorPositionHelper;
struct GridViewItemPresenter;
struct GridViewItemTemplateSettings;
struct ItemsChangedEventArgs;
struct JumpListItemBackgroundConverter;
struct JumpListItemForegroundConverter;
struct LayoutInformation;
struct ListViewItemPresenter;
struct ListViewItemTemplateSettings;
struct LoopingSelector;
struct LoopingSelectorItem;
struct LoopingSelectorPanel;
struct MenuFlyoutPresenterTemplateSettings;
struct OrientedVirtualizingPanel;
struct PickerFlyoutBase;
struct PivotHeaderItem;
struct PivotHeaderPanel;
struct PivotPanel;
struct Popup;
struct ProgressBarTemplateSettings;
struct ProgressRingTemplateSettings;
struct RangeBase;
struct RangeBaseValueChangedEventArgs;
struct RepeatButton;
struct ScrollBar;
struct ScrollEventArgs;
struct Selector;
struct SelectorItem;
struct SettingsFlyoutTemplateSettings;
struct SplitViewTemplateSettings;
struct Thumb;
struct TickBar;
struct ToggleButton;
struct ToggleSwitchTemplateSettings;
struct ToolTipTemplateSettings;

}

namespace Windows::UI::Xaml::Controls::Primitives {

enum class AnimationDirection
{
    Left = 0,
    Top = 1,
    Right = 2,
    Bottom = 3,
};

enum class ComponentResourceLocation
{
    Application = 0,
    Nested = 1,
};

enum class EdgeTransitionLocation
{
    Left = 0,
    Top = 1,
    Right = 2,
    Bottom = 3,
};

enum class FlyoutPlacementMode
{
    Top = 0,
    Bottom = 1,
    Left = 2,
    Right = 3,
    Full = 4,
};

enum class GeneratorDirection
{
    Forward = 0,
    Backward = 1,
};

enum class GroupHeaderPlacement
{
    Top = 0,
    Left = 1,
};

enum class ListViewItemPresenterCheckMode
{
    Inline = 0,
    Overlay = 1,
};

enum class PlacementMode
{
    Bottom = 2,
    Left = 9,
    Mouse = 7,
    Right = 4,
    Top = 10,
};

enum class ScrollEventType
{
    SmallDecrement = 0,
    SmallIncrement = 1,
    LargeDecrement = 2,
    LargeIncrement = 3,
    ThumbPosition = 4,
    ThumbTrack = 5,
    First = 6,
    Last = 7,
    EndScroll = 8,
};

enum class ScrollingIndicatorMode
{
    None = 0,
    TouchIndicator = 1,
    MouseIndicator = 2,
};

enum class SliderSnapsTo
{
    StepValues = 0,
    Ticks = 1,
};

enum class SnapPointsAlignment
{
    Near = 0,
    Center = 1,
    Far = 2,
};

enum class TickPlacement
{
    None = 0,
    TopLeft = 1,
    BottomRight = 2,
    Outside = 3,
    Inline = 4,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Wallet.System.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.ApplicationModel.Wallet.System.0.h"
#include "Windows.ApplicationModel.Wallet.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.ApplicationModel.Wallet.1.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::ApplicationModel::Wallet::System {

struct __declspec(uuid("522e2bff-96a2-4a17-8d19-fe1d9f837561")) __declspec(novtable) IWalletItemSystemStore : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetItemsAsync(Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Wallet::WalletItem>> ** operation) = 0;
    virtual HRESULT __stdcall abi_DeleteAsync(Windows::ApplicationModel::Wallet::IWalletItem * item, Windows::Foundation::IAsyncAction ** operation) = 0;
    virtual HRESULT __stdcall abi_ImportItemAsync(Windows::Storage::Streams::IRandomAccessStreamReference * stream, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Wallet::WalletItem> ** operation) = 0;
    virtual HRESULT __stdcall abi_GetAppStatusForItem(Windows::ApplicationModel::Wallet::IWalletItem * item, winrt::Windows::ApplicationModel::Wallet::System::WalletItemAppAssociation * result) = 0;
    virtual HRESULT __stdcall abi_LaunchAppForItemAsync(Windows::ApplicationModel::Wallet::IWalletItem * item, Windows::Foundation::IAsyncOperation<bool> ** operation) = 0;
};

struct __declspec(uuid("f98d3a4e-be00-4fdd-9734-6c113c1ac1cb")) __declspec(novtable) IWalletItemSystemStore2 : Windows::IInspectable
{
    virtual HRESULT __stdcall add_ItemsChanged(Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Wallet::System::WalletItemSystemStore, Windows::IInspectable> * handler, event_token * cookie) = 0;
    virtual HRESULT __stdcall remove_ItemsChanged(event_token cookie) = 0;
};

struct __declspec(uuid("bee8eb89-2634-4b9a-8b23-ee8903c91fe0")) __declspec(novtable) IWalletManagerSystemStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_RequestStoreAsync(Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Wallet::System::WalletItemSystemStore> ** operation) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::ApplicationModel::Wallet::System::WalletItemSystemStore> { using default_interface = Windows::ApplicationModel::Wallet::System::IWalletItemSystemStore; };

}

namespace Windows::ApplicationModel::Wallet::System {

template <typename T> struct impl_IWalletItemSystemStore;
template <typename T> struct impl_IWalletItemSystemStore2;
template <typename T> struct impl_IWalletManagerSystemStatics;

}

namespace impl {

template <> struct traits<Windows::ApplicationModel::Wallet::System::IWalletItemSystemStore>
{
    using abi = ABI::Windows::ApplicationModel::Wallet::System::IWalletItemSystemStore;
    template <typename D> using consume = Windows::ApplicationModel::Wallet::System::impl_IWalletItemSystemStore<D>;
};

template <> struct traits<Windows::ApplicationModel::Wallet::System::IWalletItemSystemStore2>
{
    using abi = ABI::Windows::ApplicationModel::Wallet::System::IWalletItemSystemStore2;
    template <typename D> using consume = Windows::ApplicationModel::Wallet::System::impl_IWalletItemSystemStore2<D>;
};

template <> struct traits<Windows::ApplicationModel::Wallet::System::IWalletManagerSystemStatics>
{
    using abi = ABI::Windows::ApplicationModel::Wallet::System::IWalletManagerSystemStatics;
    template <typename D> using consume = Windows::ApplicationModel::Wallet::System::impl_IWalletManagerSystemStatics<D>;
};

template <> struct traits<Windows::ApplicationModel::Wallet::System::WalletItemSystemStore>
{
    using abi = ABI::Windows::ApplicationModel::Wallet::System::WalletItemSystemStore;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Wallet.System.WalletItemSystemStore"; }
};

template <> struct traits<Windows::ApplicationModel::Wallet::System::WalletManagerSystem>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Wallet.System.WalletManagerSystem"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Foundation.Diagnostics.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation::Diagnostics {

struct IAsyncCausalityTracerStatics;
struct IErrorDetails;
struct IErrorDetailsStatics;
struct IErrorReportingSettings;
struct IFileLoggingSession;
struct IFileLoggingSessionFactory;
struct ILogFileGeneratedEventArgs;
struct ILoggingActivity;
struct ILoggingActivity2;
struct ILoggingActivityFactory;
struct ILoggingChannel;
struct ILoggingChannel2;
struct ILoggingChannelFactory;
struct ILoggingChannelFactory2;
struct ILoggingChannelOptions;
struct ILoggingChannelOptionsFactory;
struct ILoggingFields;
struct ILoggingOptions;
struct ILoggingOptionsFactory;
struct ILoggingSession;
struct ILoggingSessionFactory;
struct ILoggingTarget;
struct ITracingStatusChangedEventArgs;
struct ErrorDetails;
struct FileLoggingSession;
struct LogFileGeneratedEventArgs;
struct LoggingActivity;
struct LoggingChannel;
struct LoggingChannelOptions;
struct LoggingFields;
struct LoggingOptions;
struct LoggingSession;
struct RuntimeBrokerErrorSettings;
struct TracingStatusChangedEventArgs;

}

namespace Windows::Foundation::Diagnostics {

struct IAsyncCausalityTracerStatics;
struct IErrorDetails;
struct IErrorDetailsStatics;
struct IErrorReportingSettings;
struct IFileLoggingSession;
struct IFileLoggingSessionFactory;
struct ILogFileGeneratedEventArgs;
struct ILoggingActivity;
struct ILoggingActivity2;
struct ILoggingActivityFactory;
struct ILoggingChannel;
struct ILoggingChannel2;
struct ILoggingChannelFactory;
struct ILoggingChannelFactory2;
struct ILoggingChannelOptions;
struct ILoggingChannelOptionsFactory;
struct ILoggingFields;
struct ILoggingOptions;
struct ILoggingOptionsFactory;
struct ILoggingSession;
struct ILoggingSessionFactory;
struct ILoggingTarget;
struct ITracingStatusChangedEventArgs;
struct AsyncCausalityTracer;
struct ErrorDetails;
struct FileLoggingSession;
struct LogFileGeneratedEventArgs;
struct LoggingActivity;
struct LoggingChannel;
struct LoggingChannelOptions;
struct LoggingFields;
struct LoggingOptions;
struct LoggingSession;
struct RuntimeBrokerErrorSettings;
struct TracingStatusChangedEventArgs;

}

namespace Windows::Foundation::Diagnostics {

enum class CausalityRelation
{
    AssignDelegate = 0,
    Join = 1,
    Choice = 2,
    Cancel = 3,
    Error = 4,
};

enum class CausalitySource
{
    Application = 0,
    Library = 1,
    System = 2,
};

enum class CausalitySynchronousWork
{
    CompletionNotification = 0,
    ProgressNotification = 1,
    Execution = 2,
};

enum class CausalityTraceLevel
{
    Required = 0,
    Important = 1,
    Verbose = 2,
};

enum class ErrorOptions : unsigned
{
    None = 0x0,
    SuppressExceptions = 0x1,
    ForceExceptions = 0x2,
    UseSetErrorInfo = 0x4,
    SuppressSetErrorInfo = 0x8,
};

DEFINE_ENUM_FLAG_OPERATORS(ErrorOptions)

enum class LoggingFieldFormat
{
    Default = 0,
    Hidden = 1,
    String = 2,
    Boolean = 3,
    Hexadecimal = 4,
    ProcessId = 5,
    ThreadId = 6,
    Port = 7,
    Ipv4Address = 8,
    Ipv6Address = 9,
    SocketAddress = 10,
    Xml = 11,
    Json = 12,
    Win32Error = 13,
    NTStatus = 14,
    HResult = 15,
    FileTime = 16,
    Signed = 17,
    Unsigned = 18,
};

enum class LoggingLevel
{
    Verbose = 0,
    Information = 1,
    Warning = 2,
    Error = 3,
    Critical = 4,
};

enum class LoggingOpcode
{
    Info = 0,
    Start = 1,
    Stop = 2,
    Reply = 6,
    Resume = 7,
    Suspend = 8,
    Send = 9,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.System.Power.Diagnostics.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.System.Power.Diagnostics.1.h"

WINRT_EXPORT namespace winrt {

namespace Windows::System::Power::Diagnostics {

template <typename D>
struct WINRT_EBO impl_IBackgroundEnergyDiagnosticsStatics
{
    double DeviceSpecificConversionFactor() const;
    uint64_t ComputeTotalEnergyUsage() const;
    void ResetTotalEnergyUsage() const;
};

template <typename D>
struct WINRT_EBO impl_IForegroundEnergyDiagnosticsStatics
{
    double DeviceSpecificConversionFactor() const;
    uint64_t ComputeTotalEnergyUsage() const;
    void ResetTotalEnergyUsage() const;
};

struct IBackgroundEnergyDiagnosticsStatics :
    Windows::IInspectable,
    impl::consume<IBackgroundEnergyDiagnosticsStatics>
{
    IBackgroundEnergyDiagnosticsStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBackgroundEnergyDiagnosticsStatics>(m_ptr); }
};

struct IForegroundEnergyDiagnosticsStatics :
    Windows::IInspectable,
    impl::consume<IForegroundEnergyDiagnosticsStatics>
{
    IForegroundEnergyDiagnosticsStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IForegroundEnergyDiagnosticsStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.ApplicationModel.UserDataAccounts.Provider.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.ApplicationModel.UserDataAccounts.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.ApplicationModel.UserDataAccounts.Provider.3.h"
#include "Windows.ApplicationModel.UserDataAccounts.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::ApplicationModel::UserDataAccounts::Provider::IUserDataAccountPartnerAccountInfo> : produce_base<D, Windows::ApplicationModel::UserDataAccounts::Provider::IUserDataAccountPartnerAccountInfo>
{
    HRESULT __stdcall get_DisplayName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DisplayName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Priority(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Priority());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AccountKind(Windows::ApplicationModel::UserDataAccounts::Provider::UserDataAccountProviderPartnerAccountKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AccountKind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::UserDataAccounts::Provider::IUserDataAccountProviderAddAccountOperation> : produce_base<D, Windows::ApplicationModel::UserDataAccounts::Provider::IUserDataAccountProviderAddAccountOperation>
{
    HRESULT __stdcall get_ContentKinds(Windows::ApplicationModel::UserDataAccounts::UserDataAccountContentKinds * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ContentKinds());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PartnerAccountInfos(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::UserDataAccounts::Provider::UserDataAccountPartnerAccountInfo>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PartnerAccountInfos());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompleted(abi_arg_in<hstring> userDataAccountId) noexcept override
    {
        try
        {
            this->shim().ReportCompleted(*reinterpret_cast<const hstring *>(&userDataAccountId));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::UserDataAccounts::Provider::IUserDataAccountProviderOperation> : produce_base<D, Windows::ApplicationModel::UserDataAccounts::Provider::IUserDataAccountProviderOperation>
{
    HRESULT __stdcall get_Kind(Windows::ApplicationModel::UserDataAccounts::Provider::UserDataAccountProviderOperationKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Kind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::UserDataAccounts::Provider::IUserDataAccountProviderResolveErrorsOperation> : produce_base<D, Windows::ApplicationModel::UserDataAccounts::Provider::IUserDataAccountProviderResolveErrorsOperation>
{
    HRESULT __stdcall get_UserDataAccountId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UserDataAccountId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompleted() noexcept override
    {
        try
        {
            this->shim().ReportCompleted();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::UserDataAccounts::Provider::IUserDataAccountProviderSettingsOperation> : produce_base<D, Windows::ApplicationModel::UserDataAccounts::Provider::IUserDataAccountProviderSettingsOperation>
{
    HRESULT __stdcall get_UserDataAccountId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UserDataAccountId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompleted() noexcept override
    {
        try
        {
            this->shim().ReportCompleted();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::ApplicationModel::UserDataAccounts::Provider {

template <typename D> Windows::ApplicationModel::UserDataAccounts::Provider::UserDataAccountProviderOperationKind impl_IUserDataAccountProviderOperation<D>::Kind() const
{
    Windows::ApplicationModel::UserDataAccounts::Provider::UserDataAccountProviderOperationKind value {};
    check_hresult(static_cast<const IUserDataAccountProviderOperation &>(static_cast<const D &>(*this))->get_Kind(&value));
    return value;
}

template <typename D> Windows::ApplicationModel::UserDataAccounts::UserDataAccountContentKinds impl_IUserDataAccountProviderAddAccountOperation<D>::ContentKinds() const
{
    Windows::ApplicationModel::UserDataAccounts::UserDataAccountContentKinds value {};
    check_hresult(static_cast<const IUserDataAccountProviderAddAccountOperation &>(static_cast<const D &>(*this))->get_ContentKinds(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::UserDataAccounts::Provider::UserDataAccountPartnerAccountInfo> impl_IUserDataAccountProviderAddAccountOperation<D>::PartnerAccountInfos() const
{
    Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::UserDataAccounts::Provider::UserDataAccountPartnerAccountInfo> value;
    check_hresult(static_cast<const IUserDataAccountProviderAddAccountOperation &>(static_cast<const D &>(*this))->get_PartnerAccountInfos(put(value)));
    return value;
}

template <typename D> void impl_IUserDataAccountProviderAddAccountOperation<D>::ReportCompleted(hstring_ref userDataAccountId) const
{
    check_hresult(static_cast<const IUserDataAccountProviderAddAccountOperation &>(static_cast<const D &>(*this))->abi_ReportCompleted(get(userDataAccountId)));
}

template <typename D> hstring impl_IUserDataAccountPartnerAccountInfo<D>::DisplayName() const
{
    hstring value;
    check_hresult(static_cast<const IUserDataAccountPartnerAccountInfo &>(static_cast<const D &>(*this))->get_DisplayName(put(value)));
    return value;
}

template <typename D> uint32_t impl_IUserDataAccountPartnerAccountInfo<D>::Priority() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUserDataAccountPartnerAccountInfo &>(static_cast<const D &>(*this))->get_Priority(&value));
    return value;
}

template <typename D> Windows::ApplicationModel::UserDataAccounts::Provider::UserDataAccountProviderPartnerAccountKind impl_IUserDataAccountPartnerAccountInfo<D>::AccountKind() const
{
    Windows::ApplicationModel::UserDataAccounts::Provider::UserDataAccountProviderPartnerAccountKind value {};
    check_hresult(static_cast<const IUserDataAccountPartnerAccountInfo &>(static_cast<const D &>(*this))->get_AccountKind(&value));
    return value;
}

template <typename D> hstring impl_IUserDataAccountProviderSettingsOperation<D>::UserDataAccountId() const
{
    hstring value;
    check_hresult(static_cast<const IUserDataAccountProviderSettingsOperation &>(static_cast<const D &>(*this))->get_UserDataAccountId(put(value)));
    return value;
}

template <typename D> void impl_IUserDataAccountProviderSettingsOperation<D>::ReportCompleted() const
{
    check_hresult(static_cast<const IUserDataAccountProviderSettingsOperation &>(static_cast<const D &>(*this))->abi_ReportCompleted());
}

template <typename D> hstring impl_IUserDataAccountProviderResolveErrorsOperation<D>::UserDataAccountId() const
{
    hstring value;
    check_hresult(static_cast<const IUserDataAccountProviderResolveErrorsOperation &>(static_cast<const D &>(*this))->get_UserDataAccountId(put(value)));
    return value;
}

template <typename D> void impl_IUserDataAccountProviderResolveErrorsOperation<D>::ReportCompleted() const
{
    check_hresult(static_cast<const IUserDataAccountProviderResolveErrorsOperation &>(static_cast<const D &>(*this))->abi_ReportCompleted());
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Media.Render.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Media.Render.3.h"
#include "Windows.Media.h"

WINRT_EXPORT namespace winrt {

namespace impl {

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Storage.AccessCache.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Storage.AccessCache.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Storage::AccessCache {

struct WINRT_EBO AccessListEntryView :
    Windows::Foundation::Collections::IVectorView<Windows::Storage::AccessCache::AccessListEntry>
{
    AccessListEntryView(std::nullptr_t) noexcept {}
};

struct WINRT_EBO ItemRemovedEventArgs :
    Windows::Storage::AccessCache::IItemRemovedEventArgs
{
    ItemRemovedEventArgs(std::nullptr_t) noexcept {}
};

struct StorageApplicationPermissions
{
    StorageApplicationPermissions() = delete;
    static Windows::Storage::AccessCache::StorageItemAccessList FutureAccessList();
    static Windows::Storage::AccessCache::StorageItemMostRecentlyUsedList MostRecentlyUsedList();
};

struct WINRT_EBO StorageItemAccessList :
    Windows::Storage::AccessCache::IStorageItemAccessList
{
    StorageItemAccessList(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StorageItemMostRecentlyUsedList :
    Windows::Storage::AccessCache::IStorageItemMostRecentlyUsedList,
    impl::require<StorageItemMostRecentlyUsedList, Windows::Storage::AccessCache::IStorageItemMostRecentlyUsedList2>
{
    StorageItemMostRecentlyUsedList(std::nullptr_t) noexcept {}
    using impl_IStorageItemAccessList::Add;
    using impl_IStorageItemAccessList::AddOrReplace;
    using impl_IStorageItemMostRecentlyUsedList2::Add;
    using impl_IStorageItemMostRecentlyUsedList2::AddOrReplace;
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Services.Store.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Services.Store.1.h"
#include "Windows.Foundation.2.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
#define WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
template <> struct __declspec(uuid("cdb5efb3-5788-509d-9be1-71ccb8a3362a")) __declspec(novtable) IAsyncOperation<bool> : impl_IAsyncOperation<bool> {};
#endif

#ifndef WINRT_GENERIC_3e1fe603_f897_5263_b328_0806426b8a79
#define WINRT_GENERIC_3e1fe603_f897_5263_b328_0806426b8a79
template <> struct __declspec(uuid("3e1fe603-f897-5263-b328-0806426b8a79")) __declspec(novtable) IAsyncOperation<hstring> : impl_IAsyncOperation<hstring> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
#define WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
template <> struct __declspec(uuid("2f13c006-a03a-5f69-b090-75a43e33423e")) __declspec(novtable) IVectorView<hstring> : impl_IVectorView<hstring> {};
#endif

#ifndef WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
#define WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
template <> struct __declspec(uuid("e2fcc7c1-3bfc-5a0b-b2b0-72e769d1cb7e")) __declspec(novtable) IIterable<hstring> : impl_IIterable<hstring> {};
#endif

#ifndef WINRT_GENERIC_dbaac6e5_61a4_5c88_b5d8_3a3e161c3e4a
#define WINRT_GENERIC_dbaac6e5_61a4_5c88_b5d8_3a3e161c3e4a
template <> struct __declspec(uuid("dbaac6e5-61a4-5c88-b5d8-3a3e161c3e4a")) __declspec(novtable) IMapView<hstring, Windows::Services::Store::StoreProduct> : impl_IMapView<hstring, Windows::Services::Store::StoreProduct> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_3079e7db_1ba4_5b9e_856a_6576bf7f9c8a
#define WINRT_GENERIC_3079e7db_1ba4_5b9e_856a_6576bf7f9c8a
template <> struct __declspec(uuid("3079e7db-1ba4-5b9e-856a-6576bf7f9c8a")) __declspec(novtable) IAsyncOperation<Windows::Services::Store::StoreProductPagedQueryResult> : impl_IAsyncOperation<Windows::Services::Store::StoreProductPagedQueryResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_7d0d74f5_4020_54aa_9f3d_0f17127acddf
#define WINRT_GENERIC_7d0d74f5_4020_54aa_9f3d_0f17127acddf
template <> struct __declspec(uuid("7d0d74f5-4020-54aa-9f3d-0f17127acddf")) __declspec(novtable) IMapView<hstring, Windows::Services::Store::StoreLicense> : impl_IMapView<hstring, Windows::Services::Store::StoreLicense> {};
#endif

#ifndef WINRT_GENERIC_7e1ceace_82bd_5db3_8f35_9bf0c88ef839
#define WINRT_GENERIC_7e1ceace_82bd_5db3_8f35_9bf0c88ef839
template <> struct __declspec(uuid("7e1ceace-82bd-5db3-8f35-9bf0c88ef839")) __declspec(novtable) IVectorView<Windows::Services::Store::StoreImage> : impl_IVectorView<Windows::Services::Store::StoreImage> {};
#endif

#ifndef WINRT_GENERIC_6e31fca5_119e_5799_a51b_cd6addecd870
#define WINRT_GENERIC_6e31fca5_119e_5799_a51b_cd6addecd870
template <> struct __declspec(uuid("6e31fca5-119e-5799-a51b-cd6addecd870")) __declspec(novtable) IVectorView<Windows::Services::Store::StoreVideo> : impl_IVectorView<Windows::Services::Store::StoreVideo> {};
#endif

#ifndef WINRT_GENERIC_407c4593_063d_5c9b_b8e0_949fe1387963
#define WINRT_GENERIC_407c4593_063d_5c9b_b8e0_949fe1387963
template <> struct __declspec(uuid("407c4593-063d-5c9b-b8e0-949fe1387963")) __declspec(novtable) IVectorView<Windows::Services::Store::StoreSku> : impl_IVectorView<Windows::Services::Store::StoreSku> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_33d8cc30_78f5_5f81_aa2d_a4fa2a3b1c68
#define WINRT_GENERIC_33d8cc30_78f5_5f81_aa2d_a4fa2a3b1c68
template <> struct __declspec(uuid("33d8cc30-78f5-5f81-aa2d-a4fa2a3b1c68")) __declspec(novtable) IAsyncOperation<Windows::Services::Store::StorePurchaseResult> : impl_IAsyncOperation<Windows::Services::Store::StorePurchaseResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_01e5f751_8c50_52cb_abc2_e9862402c78a
#define WINRT_GENERIC_01e5f751_8c50_52cb_abc2_e9862402c78a
template <> struct __declspec(uuid("01e5f751-8c50-52cb-abc2-e9862402c78a")) __declspec(novtable) IVectorView<Windows::Services::Store::StoreAvailability> : impl_IVectorView<Windows::Services::Store::StoreAvailability> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_2acdffe8_259c_5eae_93c1_13a23c74dfee
#define WINRT_GENERIC_2acdffe8_259c_5eae_93c1_13a23c74dfee
template <> struct __declspec(uuid("2acdffe8-259c-5eae-93c1-13a23c74dfee")) __declspec(novtable) IAsyncOperation<Windows::Services::Store::StoreSendRequestResult> : impl_IAsyncOperation<Windows::Services::Store::StoreSendRequestResult> {};
#endif

#ifndef WINRT_GENERIC_d5a00ac7_082d_547c_a04b_2540c1cde97a
#define WINRT_GENERIC_d5a00ac7_082d_547c_a04b_2540c1cde97a
template <> struct __declspec(uuid("d5a00ac7-082d-547c-a04b-2540c1cde97a")) __declspec(novtable) TypedEventHandler<Windows::Services::Store::StoreContext, Windows::IInspectable> : impl_TypedEventHandler<Windows::Services::Store::StoreContext, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_3866370b_afc6_5d01_84c2_4574628de539
#define WINRT_GENERIC_3866370b_afc6_5d01_84c2_4574628de539
template <> struct __declspec(uuid("3866370b-afc6-5d01-84c2-4574628de539")) __declspec(novtable) IAsyncOperation<Windows::Services::Store::StoreAppLicense> : impl_IAsyncOperation<Windows::Services::Store::StoreAppLicense> {};
#endif

#ifndef WINRT_GENERIC_9e61e86b_6afb_50ae_afc1_c59f545108dd
#define WINRT_GENERIC_9e61e86b_6afb_50ae_afc1_c59f545108dd
template <> struct __declspec(uuid("9e61e86b-6afb-50ae-afc1-c59f545108dd")) __declspec(novtable) IAsyncOperation<Windows::Services::Store::StoreProductResult> : impl_IAsyncOperation<Windows::Services::Store::StoreProductResult> {};
#endif

#ifndef WINRT_GENERIC_9699e7bb_ea1f_5e03_9439_c80e6977b711
#define WINRT_GENERIC_9699e7bb_ea1f_5e03_9439_c80e6977b711
template <> struct __declspec(uuid("9699e7bb-ea1f-5e03-9439-c80e6977b711")) __declspec(novtable) IAsyncOperation<Windows::Services::Store::StoreProductQueryResult> : impl_IAsyncOperation<Windows::Services::Store::StoreProductQueryResult> {};
#endif

#ifndef WINRT_GENERIC_873c497b_c3f7_5657_b921_3e58ce48ee50
#define WINRT_GENERIC_873c497b_c3f7_5657_b921_3e58ce48ee50
template <> struct __declspec(uuid("873c497b-c3f7-5657-b921-3e58ce48ee50")) __declspec(novtable) IAsyncOperation<Windows::Services::Store::StoreConsumableResult> : impl_IAsyncOperation<Windows::Services::Store::StoreConsumableResult> {};
#endif

#ifndef WINRT_GENERIC_dd6c4705_a76c_528e_99a5_cdd13197d4cf
#define WINRT_GENERIC_dd6c4705_a76c_528e_99a5_cdd13197d4cf
template <> struct __declspec(uuid("dd6c4705-a76c-528e-99a5-cdd13197d4cf")) __declspec(novtable) IAsyncOperation<Windows::Services::Store::StoreAcquireLicenseResult> : impl_IAsyncOperation<Windows::Services::Store::StoreAcquireLicenseResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_971c3ea6_4388_5a38_ae13_4929b6d6d780
#define WINRT_GENERIC_971c3ea6_4388_5a38_ae13_4929b6d6d780
template <> struct __declspec(uuid("971c3ea6-4388-5a38-ae13-4929b6d6d780")) __declspec(novtable) IVectorView<Windows::Services::Store::StorePackageUpdate> : impl_IVectorView<Windows::Services::Store::StorePackageUpdate> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_42c436ca_51f7_50b2_8fe4_7b754062e6eb
#define WINRT_GENERIC_42c436ca_51f7_50b2_8fe4_7b754062e6eb
template <> struct __declspec(uuid("42c436ca-51f7-50b2-8fe4-7b754062e6eb")) __declspec(novtable) IAsyncOperationWithProgress<Windows::Services::Store::StorePackageUpdateResult, Windows::Services::Store::StorePackageUpdateStatus> : impl_IAsyncOperationWithProgress<Windows::Services::Store::StorePackageUpdateResult, Windows::Services::Store::StorePackageUpdateStatus> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_6b076c51_849e_5ec5_aed5_9b0585591902
#define WINRT_GENERIC_6b076c51_849e_5ec5_aed5_9b0585591902
template <> struct __declspec(uuid("6b076c51-849e-5ec5-aed5-9b0585591902")) __declspec(novtable) IIterable<Windows::Services::Store::StorePackageUpdate> : impl_IIterable<Windows::Services::Store::StorePackageUpdate> {};
#endif

#ifndef WINRT_GENERIC_68e2f036_4982_55e3_8c0f_9bf4e69aa45a
#define WINRT_GENERIC_68e2f036_4982_55e3_8c0f_9bf4e69aa45a
template <> struct __declspec(uuid("68e2f036-4982-55e3-8c0f-9bf4e69aa45a")) __declspec(novtable) IVectorView<Windows::Services::Store::StorePackageUpdateStatus> : impl_IVectorView<Windows::Services::Store::StorePackageUpdateStatus> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_6c59d637_2970_5f64_9511_d39ac245bc94
#define WINRT_GENERIC_6c59d637_2970_5f64_9511_d39ac245bc94
template <> struct __declspec(uuid("6c59d637-2970-5f64-9511-d39ac245bc94")) __declspec(novtable) TypedEventHandler<Windows::Services::Store::StorePackageLicense, Windows::IInspectable> : impl_TypedEventHandler<Windows::Services::Store::StorePackageLicense, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
#define WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
template <> struct __declspec(uuid("c1d3d1a2-ae17-5a5f-b5a2-bdcc8844889a")) __declspec(novtable) AsyncOperationCompletedHandler<bool> : impl_AsyncOperationCompletedHandler<bool> {};
#endif

#ifndef WINRT_GENERIC_b79a741f_7fb5_50ae_9e99_911201ec3d41
#define WINRT_GENERIC_b79a741f_7fb5_50ae_9e99_911201ec3d41
template <> struct __declspec(uuid("b79a741f-7fb5-50ae-9e99-911201ec3d41")) __declspec(novtable) AsyncOperationCompletedHandler<hstring> : impl_AsyncOperationCompletedHandler<hstring> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
#define WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
template <> struct __declspec(uuid("8c304ebb-6615-50a4-8829-879ecd443236")) __declspec(novtable) IIterator<hstring> : impl_IIterator<hstring> {};
#endif

#ifndef WINRT_GENERIC_0e89a311_437a_5957_9593_8ed64511545b
#define WINRT_GENERIC_0e89a311_437a_5957_9593_8ed64511545b
template <> struct __declspec(uuid("0e89a311-437a-5957-9593-8ed64511545b")) __declspec(novtable) IKeyValuePair<hstring, Windows::Services::Store::StoreProduct> : impl_IKeyValuePair<hstring, Windows::Services::Store::StoreProduct> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_e786321f_b791_5e38_8bc4_98cb287d1085
#define WINRT_GENERIC_e786321f_b791_5e38_8bc4_98cb287d1085
template <> struct __declspec(uuid("e786321f-b791-5e38-8bc4-98cb287d1085")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Services::Store::StoreProductPagedQueryResult> : impl_AsyncOperationCompletedHandler<Windows::Services::Store::StoreProductPagedQueryResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_33eefc64_ef0c_5c8d_b620_476edf7df799
#define WINRT_GENERIC_33eefc64_ef0c_5c8d_b620_476edf7df799
template <> struct __declspec(uuid("33eefc64-ef0c-5c8d-b620-476edf7df799")) __declspec(novtable) IKeyValuePair<hstring, Windows::Services::Store::StoreLicense> : impl_IKeyValuePair<hstring, Windows::Services::Store::StoreLicense> {};
#endif

#ifndef WINRT_GENERIC_fbe076f6_c3d2_5df7_839f_012ac0f951c5
#define WINRT_GENERIC_fbe076f6_c3d2_5df7_839f_012ac0f951c5
template <> struct __declspec(uuid("fbe076f6-c3d2-5df7-839f-012ac0f951c5")) __declspec(novtable) IIterator<Windows::Services::Store::StoreImage> : impl_IIterator<Windows::Services::Store::StoreImage> {};
#endif

#ifndef WINRT_GENERIC_b2da6de8_ad55_56ce_8754_2c96f4fe1c2e
#define WINRT_GENERIC_b2da6de8_ad55_56ce_8754_2c96f4fe1c2e
template <> struct __declspec(uuid("b2da6de8-ad55-56ce-8754-2c96f4fe1c2e")) __declspec(novtable) IIterable<Windows::Services::Store::StoreImage> : impl_IIterable<Windows::Services::Store::StoreImage> {};
#endif

#ifndef WINRT_GENERIC_91b0b554_a537_5e22_b39f_6a935d0bef45
#define WINRT_GENERIC_91b0b554_a537_5e22_b39f_6a935d0bef45
template <> struct __declspec(uuid("91b0b554-a537-5e22-b39f-6a935d0bef45")) __declspec(novtable) IIterator<Windows::Services::Store::StoreVideo> : impl_IIterator<Windows::Services::Store::StoreVideo> {};
#endif

#ifndef WINRT_GENERIC_46be61e4_7173_565e_aed5_4a2152f1ce69
#define WINRT_GENERIC_46be61e4_7173_565e_aed5_4a2152f1ce69
template <> struct __declspec(uuid("46be61e4-7173-565e-aed5-4a2152f1ce69")) __declspec(novtable) IIterable<Windows::Services::Store::StoreVideo> : impl_IIterable<Windows::Services::Store::StoreVideo> {};
#endif

#ifndef WINRT_GENERIC_365cde92_7fe3_59d5_b8f8_8f05acf50947
#define WINRT_GENERIC_365cde92_7fe3_59d5_b8f8_8f05acf50947
template <> struct __declspec(uuid("365cde92-7fe3-59d5-b8f8-8f05acf50947")) __declspec(novtable) IIterator<Windows::Services::Store::StoreSku> : impl_IIterator<Windows::Services::Store::StoreSku> {};
#endif

#ifndef WINRT_GENERIC_522d34ef_4b5a_5b44_a046_7a16051d011e
#define WINRT_GENERIC_522d34ef_4b5a_5b44_a046_7a16051d011e
template <> struct __declspec(uuid("522d34ef-4b5a-5b44-a046-7a16051d011e")) __declspec(novtable) IIterable<Windows::Services::Store::StoreSku> : impl_IIterable<Windows::Services::Store::StoreSku> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_1d9f89ee_2fce_54e6_a0a9_52d00c52cc3a
#define WINRT_GENERIC_1d9f89ee_2fce_54e6_a0a9_52d00c52cc3a
template <> struct __declspec(uuid("1d9f89ee-2fce-54e6-a0a9-52d00c52cc3a")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Services::Store::StorePurchaseResult> : impl_AsyncOperationCompletedHandler<Windows::Services::Store::StorePurchaseResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_50511ccb_089e_5b73_bb4a_4d1ef77b8f0f
#define WINRT_GENERIC_50511ccb_089e_5b73_bb4a_4d1ef77b8f0f
template <> struct __declspec(uuid("50511ccb-089e-5b73-bb4a-4d1ef77b8f0f")) __declspec(novtable) IIterator<Windows::Services::Store::StoreAvailability> : impl_IIterator<Windows::Services::Store::StoreAvailability> {};
#endif

#ifndef WINRT_GENERIC_c58de1a0_25de_578b_bb69_e0a26d67b203
#define WINRT_GENERIC_c58de1a0_25de_578b_bb69_e0a26d67b203
template <> struct __declspec(uuid("c58de1a0-25de-578b-bb69-e0a26d67b203")) __declspec(novtable) IIterable<Windows::Services::Store::StoreAvailability> : impl_IIterable<Windows::Services::Store::StoreAvailability> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_7800b2a3_bbbc_5a11_8c35_d2bde5489e81
#define WINRT_GENERIC_7800b2a3_bbbc_5a11_8c35_d2bde5489e81
template <> struct __declspec(uuid("7800b2a3-bbbc-5a11-8c35-d2bde5489e81")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Services::Store::StoreSendRequestResult> : impl_AsyncOperationCompletedHandler<Windows::Services::Store::StoreSendRequestResult> {};
#endif

#ifndef WINRT_GENERIC_ceff1e09_e506_50ad_a908_52038c256552
#define WINRT_GENERIC_ceff1e09_e506_50ad_a908_52038c256552
template <> struct __declspec(uuid("ceff1e09-e506-50ad-a908-52038c256552")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Services::Store::StoreAppLicense> : impl_AsyncOperationCompletedHandler<Windows::Services::Store::StoreAppLicense> {};
#endif

#ifndef WINRT_GENERIC_eb93e936_d515_5414_9d15_f050c0b8f521
#define WINRT_GENERIC_eb93e936_d515_5414_9d15_f050c0b8f521
template <> struct __declspec(uuid("eb93e936-d515-5414-9d15-f050c0b8f521")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Services::Store::StoreProductResult> : impl_AsyncOperationCompletedHandler<Windows::Services::Store::StoreProductResult> {};
#endif

#ifndef WINRT_GENERIC_02f4a42c_0458_58d6_923c_b44ba8ef2222
#define WINRT_GENERIC_02f4a42c_0458_58d6_923c_b44ba8ef2222
template <> struct __declspec(uuid("02f4a42c-0458-58d6-923c-b44ba8ef2222")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Services::Store::StoreProductQueryResult> : impl_AsyncOperationCompletedHandler<Windows::Services::Store::StoreProductQueryResult> {};
#endif

#ifndef WINRT_GENERIC_3f2bb178_3c4e_56ed_86a5_ad13797cfbfd
#define WINRT_GENERIC_3f2bb178_3c4e_56ed_86a5_ad13797cfbfd
template <> struct __declspec(uuid("3f2bb178-3c4e-56ed-86a5-ad13797cfbfd")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Services::Store::StoreConsumableResult> : impl_AsyncOperationCompletedHandler<Windows::Services::Store::StoreConsumableResult> {};
#endif

#ifndef WINRT_GENERIC_6987c97c_2c19_5f44_b5ac_37393f3c1a4a
#define WINRT_GENERIC_6987c97c_2c19_5f44_b5ac_37393f3c1a4a
template <> struct __declspec(uuid("6987c97c-2c19-5f44-b5ac-37393f3c1a4a")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Services::Store::StoreAcquireLicenseResult> : impl_AsyncOperationCompletedHandler<Windows::Services::Store::StoreAcquireLicenseResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_b75dd77b_87ca_5956_8902_84e9ffc97d83
#define WINRT_GENERIC_b75dd77b_87ca_5956_8902_84e9ffc97d83
template <> struct __declspec(uuid("b75dd77b-87ca-5956-8902-84e9ffc97d83")) __declspec(novtable) IIterator<Windows::Services::Store::StorePackageUpdate> : impl_IIterator<Windows::Services::Store::StorePackageUpdate> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_961260f1_7352_5edf_9666_1f9a0a8ee477
#define WINRT_GENERIC_961260f1_7352_5edf_9666_1f9a0a8ee477
template <> struct __declspec(uuid("961260f1-7352-5edf-9666-1f9a0a8ee477")) __declspec(novtable) AsyncOperationProgressHandler<Windows::Services::Store::StorePackageUpdateResult, Windows::Services::Store::StorePackageUpdateStatus> : impl_AsyncOperationProgressHandler<Windows::Services::Store::StorePackageUpdateResult, Windows::Services::Store::StorePackageUpdateStatus> {};
#endif

#ifndef WINRT_GENERIC_b3be0c8b_ef1d_56dc_8547_4da06ea563df
#define WINRT_GENERIC_b3be0c8b_ef1d_56dc_8547_4da06ea563df
template <> struct __declspec(uuid("b3be0c8b-ef1d-56dc-8547-4da06ea563df")) __declspec(novtable) AsyncOperationWithProgressCompletedHandler<Windows::Services::Store::StorePackageUpdateResult, Windows::Services::Store::StorePackageUpdateStatus> : impl_AsyncOperationWithProgressCompletedHandler<Windows::Services::Store::StorePackageUpdateResult, Windows::Services::Store::StorePackageUpdateStatus> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_6181d84f_f731_57b8_9a6b_8a12fcd58d04
#define WINRT_GENERIC_6181d84f_f731_57b8_9a6b_8a12fcd58d04
template <> struct __declspec(uuid("6181d84f-f731-57b8-9a6b-8a12fcd58d04")) __declspec(novtable) IIterator<Windows::Services::Store::StorePackageUpdateStatus> : impl_IIterator<Windows::Services::Store::StorePackageUpdateStatus> {};
#endif

#ifndef WINRT_GENERIC_60832223_7eb4_5cd7_8340_f5077173d364
#define WINRT_GENERIC_60832223_7eb4_5cd7_8340_f5077173d364
template <> struct __declspec(uuid("60832223-7eb4-5cd7-8340-f5077173d364")) __declspec(novtable) IIterable<Windows::Services::Store::StorePackageUpdateStatus> : impl_IIterable<Windows::Services::Store::StorePackageUpdateStatus> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_0ac66c33_45b8_546b_aaaf_d58d62a4c5c5
#define WINRT_GENERIC_0ac66c33_45b8_546b_aaaf_d58d62a4c5c5
template <> struct __declspec(uuid("0ac66c33-45b8-546b-aaaf-d58d62a4c5c5")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StorePackageUpdate>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StorePackageUpdate>> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_0edb142c_9d04_532b_81e9_4c84ab09b34b
#define WINRT_GENERIC_0edb142c_9d04_532b_81e9_4c84ab09b34b
template <> struct __declspec(uuid("0edb142c-9d04-532b-81e9-4c84ab09b34b")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Services::Store::StoreProduct>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Services::Store::StoreProduct>> {};
#endif

#ifndef WINRT_GENERIC_78a33722_abfb_57c0_853f_5616a3ab8d57
#define WINRT_GENERIC_78a33722_abfb_57c0_853f_5616a3ab8d57
template <> struct __declspec(uuid("78a33722-abfb-57c0-853f-5616a3ab8d57")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Services::Store::StoreProduct>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Services::Store::StoreProduct>> {};
#endif

#ifndef WINRT_GENERIC_a1509348_6522_5062_ae86_cf595475926d
#define WINRT_GENERIC_a1509348_6522_5062_ae86_cf595475926d
template <> struct __declspec(uuid("a1509348-6522-5062-ae86-cf595475926d")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Services::Store::StoreLicense>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Services::Store::StoreLicense>> {};
#endif

#ifndef WINRT_GENERIC_ca8ba445_6f4d_5da9_95ee_42cf118def63
#define WINRT_GENERIC_ca8ba445_6f4d_5da9_95ee_42cf118def63
template <> struct __declspec(uuid("ca8ba445-6f4d-5da9-95ee-42cf118def63")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Services::Store::StoreLicense>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Services::Store::StoreLicense>> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_f8491bcd_2db5_58e0_8c47_44e6eb10c12d
#define WINRT_GENERIC_f8491bcd_2db5_58e0_8c47_44e6eb10c12d
template <> struct __declspec(uuid("f8491bcd-2db5-58e0-8c47-44e6eb10c12d")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StorePackageUpdate>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StorePackageUpdate>> {};
#endif


}

namespace Windows::Services::Store {

template <typename D>
struct WINRT_EBO impl_IStoreAcquireLicenseResult
{
    Windows::Services::Store::StorePackageLicense StorePackageLicense() const;
    HRESULT ExtendedError() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreAppLicense
{
    hstring SkuStoreId() const;
    bool IsActive() const;
    bool IsTrial() const;
    Windows::Foundation::DateTime ExpirationDate() const;
    hstring ExtendedJsonData() const;
    Windows::Foundation::Collections::IMapView<hstring, Windows::Services::Store::StoreLicense> AddOnLicenses() const;
    Windows::Foundation::TimeSpan TrialTimeRemaining() const;
    bool IsTrialOwnedByThisUser() const;
    hstring TrialUniqueId() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreAvailability
{
    hstring StoreId() const;
    Windows::Foundation::DateTime EndDate() const;
    Windows::Services::Store::StorePrice Price() const;
    hstring ExtendedJsonData() const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StorePurchaseResult> RequestPurchaseAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StorePurchaseResult> RequestPurchaseAsync(const Windows::Services::Store::StorePurchaseProperties & storePurchaseProperties) const;
};

template <typename D>
struct WINRT_EBO impl_IStoreCollectionData
{
    bool IsTrial() const;
    hstring CampaignId() const;
    hstring DeveloperOfferId() const;
    Windows::Foundation::DateTime AcquiredDate() const;
    Windows::Foundation::DateTime StartDate() const;
    Windows::Foundation::DateTime EndDate() const;
    Windows::Foundation::TimeSpan TrialTimeRemaining() const;
    hstring ExtendedJsonData() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreConsumableResult
{
    Windows::Services::Store::StoreConsumableStatus Status() const;
    GUID TrackingId() const;
    uint32_t BalanceRemaining() const;
    HRESULT ExtendedError() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreContext
{
    Windows::System::User User() const;
    event_token OfflineLicensesChanged(const Windows::Foundation::TypedEventHandler<Windows::Services::Store::StoreContext, Windows::IInspectable> & handler) const;
    using OfflineLicensesChanged_revoker = event_revoker<IStoreContext>;
    OfflineLicensesChanged_revoker OfflineLicensesChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Services::Store::StoreContext, Windows::IInspectable> & handler) const;
    void OfflineLicensesChanged(event_token token) const;
    Windows::Foundation::IAsyncOperation<hstring> GetCustomerPurchaseIdAsync(hstring_ref serviceTicket, hstring_ref publisherUserId) const;
    Windows::Foundation::IAsyncOperation<hstring> GetCustomerCollectionsIdAsync(hstring_ref serviceTicket, hstring_ref publisherUserId) const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreAppLicense> GetAppLicenseAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreProductResult> GetStoreProductForCurrentAppAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreProductQueryResult> GetStoreProductsAsync(const Windows::Foundation::Collections::IIterable<hstring> & productKinds, const Windows::Foundation::Collections::IIterable<hstring> & storeIds) const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreProductQueryResult> GetAssociatedStoreProductsAsync(const Windows::Foundation::Collections::IIterable<hstring> & productKinds) const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreProductPagedQueryResult> GetAssociatedStoreProductsWithPagingAsync(const Windows::Foundation::Collections::IIterable<hstring> & productKinds, uint32_t maxItemsToRetrievePerPage) const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreProductQueryResult> GetUserCollectionAsync(const Windows::Foundation::Collections::IIterable<hstring> & productKinds) const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreProductPagedQueryResult> GetUserCollectionWithPagingAsync(const Windows::Foundation::Collections::IIterable<hstring> & productKinds, uint32_t maxItemsToRetrievePerPage) const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreConsumableResult> ReportConsumableFulfillmentAsync(hstring_ref productStoreId, uint32_t quantity, GUID trackingId) const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreConsumableResult> GetConsumableBalanceRemainingAsync(hstring_ref productStoreId) const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreAcquireLicenseResult> AcquireStoreLicenseForOptionalPackageAsync(const Windows::ApplicationModel::Package & optionalPackage) const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StorePurchaseResult> RequestPurchaseAsync(hstring_ref storeId) const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StorePurchaseResult> RequestPurchaseAsync(hstring_ref storeId, const Windows::Services::Store::StorePurchaseProperties & storePurchaseProperties) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StorePackageUpdate>> GetAppAndOptionalStorePackageUpdatesAsync() const;
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Services::Store::StorePackageUpdateResult, Windows::Services::Store::StorePackageUpdateStatus> RequestDownloadStorePackageUpdatesAsync(const Windows::Foundation::Collections::IIterable<Windows::Services::Store::StorePackageUpdate> & storePackageUpdates) const;
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Services::Store::StorePackageUpdateResult, Windows::Services::Store::StorePackageUpdateStatus> RequestDownloadAndInstallStorePackageUpdatesAsync(const Windows::Foundation::Collections::IIterable<Windows::Services::Store::StorePackageUpdate> & storePackageUpdates) const;
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Services::Store::StorePackageUpdateResult, Windows::Services::Store::StorePackageUpdateStatus> RequestDownloadAndInstallStorePackagesAsync(const Windows::Foundation::Collections::IIterable<hstring> & storeIds) const;
};

template <typename D>
struct WINRT_EBO impl_IStoreContextStatics
{
    Windows::Services::Store::StoreContext GetDefault() const;
    Windows::Services::Store::StoreContext GetForUser(const Windows::System::User & user) const;
};

template <typename D>
struct WINRT_EBO impl_IStoreImage
{
    Windows::Foundation::Uri Uri() const;
    hstring ImagePurposeTag() const;
    uint32_t Width() const;
    uint32_t Height() const;
    hstring Caption() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreLicense
{
    hstring SkuStoreId() const;
    bool IsActive() const;
    Windows::Foundation::DateTime ExpirationDate() const;
    hstring ExtendedJsonData() const;
    hstring InAppOfferToken() const;
};

template <typename D>
struct WINRT_EBO impl_IStorePackageLicense
{
    event_token LicenseLost(const Windows::Foundation::TypedEventHandler<Windows::Services::Store::StorePackageLicense, Windows::IInspectable> & handler) const;
    using LicenseLost_revoker = event_revoker<IStorePackageLicense>;
    LicenseLost_revoker LicenseLost(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Services::Store::StorePackageLicense, Windows::IInspectable> & handler) const;
    void LicenseLost(event_token token) const;
    Windows::ApplicationModel::Package Package() const;
    bool IsValid() const;
    void ReleaseLicense() const;
};

template <typename D>
struct WINRT_EBO impl_IStorePackageUpdate
{
    Windows::ApplicationModel::Package Package() const;
    bool Mandatory() const;
};

template <typename D>
struct WINRT_EBO impl_IStorePackageUpdateResult
{
    Windows::Services::Store::StorePackageUpdateState OverallState() const;
    Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StorePackageUpdateStatus> StorePackageUpdateStatuses() const;
};

template <typename D>
struct WINRT_EBO impl_IStorePrice
{
    hstring FormattedBasePrice() const;
    hstring FormattedPrice() const;
    bool IsOnSale() const;
    Windows::Foundation::DateTime SaleEndDate() const;
    hstring CurrencyCode() const;
    hstring FormattedRecurrencePrice() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreProduct
{
    hstring StoreId() const;
    hstring Language() const;
    hstring Title() const;
    hstring Description() const;
    hstring ProductKind() const;
    bool HasDigitalDownload() const;
    Windows::Foundation::Collections::IVectorView<hstring> Keywords() const;
    Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StoreImage> Images() const;
    Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StoreVideo> Videos() const;
    Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StoreSku> Skus() const;
    bool IsInUserCollection() const;
    Windows::Services::Store::StorePrice Price() const;
    hstring ExtendedJsonData() const;
    Windows::Foundation::Uri LinkUri() const;
    Windows::Foundation::IAsyncOperation<bool> GetIsAnySkuInstalledAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StorePurchaseResult> RequestPurchaseAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StorePurchaseResult> RequestPurchaseAsync(const Windows::Services::Store::StorePurchaseProperties & storePurchaseProperties) const;
    hstring InAppOfferToken() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreProductPagedQueryResult
{
    Windows::Foundation::Collections::IMapView<hstring, Windows::Services::Store::StoreProduct> Products() const;
    bool HasMoreResults() const;
    HRESULT ExtendedError() const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreProductPagedQueryResult> GetNextAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreProductQueryResult
{
    Windows::Foundation::Collections::IMapView<hstring, Windows::Services::Store::StoreProduct> Products() const;
    HRESULT ExtendedError() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreProductResult
{
    Windows::Services::Store::StoreProduct Product() const;
    HRESULT ExtendedError() const;
};

template <typename D>
struct WINRT_EBO impl_IStorePurchaseProperties
{
    hstring Name() const;
    void Name(hstring_ref value) const;
    hstring ExtendedJsonData() const;
    void ExtendedJsonData(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IStorePurchasePropertiesFactory
{
    Windows::Services::Store::StorePurchaseProperties Create(hstring_ref name) const;
};

template <typename D>
struct WINRT_EBO impl_IStorePurchaseResult
{
    Windows::Services::Store::StorePurchaseStatus Status() const;
    HRESULT ExtendedError() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreRequestHelperStatics
{
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreSendRequestResult> SendRequestAsync(const Windows::Services::Store::StoreContext & context, uint32_t requestKind, hstring_ref parametersAsJson) const;
};

template <typename D>
struct WINRT_EBO impl_IStoreSendRequestResult
{
    hstring Response() const;
    HRESULT ExtendedError() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreSku
{
    hstring StoreId() const;
    hstring Language() const;
    hstring Title() const;
    hstring Description() const;
    bool IsTrial() const;
    hstring CustomDeveloperData() const;
    Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StoreImage> Images() const;
    Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StoreVideo> Videos() const;
    Windows::Foundation::Collections::IVectorView<Windows::Services::Store::StoreAvailability> Availabilities() const;
    Windows::Services::Store::StorePrice Price() const;
    hstring ExtendedJsonData() const;
    bool IsInUserCollection() const;
    Windows::Foundation::Collections::IVectorView<hstring> BundledSkus() const;
    Windows::Services::Store::StoreCollectionData CollectionData() const;
    Windows::Foundation::IAsyncOperation<bool> GetIsInstalledAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StorePurchaseResult> RequestPurchaseAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Services::Store::StorePurchaseResult> RequestPurchaseAsync(const Windows::Services::Store::StorePurchaseProperties & storePurchaseProperties) const;
    bool IsSubscription() const;
    Windows::Services::Store::StoreSubscriptionInfo SubscriptionInfo() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreSubscriptionInfo
{
    uint32_t BillingPeriod() const;
    Windows::Services::Store::StoreDurationUnit BillingPeriodUnit() const;
    bool HasTrialPeriod() const;
    uint32_t TrialPeriod() const;
    Windows::Services::Store::StoreDurationUnit TrialPeriodUnit() const;
};

template <typename D>
struct WINRT_EBO impl_IStoreVideo
{
    Windows::Foundation::Uri Uri() const;
    hstring VideoPurposeTag() const;
    uint32_t Width() const;
    uint32_t Height() const;
    hstring Caption() const;
    Windows::Services::Store::StoreImage PreviewImage() const;
};

struct IStoreAcquireLicenseResult :
    Windows::IInspectable,
    impl::consume<IStoreAcquireLicenseResult>
{
    IStoreAcquireLicenseResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreAcquireLicenseResult>(m_ptr); }
};

struct IStoreAppLicense :
    Windows::IInspectable,
    impl::consume<IStoreAppLicense>
{
    IStoreAppLicense(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreAppLicense>(m_ptr); }
};

struct IStoreAvailability :
    Windows::IInspectable,
    impl::consume<IStoreAvailability>
{
    IStoreAvailability(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreAvailability>(m_ptr); }
};

struct IStoreCollectionData :
    Windows::IInspectable,
    impl::consume<IStoreCollectionData>
{
    IStoreCollectionData(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreCollectionData>(m_ptr); }
};

struct IStoreConsumableResult :
    Windows::IInspectable,
    impl::consume<IStoreConsumableResult>
{
    IStoreConsumableResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreConsumableResult>(m_ptr); }
};

struct IStoreContext :
    Windows::IInspectable,
    impl::consume<IStoreContext>
{
    IStoreContext(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreContext>(m_ptr); }
};

struct IStoreContextStatics :
    Windows::IInspectable,
    impl::consume<IStoreContextStatics>
{
    IStoreContextStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreContextStatics>(m_ptr); }
};

struct IStoreImage :
    Windows::IInspectable,
    impl::consume<IStoreImage>
{
    IStoreImage(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreImage>(m_ptr); }
};

struct IStoreLicense :
    Windows::IInspectable,
    impl::consume<IStoreLicense>
{
    IStoreLicense(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreLicense>(m_ptr); }
};

struct IStorePackageLicense :
    Windows::IInspectable,
    impl::consume<IStorePackageLicense>,
    impl::require<IStorePackageLicense, Windows::Foundation::IClosable>
{
    IStorePackageLicense(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStorePackageLicense>(m_ptr); }
};

struct IStorePackageUpdate :
    Windows::IInspectable,
    impl::consume<IStorePackageUpdate>
{
    IStorePackageUpdate(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStorePackageUpdate>(m_ptr); }
};

struct IStorePackageUpdateResult :
    Windows::IInspectable,
    impl::consume<IStorePackageUpdateResult>
{
    IStorePackageUpdateResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStorePackageUpdateResult>(m_ptr); }
};

struct IStorePrice :
    Windows::IInspectable,
    impl::consume<IStorePrice>
{
    IStorePrice(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStorePrice>(m_ptr); }
};

struct IStoreProduct :
    Windows::IInspectable,
    impl::consume<IStoreProduct>
{
    IStoreProduct(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreProduct>(m_ptr); }
};

struct IStoreProductPagedQueryResult :
    Windows::IInspectable,
    impl::consume<IStoreProductPagedQueryResult>
{
    IStoreProductPagedQueryResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreProductPagedQueryResult>(m_ptr); }
};

struct IStoreProductQueryResult :
    Windows::IInspectable,
    impl::consume<IStoreProductQueryResult>
{
    IStoreProductQueryResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreProductQueryResult>(m_ptr); }
};

struct IStoreProductResult :
    Windows::IInspectable,
    impl::consume<IStoreProductResult>
{
    IStoreProductResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreProductResult>(m_ptr); }
};

struct IStorePurchaseProperties :
    Windows::IInspectable,
    impl::consume<IStorePurchaseProperties>
{
    IStorePurchaseProperties(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStorePurchaseProperties>(m_ptr); }
};

struct IStorePurchasePropertiesFactory :
    Windows::IInspectable,
    impl::consume<IStorePurchasePropertiesFactory>
{
    IStorePurchasePropertiesFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStorePurchasePropertiesFactory>(m_ptr); }
};

struct IStorePurchaseResult :
    Windows::IInspectable,
    impl::consume<IStorePurchaseResult>
{
    IStorePurchaseResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStorePurchaseResult>(m_ptr); }
};

struct IStoreRequestHelperStatics :
    Windows::IInspectable,
    impl::consume<IStoreRequestHelperStatics>
{
    IStoreRequestHelperStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreRequestHelperStatics>(m_ptr); }
};

struct IStoreSendRequestResult :
    Windows::IInspectable,
    impl::consume<IStoreSendRequestResult>
{
    IStoreSendRequestResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreSendRequestResult>(m_ptr); }
};

struct IStoreSku :
    Windows::IInspectable,
    impl::consume<IStoreSku>
{
    IStoreSku(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreSku>(m_ptr); }
};

struct IStoreSubscriptionInfo :
    Windows::IInspectable,
    impl::consume<IStoreSubscriptionInfo>
{
    IStoreSubscriptionInfo(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreSubscriptionInfo>(m_ptr); }
};

struct IStoreVideo :
    Windows::IInspectable,
    impl::consume<IStoreVideo>
{
    IStoreVideo(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStoreVideo>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Power.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Devices.Power.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_4d4aa646_767f_5645_af5c_546464d3ec09
#define WINRT_GENERIC_4d4aa646_767f_5645_af5c_546464d3ec09
template <> struct __declspec(uuid("4d4aa646-767f-5645-af5c-546464d3ec09")) __declspec(novtable) TypedEventHandler<Windows::Devices::Power::Battery, Windows::IInspectable> : impl_TypedEventHandler<Windows::Devices::Power::Battery, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_548cefbd_bc8a_5fa0_8df2_957440fc8bf4
#define WINRT_GENERIC_548cefbd_bc8a_5fa0_8df2_957440fc8bf4
template <> struct __declspec(uuid("548cefbd-bc8a-5fa0-8df2-957440fc8bf4")) __declspec(novtable) IReference<int32_t> : impl_IReference<int32_t> {};
#endif

#ifndef WINRT_GENERIC_daa3d556_1529_56d2_a5f8_bfb6c22a3dfe
#define WINRT_GENERIC_daa3d556_1529_56d2_a5f8_bfb6c22a3dfe
template <> struct __declspec(uuid("daa3d556-1529-56d2-a5f8-bfb6c22a3dfe")) __declspec(novtable) IAsyncOperation<Windows::Devices::Power::Battery> : impl_IAsyncOperation<Windows::Devices::Power::Battery> {};
#endif

#ifndef WINRT_GENERIC_97f82115_3822_507b_82e6_2777b336e98e
#define WINRT_GENERIC_97f82115_3822_507b_82e6_2777b336e98e
template <> struct __declspec(uuid("97f82115-3822-507b-82e6-2777b336e98e")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Devices::Power::Battery> : impl_AsyncOperationCompletedHandler<Windows::Devices::Power::Battery> {};
#endif


}

namespace Windows::Devices::Power {

template <typename D>
struct WINRT_EBO impl_IBattery
{
    hstring DeviceId() const;
    Windows::Devices::Power::BatteryReport GetReport() const;
    event_token ReportUpdated(const Windows::Foundation::TypedEventHandler<Windows::Devices::Power::Battery, Windows::IInspectable> & handler) const;
    using ReportUpdated_revoker = event_revoker<IBattery>;
    ReportUpdated_revoker ReportUpdated(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Power::Battery, Windows::IInspectable> & handler) const;
    void ReportUpdated(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IBatteryReport
{
    Windows::Foundation::IReference<int32_t> ChargeRateInMilliwatts() const;
    Windows::Foundation::IReference<int32_t> DesignCapacityInMilliwattHours() const;
    Windows::Foundation::IReference<int32_t> FullChargeCapacityInMilliwattHours() const;
    Windows::Foundation::IReference<int32_t> RemainingCapacityInMilliwattHours() const;
    Windows::System::Power::BatteryStatus Status() const;
};

template <typename D>
struct WINRT_EBO impl_IBatteryStatics
{
    Windows::Devices::Power::Battery AggregateBattery() const;
    Windows::Foundation::IAsyncOperation<Windows::Devices::Power::Battery> FromIdAsync(hstring_ref deviceId) const;
    hstring GetDeviceSelector() const;
};

struct IBattery :
    Windows::IInspectable,
    impl::consume<IBattery>
{
    IBattery(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBattery>(m_ptr); }
};

struct IBatteryReport :
    Windows::IInspectable,
    impl::consume<IBatteryReport>
{
    IBatteryReport(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBatteryReport>(m_ptr); }
};

struct IBatteryStatics :
    Windows::IInspectable,
    impl::consume<IBatteryStatics>
{
    IBatteryStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBatteryStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Devices.Gpio.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Devices.Gpio.Provider.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Devices.Gpio.3.h"
#include "Windows.Devices.h"
#include "Windows.Foundation.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Devices::Gpio::IGpioController> : produce_base<D, Windows::Devices::Gpio::IGpioController>
{
    HRESULT __stdcall get_PinCount(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PinCount());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_OpenPin(int32_t pinNumber, abi_arg_out<Windows::Devices::Gpio::IGpioPin> pin) noexcept override
    {
        try
        {
            *pin = detach(this->shim().OpenPin(pinNumber));
            return S_OK;
        }
        catch (...)
        {
            *pin = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_OpenPinWithSharingMode(int32_t pinNumber, Windows::Devices::Gpio::GpioSharingMode sharingMode, abi_arg_out<Windows::Devices::Gpio::IGpioPin> pin) noexcept override
    {
        try
        {
            *pin = detach(this->shim().OpenPin(pinNumber, sharingMode));
            return S_OK;
        }
        catch (...)
        {
            *pin = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_TryOpenPin(int32_t pinNumber, Windows::Devices::Gpio::GpioSharingMode sharingMode, abi_arg_out<Windows::Devices::Gpio::IGpioPin> pin, Windows::Devices::Gpio::GpioOpenStatus * openStatus, bool * succeeded) noexcept override
    {
        try
        {
            *succeeded = detach(this->shim().TryOpenPin(pinNumber, sharingMode, *pin, *openStatus));
            return S_OK;
        }
        catch (...)
        {
            *pin = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Gpio::IGpioControllerStatics> : produce_base<D, Windows::Devices::Gpio::IGpioControllerStatics>
{
    HRESULT __stdcall abi_GetDefault(abi_arg_out<Windows::Devices::Gpio::IGpioController> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDefault());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Gpio::IGpioControllerStatics2> : produce_base<D, Windows::Devices::Gpio::IGpioControllerStatics2>
{
    HRESULT __stdcall abi_GetControllersAsync(abi_arg_in<Windows::Devices::Gpio::Provider::IGpioProvider> provider, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Gpio::GpioController>>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetControllersAsync(*reinterpret_cast<const Windows::Devices::Gpio::Provider::IGpioProvider *>(&provider)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDefaultAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Devices::Gpio::GpioController>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetDefaultAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Gpio::IGpioPin> : produce_base<D, Windows::Devices::Gpio::IGpioPin>
{
    HRESULT __stdcall add_ValueChanged(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Devices::Gpio::GpioPin, Windows::Devices::Gpio::GpioPinValueChangedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().ValueChanged(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Devices::Gpio::GpioPin, Windows::Devices::Gpio::GpioPinValueChangedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_ValueChanged(event_token token) noexcept override
    {
        try
        {
            this->shim().ValueChanged(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DebounceTimeout(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DebounceTimeout());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DebounceTimeout(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().DebounceTimeout(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PinNumber(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PinNumber());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SharingMode(Windows::Devices::Gpio::GpioSharingMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SharingMode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_IsDriveModeSupported(Windows::Devices::Gpio::GpioPinDriveMode driveMode, bool * supported) noexcept override
    {
        try
        {
            *supported = detach(this->shim().IsDriveModeSupported(driveMode));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDriveMode(Windows::Devices::Gpio::GpioPinDriveMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDriveMode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetDriveMode(Windows::Devices::Gpio::GpioPinDriveMode value) noexcept override
    {
        try
        {
            this->shim().SetDriveMode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Write(Windows::Devices::Gpio::GpioPinValue value) noexcept override
    {
        try
        {
            this->shim().Write(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Read(Windows::Devices::Gpio::GpioPinValue * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Read());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Gpio::IGpioPinValueChangedEventArgs> : produce_base<D, Windows::Devices::Gpio::IGpioPinValueChangedEventArgs>
{
    HRESULT __stdcall get_Edge(Windows::Devices::Gpio::GpioPinEdge * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Edge());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Devices::Gpio {

template <typename D> Windows::Devices::Gpio::GpioPinEdge impl_IGpioPinValueChangedEventArgs<D>::Edge() const
{
    Windows::Devices::Gpio::GpioPinEdge value {};
    check_hresult(static_cast<const IGpioPinValueChangedEventArgs &>(static_cast<const D &>(*this))->get_Edge(&value));
    return value;
}

template <typename D> int32_t impl_IGpioController<D>::PinCount() const
{
    int32_t value {};
    check_hresult(static_cast<const IGpioController &>(static_cast<const D &>(*this))->get_PinCount(&value));
    return value;
}

template <typename D> Windows::Devices::Gpio::GpioPin impl_IGpioController<D>::OpenPin(int32_t pinNumber) const
{
    Windows::Devices::Gpio::GpioPin pin { nullptr };
    check_hresult(static_cast<const IGpioController &>(static_cast<const D &>(*this))->abi_OpenPin(pinNumber, put(pin)));
    return pin;
}

template <typename D> Windows::Devices::Gpio::GpioPin impl_IGpioController<D>::OpenPin(int32_t pinNumber, Windows::Devices::Gpio::GpioSharingMode sharingMode) const
{
    Windows::Devices::Gpio::GpioPin pin { nullptr };
    check_hresult(static_cast<const IGpioController &>(static_cast<const D &>(*this))->abi_OpenPinWithSharingMode(pinNumber, sharingMode, put(pin)));
    return pin;
}

template <typename D> bool impl_IGpioController<D>::TryOpenPin(int32_t pinNumber, Windows::Devices::Gpio::GpioSharingMode sharingMode, Windows::Devices::Gpio::GpioPin & pin, Windows::Devices::Gpio::GpioOpenStatus & openStatus) const
{
    bool succeeded {};
    check_hresult(static_cast<const IGpioController &>(static_cast<const D &>(*this))->abi_TryOpenPin(pinNumber, sharingMode, put(pin), &openStatus, &succeeded));
    return succeeded;
}

template <typename D> Windows::Devices::Gpio::GpioController impl_IGpioControllerStatics<D>::GetDefault() const
{
    Windows::Devices::Gpio::GpioController value { nullptr };
    check_hresult(static_cast<const IGpioControllerStatics &>(static_cast<const D &>(*this))->abi_GetDefault(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Gpio::GpioController>> impl_IGpioControllerStatics2<D>::GetControllersAsync(const Windows::Devices::Gpio::Provider::IGpioProvider & provider) const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Gpio::GpioController>> operation;
    check_hresult(static_cast<const IGpioControllerStatics2 &>(static_cast<const D &>(*this))->abi_GetControllersAsync(get(provider), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Devices::Gpio::GpioController> impl_IGpioControllerStatics2<D>::GetDefaultAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Devices::Gpio::GpioController> operation;
    check_hresult(static_cast<const IGpioControllerStatics2 &>(static_cast<const D &>(*this))->abi_GetDefaultAsync(put(operation)));
    return operation;
}

template <typename D> event_token impl_IGpioPin<D>::ValueChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Gpio::GpioPin, Windows::Devices::Gpio::GpioPinValueChangedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IGpioPin &>(static_cast<const D &>(*this))->add_ValueChanged(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IGpioPin> impl_IGpioPin<D>::ValueChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Gpio::GpioPin, Windows::Devices::Gpio::GpioPinValueChangedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IGpioPin>(this, &ABI::Windows::Devices::Gpio::IGpioPin::remove_ValueChanged, ValueChanged(handler));
}

template <typename D> void impl_IGpioPin<D>::ValueChanged(event_token token) const
{
    check_hresult(static_cast<const IGpioPin &>(static_cast<const D &>(*this))->remove_ValueChanged(token));
}

template <typename D> Windows::Foundation::TimeSpan impl_IGpioPin<D>::DebounceTimeout() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IGpioPin &>(static_cast<const D &>(*this))->get_DebounceTimeout(put(value)));
    return value;
}

template <typename D> void impl_IGpioPin<D>::DebounceTimeout(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const IGpioPin &>(static_cast<const D &>(*this))->put_DebounceTimeout(get(value)));
}

template <typename D> int32_t impl_IGpioPin<D>::PinNumber() const
{
    int32_t value {};
    check_hresult(static_cast<const IGpioPin &>(static_cast<const D &>(*this))->get_PinNumber(&value));
    return value;
}

template <typename D> Windows::Devices::Gpio::GpioSharingMode impl_IGpioPin<D>::SharingMode() const
{
    Windows::Devices::Gpio::GpioSharingMode value {};
    check_hresult(static_cast<const IGpioPin &>(static_cast<const D &>(*this))->get_SharingMode(&value));
    return value;
}

template <typename D> bool impl_IGpioPin<D>::IsDriveModeSupported(Windows::Devices::Gpio::GpioPinDriveMode driveMode) const
{
    bool supported {};
    check_hresult(static_cast<const IGpioPin &>(static_cast<const D &>(*this))->abi_IsDriveModeSupported(driveMode, &supported));
    return supported;
}

template <typename D> Windows::Devices::Gpio::GpioPinDriveMode impl_IGpioPin<D>::GetDriveMode() const
{
    Windows::Devices::Gpio::GpioPinDriveMode value {};
    check_hresult(static_cast<const IGpioPin &>(static_cast<const D &>(*this))->abi_GetDriveMode(&value));
    return value;
}

template <typename D> void impl_IGpioPin<D>::SetDriveMode(Windows::Devices::Gpio::GpioPinDriveMode value) const
{
    check_hresult(static_cast<const IGpioPin &>(static_cast<const D &>(*this))->abi_SetDriveMode(value));
}

template <typename D> void impl_IGpioPin<D>::Write(Windows::Devices::Gpio::GpioPinValue value) const
{
    check_hresult(static_cast<const IGpioPin &>(static_cast<const D &>(*this))->abi_Write(value));
}

template <typename D> Windows::Devices::Gpio::GpioPinValue impl_IGpioPin<D>::Read() const
{
    Windows::Devices::Gpio::GpioPinValue value {};
    check_hresult(static_cast<const IGpioPin &>(static_cast<const D &>(*this))->abi_Read(&value));
    return value;
}

inline Windows::Devices::Gpio::GpioController GpioController::GetDefault()
{
    return get_activation_factory<GpioController, IGpioControllerStatics>().GetDefault();
}

inline Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Gpio::GpioController>> GpioController::GetControllersAsync(const Windows::Devices::Gpio::Provider::IGpioProvider & provider)
{
    return get_activation_factory<GpioController, IGpioControllerStatics2>().GetControllersAsync(provider);
}

inline Windows::Foundation::IAsyncOperation<Windows::Devices::Gpio::GpioController> GpioController::GetDefaultAsync()
{
    return get_activation_factory<GpioController, IGpioControllerStatics2>().GetDefaultAsync();
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Contacts.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.ApplicationModel.Contacts.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Foundation.Collections.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.System.0.h"
#include "Windows.UI.Popups.0.h"
#include "Windows.UI.ViewManagement.0.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Foundation.1.h"
#include "Windows.Storage.Streams.1.h"
#include "Windows.Data.Text.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::ApplicationModel::Contacts {

struct __declspec(uuid("0379d5dd-db5a-4fd3-b54e-4df17917a212")) __declspec(novtable) IAggregateContactManager : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_FindRawContactsAsync(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::Contact>> ** value) = 0;
    virtual HRESULT __stdcall abi_TryLinkContactsAsync(Windows::ApplicationModel::Contacts::IContact * primaryContact, Windows::ApplicationModel::Contacts::IContact * secondaryContact, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::Contact> ** contact) = 0;
    virtual HRESULT __stdcall abi_UnlinkRawContactAsync(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::IAsyncAction ** value) = 0;
    virtual HRESULT __stdcall abi_TrySetPreferredSourceForPictureAsync(Windows::ApplicationModel::Contacts::IContact * aggregateContact, Windows::ApplicationModel::Contacts::IContact * rawContact, Windows::Foundation::IAsyncOperation<bool> ** value) = 0;
};

struct __declspec(uuid("5e8cc2d8-a9cd-4430-9c4b-01348db2ca50")) __declspec(novtable) IAggregateContactManager2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_SetRemoteIdentificationInformationAsync(hstring contactListId, hstring remoteSourceId, hstring accountId, Windows::Foundation::IAsyncAction ** result) = 0;
};

struct __declspec(uuid("ec0072f3-2118-4049-9ebc-17f0ab692b64")) __declspec(novtable) IContact : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Name(hstring * value) = 0;
    virtual HRESULT __stdcall put_Name(hstring value) = 0;
    virtual HRESULT __stdcall get_Thumbnail(Windows::Storage::Streams::IRandomAccessStreamReference ** value) = 0;
    virtual HRESULT __stdcall put_Thumbnail(Windows::Storage::Streams::IRandomAccessStreamReference * value) = 0;
    virtual HRESULT __stdcall get_Fields(Windows::Foundation::Collections::IVector<Windows::ApplicationModel::Contacts::IContactField> ** value) = 0;
};

struct __declspec(uuid("f312f365-bb77-4c94-802d-8328cee40c08")) __declspec(novtable) IContact2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Id(hstring * value) = 0;
    virtual HRESULT __stdcall put_Id(hstring value) = 0;
    virtual HRESULT __stdcall get_Notes(hstring * value) = 0;
    virtual HRESULT __stdcall put_Notes(hstring value) = 0;
    virtual HRESULT __stdcall get_Phones(Windows::Foundation::Collections::IVector<Windows::ApplicationModel::Contacts::ContactPhone> ** value) = 0;
    virtual HRESULT __stdcall get_Emails(Windows::Foundation::Collections::IVector<Windows::ApplicationModel::Contacts::ContactEmail> ** value) = 0;
    virtual HRESULT __stdcall get_Addresses(Windows::Foundation::Collections::IVector<Windows::ApplicationModel::Contacts::ContactAddress> ** value) = 0;
    virtual HRESULT __stdcall get_ConnectedServiceAccounts(Windows::Foundation::Collections::IVector<Windows::ApplicationModel::Contacts::ContactConnectedServiceAccount> ** value) = 0;
    virtual HRESULT __stdcall get_ImportantDates(Windows::Foundation::Collections::IVector<Windows::ApplicationModel::Contacts::ContactDate> ** value) = 0;
    virtual HRESULT __stdcall get_DataSuppliers(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
    virtual HRESULT __stdcall get_JobInfo(Windows::Foundation::Collections::IVector<Windows::ApplicationModel::Contacts::ContactJobInfo> ** value) = 0;
    virtual HRESULT __stdcall get_SignificantOthers(Windows::Foundation::Collections::IVector<Windows::ApplicationModel::Contacts::ContactSignificantOther> ** value) = 0;
    virtual HRESULT __stdcall get_Websites(Windows::Foundation::Collections::IVector<Windows::ApplicationModel::Contacts::ContactWebsite> ** value) = 0;
    virtual HRESULT __stdcall get_ProviderProperties(Windows::Foundation::Collections::IPropertySet ** value) = 0;
};

struct __declspec(uuid("48201e67-e08e-42a4-b561-41d08ca9575d")) __declspec(novtable) IContact3 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ContactListId(hstring * value) = 0;
    virtual HRESULT __stdcall get_DisplayPictureUserUpdateTime(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall put_DisplayPictureUserUpdateTime(Windows::Foundation::DateTime value) = 0;
    virtual HRESULT __stdcall get_IsMe(bool * value) = 0;
    virtual HRESULT __stdcall get_AggregateId(hstring * value) = 0;
    virtual HRESULT __stdcall get_RemoteId(hstring * value) = 0;
    virtual HRESULT __stdcall put_RemoteId(hstring value) = 0;
    virtual HRESULT __stdcall get_RingToneToken(hstring * value) = 0;
    virtual HRESULT __stdcall put_RingToneToken(hstring value) = 0;
    virtual HRESULT __stdcall get_IsDisplayPictureManuallySet(bool * value) = 0;
    virtual HRESULT __stdcall get_LargeDisplayPicture(Windows::Storage::Streams::IRandomAccessStreamReference ** value) = 0;
    virtual HRESULT __stdcall get_SmallDisplayPicture(Windows::Storage::Streams::IRandomAccessStreamReference ** value) = 0;
    virtual HRESULT __stdcall get_SourceDisplayPicture(Windows::Storage::Streams::IRandomAccessStreamReference ** value) = 0;
    virtual HRESULT __stdcall put_SourceDisplayPicture(Windows::Storage::Streams::IRandomAccessStreamReference * value) = 0;
    virtual HRESULT __stdcall get_TextToneToken(hstring * value) = 0;
    virtual HRESULT __stdcall put_TextToneToken(hstring value) = 0;
    virtual HRESULT __stdcall get_IsAggregate(bool * value) = 0;
    virtual HRESULT __stdcall get_FullName(hstring * value) = 0;
    virtual HRESULT __stdcall get_DisplayNameOverride(hstring * value) = 0;
    virtual HRESULT __stdcall put_DisplayNameOverride(hstring value) = 0;
    virtual HRESULT __stdcall get_Nickname(hstring * value) = 0;
    virtual HRESULT __stdcall put_Nickname(hstring value) = 0;
    virtual HRESULT __stdcall get_SortName(hstring * value) = 0;
};

struct __declspec(uuid("9739d39a-42ce-4872-8d70-3063aa584b70")) __declspec(novtable) IContactAddress : Windows::IInspectable
{
    virtual HRESULT __stdcall get_StreetAddress(hstring * value) = 0;
    virtual HRESULT __stdcall put_StreetAddress(hstring value) = 0;
    virtual HRESULT __stdcall get_Locality(hstring * value) = 0;
    virtual HRESULT __stdcall put_Locality(hstring value) = 0;
    virtual HRESULT __stdcall get_Region(hstring * value) = 0;
    virtual HRESULT __stdcall put_Region(hstring value) = 0;
    virtual HRESULT __stdcall get_Country(hstring * value) = 0;
    virtual HRESULT __stdcall put_Country(hstring value) = 0;
    virtual HRESULT __stdcall get_PostalCode(hstring * value) = 0;
    virtual HRESULT __stdcall put_PostalCode(hstring value) = 0;
    virtual HRESULT __stdcall get_Kind(winrt::Windows::ApplicationModel::Contacts::ContactAddressKind * value) = 0;
    virtual HRESULT __stdcall put_Kind(winrt::Windows::ApplicationModel::Contacts::ContactAddressKind value) = 0;
    virtual HRESULT __stdcall get_Description(hstring * value) = 0;
    virtual HRESULT __stdcall put_Description(hstring value) = 0;
};

struct __declspec(uuid("821fc2ef-7d41-44a2-84c3-60a281dd7b86")) __declspec(novtable) IContactAnnotation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Id(hstring * value) = 0;
    virtual HRESULT __stdcall get_AnnotationListId(hstring * value) = 0;
    virtual HRESULT __stdcall get_ContactId(hstring * value) = 0;
    virtual HRESULT __stdcall put_ContactId(hstring value) = 0;
    virtual HRESULT __stdcall get_RemoteId(hstring * value) = 0;
    virtual HRESULT __stdcall put_RemoteId(hstring value) = 0;
    virtual HRESULT __stdcall get_SupportedOperations(winrt::Windows::ApplicationModel::Contacts::ContactAnnotationOperations * value) = 0;
    virtual HRESULT __stdcall put_SupportedOperations(winrt::Windows::ApplicationModel::Contacts::ContactAnnotationOperations value) = 0;
    virtual HRESULT __stdcall get_IsDisabled(bool * value) = 0;
    virtual HRESULT __stdcall get_ProviderProperties(Windows::Foundation::Collections::IPropertySet ** value) = 0;
};

struct __declspec(uuid("92a486aa-5c88-45b9-aad0-461888e68d8a")) __declspec(novtable) IContactAnnotationList : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Id(hstring * value) = 0;
    virtual HRESULT __stdcall get_ProviderPackageFamilyName(hstring * value) = 0;
    virtual HRESULT __stdcall get_UserDataAccountId(hstring * value) = 0;
    virtual HRESULT __stdcall abi_DeleteAsync(Windows::Foundation::IAsyncAction ** value) = 0;
    virtual HRESULT __stdcall abi_TrySaveAnnotationAsync(Windows::ApplicationModel::Contacts::IContactAnnotation * annotation, Windows::Foundation::IAsyncOperation<bool> ** ppResult) = 0;
    virtual HRESULT __stdcall abi_GetAnnotationAsync(hstring annotationId, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactAnnotation> ** annotation) = 0;
    virtual HRESULT __stdcall abi_FindAnnotationsByRemoteIdAsync(hstring remoteId, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactAnnotation>> ** annotations) = 0;
    virtual HRESULT __stdcall abi_FindAnnotationsAsync(Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactAnnotation>> ** annotations) = 0;
    virtual HRESULT __stdcall abi_DeleteAnnotationAsync(Windows::ApplicationModel::Contacts::IContactAnnotation * annotation, Windows::Foundation::IAsyncAction ** value) = 0;
};

struct __declspec(uuid("23acf4aa-7a77-457d-8203-987f4b31af09")) __declspec(novtable) IContactAnnotationStore : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_FindContactIdsByEmailAsync(hstring emailAddress, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<hstring>> ** contactIds) = 0;
    virtual HRESULT __stdcall abi_FindContactIdsByPhoneNumberAsync(hstring phoneNumber, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<hstring>> ** contactIds) = 0;
    virtual HRESULT __stdcall abi_FindAnnotationsForContactAsync(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactAnnotation>> ** annotations) = 0;
    virtual HRESULT __stdcall abi_DisableAnnotationAsync(Windows::ApplicationModel::Contacts::IContactAnnotation * annotation, Windows::Foundation::IAsyncAction ** value) = 0;
    virtual HRESULT __stdcall abi_CreateAnnotationListAsync(Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactAnnotationList> ** value) = 0;
    virtual HRESULT __stdcall abi_CreateAnnotationListInAccountAsync(hstring userDataAccountId, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactAnnotationList> ** value) = 0;
    virtual HRESULT __stdcall abi_GetAnnotationListAsync(hstring annotationListId, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactAnnotationList> ** value) = 0;
    virtual HRESULT __stdcall abi_FindAnnotationListsAsync(Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactAnnotationList>> ** lists) = 0;
};

struct __declspec(uuid("35d1972d-bfce-46bb-93f8-a5b06ec5e201")) __declspec(novtable) IContactBatch : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Contacts(Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::Contact> ** value) = 0;
    virtual HRESULT __stdcall get_Status(winrt::Windows::ApplicationModel::Contacts::ContactBatchStatus * value) = 0;
};

struct __declspec(uuid("b60af902-1546-434d-869c-6e3520760ef3")) __declspec(novtable) IContactCardDelayedDataLoader : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_SetData(Windows::ApplicationModel::Contacts::IContact * contact) = 0;
};

struct __declspec(uuid("8c0a4f7e-6ab6-4f3f-be72-817236eeea5b")) __declspec(novtable) IContactCardOptions : Windows::IInspectable
{
    virtual HRESULT __stdcall get_HeaderKind(winrt::Windows::ApplicationModel::Contacts::ContactCardHeaderKind * value) = 0;
    virtual HRESULT __stdcall put_HeaderKind(winrt::Windows::ApplicationModel::Contacts::ContactCardHeaderKind value) = 0;
    virtual HRESULT __stdcall get_InitialTabKind(winrt::Windows::ApplicationModel::Contacts::ContactCardTabKind * value) = 0;
    virtual HRESULT __stdcall put_InitialTabKind(winrt::Windows::ApplicationModel::Contacts::ContactCardTabKind value) = 0;
};

struct __declspec(uuid("8f271ba0-d74b-4cc6-9f53-1b0eb5d1273c")) __declspec(novtable) IContactCardOptions2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServerSearchContactListIds(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
};

struct __declspec(uuid("951d4b10-6a59-4720-a4e1-363d98c135d5")) __declspec(novtable) IContactChange : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ChangeType(winrt::Windows::ApplicationModel::Contacts::ContactChangeType * value) = 0;
    virtual HRESULT __stdcall get_Contact(Windows::ApplicationModel::Contacts::IContact ** value) = 0;
};

struct __declspec(uuid("217319fa-2d0c-42e0-a9da-3ecd56a78a47")) __declspec(novtable) IContactChangeReader : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_AcceptChanges() = 0;
    virtual HRESULT __stdcall abi_AcceptChangesThrough(Windows::ApplicationModel::Contacts::IContactChange * lastChangeToAccept) = 0;
    virtual HRESULT __stdcall abi_ReadBatchAsync(Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactChange>> ** value) = 0;
};

struct __declspec(uuid("6e992952-309b-404d-9712-b37bd30278aa")) __declspec(novtable) IContactChangeTracker : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Enable() = 0;
    virtual HRESULT __stdcall abi_GetChangeReader(Windows::ApplicationModel::Contacts::IContactChangeReader ** value) = 0;
    virtual HRESULT __stdcall abi_Reset() = 0;
};

struct __declspec(uuid("c5143ae8-1b03-46f8-b694-a523e83cfcb6")) __declspec(novtable) IContactChangedDeferral : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Complete() = 0;
};

struct __declspec(uuid("525e7fd1-73f3-4b7d-a918-580be4366121")) __declspec(novtable) IContactChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDeferral(Windows::ApplicationModel::Contacts::IContactChangedDeferral ** value) = 0;
};

struct __declspec(uuid("f6f83553-aa27-4731-8e4a-3dec5ce9eec9")) __declspec(novtable) IContactConnectedServiceAccount : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Id(hstring * value) = 0;
    virtual HRESULT __stdcall put_Id(hstring value) = 0;
    virtual HRESULT __stdcall get_ServiceName(hstring * value) = 0;
    virtual HRESULT __stdcall put_ServiceName(hstring value) = 0;
};

struct __declspec(uuid("fe98ae66-b205-4934-9174-0ff2b0565707")) __declspec(novtable) IContactDate : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Day(Windows::Foundation::IReference<uint32_t> ** value) = 0;
    virtual HRESULT __stdcall put_Day(Windows::Foundation::IReference<uint32_t> * value) = 0;
    virtual HRESULT __stdcall get_Month(Windows::Foundation::IReference<uint32_t> ** value) = 0;
    virtual HRESULT __stdcall put_Month(Windows::Foundation::IReference<uint32_t> * value) = 0;
    virtual HRESULT __stdcall get_Year(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_Year(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_Kind(winrt::Windows::ApplicationModel::Contacts::ContactDateKind * value) = 0;
    virtual HRESULT __stdcall put_Kind(winrt::Windows::ApplicationModel::Contacts::ContactDateKind value) = 0;
    virtual HRESULT __stdcall get_Description(hstring * value) = 0;
    virtual HRESULT __stdcall put_Description(hstring value) = 0;
};

struct __declspec(uuid("90a219a9-e3d3-4d63-993b-05b9a5393abf")) __declspec(novtable) IContactEmail : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Address(hstring * value) = 0;
    virtual HRESULT __stdcall put_Address(hstring value) = 0;
    virtual HRESULT __stdcall get_Kind(winrt::Windows::ApplicationModel::Contacts::ContactEmailKind * value) = 0;
    virtual HRESULT __stdcall put_Kind(winrt::Windows::ApplicationModel::Contacts::ContactEmailKind value) = 0;
    virtual HRESULT __stdcall get_Description(hstring * value) = 0;
    virtual HRESULT __stdcall put_Description(hstring value) = 0;
};

struct __declspec(uuid("b176486a-d293-492c-a058-db575b3e3c0f")) __declspec(novtable) IContactField : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Type(winrt::Windows::ApplicationModel::Contacts::ContactFieldType * value) = 0;
    virtual HRESULT __stdcall get_Category(winrt::Windows::ApplicationModel::Contacts::ContactFieldCategory * value) = 0;
    virtual HRESULT __stdcall get_Name(hstring * value) = 0;
    virtual HRESULT __stdcall get_Value(hstring * value) = 0;
};

struct __declspec(uuid("85e2913f-0e4a-4a3e-8994-406ae7ed646e")) __declspec(novtable) IContactFieldFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateField_Default(hstring value, winrt::Windows::ApplicationModel::Contacts::ContactFieldType type, Windows::ApplicationModel::Contacts::IContactField ** field) = 0;
    virtual HRESULT __stdcall abi_CreateField_Category(hstring value, winrt::Windows::ApplicationModel::Contacts::ContactFieldType type, winrt::Windows::ApplicationModel::Contacts::ContactFieldCategory category, Windows::ApplicationModel::Contacts::IContactField ** field) = 0;
    virtual HRESULT __stdcall abi_CreateField_Custom(hstring name, hstring value, winrt::Windows::ApplicationModel::Contacts::ContactFieldType type, winrt::Windows::ApplicationModel::Contacts::ContactFieldCategory category, Windows::ApplicationModel::Contacts::IContactField ** field) = 0;
};

struct __declspec(uuid("275eb6d4-6a2e-4278-a914-e460d5f088f6")) __declspec(novtable) IContactInformation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Name(hstring * value) = 0;
    virtual HRESULT __stdcall abi_GetThumbnailAsync(Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IRandomAccessStreamWithContentType> ** operation) = 0;
    virtual HRESULT __stdcall get_Emails(Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactField> ** value) = 0;
    virtual HRESULT __stdcall get_PhoneNumbers(Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactField> ** value) = 0;
    virtual HRESULT __stdcall get_Locations(Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactLocationField> ** value) = 0;
    virtual HRESULT __stdcall get_InstantMessages(Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactInstantMessageField> ** value) = 0;
    virtual HRESULT __stdcall get_CustomFields(Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactField> ** value) = 0;
    virtual HRESULT __stdcall abi_QueryCustomFields(hstring customName, Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactField> ** value) = 0;
};

struct __declspec(uuid("cce33b37-0d85-41fa-b43d-da599c3eb009")) __declspec(novtable) IContactInstantMessageField : Windows::IInspectable
{
    virtual HRESULT __stdcall get_UserName(hstring * value) = 0;
    virtual HRESULT __stdcall get_Service(hstring * value) = 0;
    virtual HRESULT __stdcall get_DisplayText(hstring * value) = 0;
    virtual HRESULT __stdcall get_LaunchUri(Windows::Foundation::IUriRuntimeClass ** value) = 0;
};

struct __declspec(uuid("ba0b6794-91a3-4bb2-b1b9-69a5dff0ba09")) __declspec(novtable) IContactInstantMessageFieldFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateInstantMessage_Default(hstring userName, Windows::ApplicationModel::Contacts::IContactInstantMessageField ** field) = 0;
    virtual HRESULT __stdcall abi_CreateInstantMessage_Category(hstring userName, winrt::Windows::ApplicationModel::Contacts::ContactFieldCategory category, Windows::ApplicationModel::Contacts::IContactInstantMessageField ** field) = 0;
    virtual HRESULT __stdcall abi_CreateInstantMessage_All(hstring userName, winrt::Windows::ApplicationModel::Contacts::ContactFieldCategory category, hstring service, hstring displayText, Windows::Foundation::IUriRuntimeClass * verb, Windows::ApplicationModel::Contacts::IContactInstantMessageField ** field) = 0;
};

struct __declspec(uuid("6d117b4c-ce50-4b43-9e69-b18258ea5315")) __declspec(novtable) IContactJobInfo : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CompanyName(hstring * value) = 0;
    virtual HRESULT __stdcall put_CompanyName(hstring value) = 0;
    virtual HRESULT __stdcall get_CompanyYomiName(hstring * value) = 0;
    virtual HRESULT __stdcall put_CompanyYomiName(hstring value) = 0;
    virtual HRESULT __stdcall get_Department(hstring * value) = 0;
    virtual HRESULT __stdcall put_Department(hstring value) = 0;
    virtual HRESULT __stdcall get_Title(hstring * value) = 0;
    virtual HRESULT __stdcall put_Title(hstring value) = 0;
    virtual HRESULT __stdcall get_Manager(hstring * value) = 0;
    virtual HRESULT __stdcall put_Manager(hstring value) = 0;
    virtual HRESULT __stdcall get_Office(hstring * value) = 0;
    virtual HRESULT __stdcall put_Office(hstring value) = 0;
    virtual HRESULT __stdcall get_CompanyAddress(hstring * value) = 0;
    virtual HRESULT __stdcall put_CompanyAddress(hstring value) = 0;
    virtual HRESULT __stdcall get_Description(hstring * value) = 0;
    virtual HRESULT __stdcall put_Description(hstring value) = 0;
};

struct __declspec(uuid("fb1232d6-ee73-46e7-8761-11cd0157728f")) __declspec(novtable) IContactLaunchActionVerbsStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Call(hstring * value) = 0;
    virtual HRESULT __stdcall get_Message(hstring * value) = 0;
    virtual HRESULT __stdcall get_Map(hstring * value) = 0;
    virtual HRESULT __stdcall get_Post(hstring * value) = 0;
    virtual HRESULT __stdcall get_VideoCall(hstring * value) = 0;
};

struct __declspec(uuid("16ddec75-392c-4845-9dfb-51a3e7ef3e42")) __declspec(novtable) IContactList : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Id(hstring * value) = 0;
    virtual HRESULT __stdcall get_DisplayName(hstring * value) = 0;
    virtual HRESULT __stdcall put_DisplayName(hstring value) = 0;
    virtual HRESULT __stdcall get_SourceDisplayName(hstring * value) = 0;
    virtual HRESULT __stdcall get_IsHidden(bool * value) = 0;
    virtual HRESULT __stdcall put_IsHidden(bool value) = 0;
    virtual HRESULT __stdcall get_OtherAppReadAccess(winrt::Windows::ApplicationModel::Contacts::ContactListOtherAppReadAccess * value) = 0;
    virtual HRESULT __stdcall put_OtherAppReadAccess(winrt::Windows::ApplicationModel::Contacts::ContactListOtherAppReadAccess value) = 0;
    virtual HRESULT __stdcall get_OtherAppWriteAccess(winrt::Windows::ApplicationModel::Contacts::ContactListOtherAppWriteAccess * value) = 0;
    virtual HRESULT __stdcall put_OtherAppWriteAccess(winrt::Windows::ApplicationModel::Contacts::ContactListOtherAppWriteAccess value) = 0;
    virtual HRESULT __stdcall get_ChangeTracker(Windows::ApplicationModel::Contacts::IContactChangeTracker ** value) = 0;
    virtual HRESULT __stdcall get_SyncManager(Windows::ApplicationModel::Contacts::IContactListSyncManager ** value) = 0;
    virtual HRESULT __stdcall get_SupportsServerSearch(bool * value) = 0;
    virtual HRESULT __stdcall get_UserDataAccountId(hstring * value) = 0;
    virtual HRESULT __stdcall add_ContactChanged(Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Contacts::ContactList, Windows::ApplicationModel::Contacts::ContactChangedEventArgs> * value, event_token * returnValue) = 0;
    virtual HRESULT __stdcall remove_ContactChanged(event_token value) = 0;
    virtual HRESULT __stdcall abi_SaveAsync(Windows::Foundation::IAsyncAction ** returnValue) = 0;
    virtual HRESULT __stdcall abi_DeleteAsync(Windows::Foundation::IAsyncAction ** returnValue) = 0;
    virtual HRESULT __stdcall abi_GetContactFromRemoteIdAsync(hstring remoteId, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::Contact> ** contact) = 0;
    virtual HRESULT __stdcall abi_GetMeContactAsync(Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::Contact> ** meContact) = 0;
    virtual HRESULT __stdcall abi_GetContactReader(Windows::ApplicationModel::Contacts::IContactReader ** value) = 0;
    virtual HRESULT __stdcall abi_GetContactReaderWithOptions(Windows::ApplicationModel::Contacts::IContactQueryOptions * options, Windows::ApplicationModel::Contacts::IContactReader ** value) = 0;
    virtual HRESULT __stdcall abi_SaveContactAsync(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::IAsyncAction ** value) = 0;
    virtual HRESULT __stdcall abi_DeleteContactAsync(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::IAsyncAction ** value) = 0;
    virtual HRESULT __stdcall abi_GetContactAsync(hstring contactId, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::Contact> ** contacts) = 0;
};

struct __declspec(uuid("cb3943b4-4550-4dcb-9229-40ff91fb0203")) __declspec(novtable) IContactList2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_RegisterSyncManagerAsync(Windows::Foundation::IAsyncAction ** result) = 0;
    virtual HRESULT __stdcall put_SupportsServerSearch(bool value) = 0;
    virtual HRESULT __stdcall get_SyncConstraints(Windows::ApplicationModel::Contacts::IContactListSyncConstraints ** value) = 0;
};

struct __declspec(uuid("b2b0bf01-3062-4e2e-969d-018d1987f314")) __declspec(novtable) IContactListSyncConstraints : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CanSyncDescriptions(bool * value) = 0;
    virtual HRESULT __stdcall put_CanSyncDescriptions(bool value) = 0;
    virtual HRESULT __stdcall get_MaxHomePhoneNumbers(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxHomePhoneNumbers(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxMobilePhoneNumbers(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxMobilePhoneNumbers(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxWorkPhoneNumbers(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxWorkPhoneNumbers(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxOtherPhoneNumbers(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxOtherPhoneNumbers(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxPagerPhoneNumbers(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxPagerPhoneNumbers(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxBusinessFaxPhoneNumbers(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxBusinessFaxPhoneNumbers(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxHomeFaxPhoneNumbers(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxHomeFaxPhoneNumbers(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxCompanyPhoneNumbers(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxCompanyPhoneNumbers(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxAssistantPhoneNumbers(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxAssistantPhoneNumbers(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxRadioPhoneNumbers(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxRadioPhoneNumbers(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxPersonalEmailAddresses(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxPersonalEmailAddresses(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxWorkEmailAddresses(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxWorkEmailAddresses(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxOtherEmailAddresses(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxOtherEmailAddresses(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxHomeAddresses(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxHomeAddresses(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxWorkAddresses(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxWorkAddresses(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxOtherAddresses(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxOtherAddresses(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxBirthdayDates(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxBirthdayDates(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxAnniversaryDates(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxAnniversaryDates(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxOtherDates(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxOtherDates(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxOtherRelationships(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxOtherRelationships(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxSpouseRelationships(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxSpouseRelationships(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxPartnerRelationships(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxPartnerRelationships(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxSiblingRelationships(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxSiblingRelationships(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxParentRelationships(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxParentRelationships(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxChildRelationships(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxChildRelationships(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxJobInfo(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxJobInfo(Windows::Foundation::IReference<int32_t> * value) = 0;
    virtual HRESULT __stdcall get_MaxWebsites(Windows::Foundation::IReference<int32_t> ** value) = 0;
    virtual HRESULT __stdcall put_MaxWebsites(Windows::Foundation::IReference<int32_t> * value) = 0;
};

struct __declspec(uuid("146e83be-7925-4acc-9de5-21ddd06f8674")) __declspec(novtable) IContactListSyncManager : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Status(winrt::Windows::ApplicationModel::Contacts::ContactListSyncStatus * value) = 0;
    virtual HRESULT __stdcall get_LastSuccessfulSyncTime(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_LastAttemptedSyncTime(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall abi_SyncAsync(Windows::Foundation::IAsyncOperation<bool> ** result) = 0;
    virtual HRESULT __stdcall add_SyncStatusChanged(Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Contacts::ContactListSyncManager, Windows::IInspectable> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_SyncStatusChanged(event_token token) = 0;
};

struct __declspec(uuid("a9591247-bb55-4e23-8128-370134a85d0d")) __declspec(novtable) IContactListSyncManager2 : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Status(winrt::Windows::ApplicationModel::Contacts::ContactListSyncStatus value) = 0;
    virtual HRESULT __stdcall put_LastSuccessfulSyncTime(Windows::Foundation::DateTime value) = 0;
    virtual HRESULT __stdcall put_LastAttemptedSyncTime(Windows::Foundation::DateTime value) = 0;
};

struct __declspec(uuid("9ec00f82-ab6e-4b36-89e3-b23bc0a1dacc")) __declspec(novtable) IContactLocationField : Windows::IInspectable
{
    virtual HRESULT __stdcall get_UnstructuredAddress(hstring * value) = 0;
    virtual HRESULT __stdcall get_Street(hstring * value) = 0;
    virtual HRESULT __stdcall get_City(hstring * value) = 0;
    virtual HRESULT __stdcall get_Region(hstring * value) = 0;
    virtual HRESULT __stdcall get_Country(hstring * value) = 0;
    virtual HRESULT __stdcall get_PostalCode(hstring * value) = 0;
};

struct __declspec(uuid("f79932d7-2fdf-43fe-8f18-41897390bcfe")) __declspec(novtable) IContactLocationFieldFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateLocation_Default(hstring unstructuredAddress, Windows::ApplicationModel::Contacts::IContactLocationField ** field) = 0;
    virtual HRESULT __stdcall abi_CreateLocation_Category(hstring unstructuredAddress, winrt::Windows::ApplicationModel::Contacts::ContactFieldCategory category, Windows::ApplicationModel::Contacts::IContactLocationField ** field) = 0;
    virtual HRESULT __stdcall abi_CreateLocation_All(hstring unstructuredAddress, winrt::Windows::ApplicationModel::Contacts::ContactFieldCategory category, hstring street, hstring city, hstring region, hstring country, hstring postalCode, Windows::ApplicationModel::Contacts::IContactLocationField ** field) = 0;
};

struct __declspec(uuid("b74bba57-1076-4bef-aef3-54686d18387d")) __declspec(novtable) IContactManagerForUser : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ConvertContactToVCardAsync(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::RandomAccessStreamReference> ** result) = 0;
    virtual HRESULT __stdcall abi_ConvertContactToVCardAsyncWithMaxBytes(Windows::ApplicationModel::Contacts::IContact * contact, uint32_t maxBytes, Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::RandomAccessStreamReference> ** result) = 0;
    virtual HRESULT __stdcall abi_ConvertVCardToContactAsync(Windows::Storage::Streams::IRandomAccessStreamReference * vCard, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::Contact> ** result) = 0;
    virtual HRESULT __stdcall abi_RequestStoreAsync(winrt::Windows::ApplicationModel::Contacts::ContactStoreAccessType accessType, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactStore> ** result) = 0;
    virtual HRESULT __stdcall abi_RequestAnnotationStoreAsync(winrt::Windows::ApplicationModel::Contacts::ContactAnnotationStoreAccessType accessType, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactAnnotationStore> ** result) = 0;
    virtual HRESULT __stdcall get_SystemDisplayNameOrder(winrt::Windows::ApplicationModel::Contacts::ContactNameOrder * value) = 0;
    virtual HRESULT __stdcall put_SystemDisplayNameOrder(winrt::Windows::ApplicationModel::Contacts::ContactNameOrder value) = 0;
    virtual HRESULT __stdcall get_SystemSortOrder(winrt::Windows::ApplicationModel::Contacts::ContactNameOrder * value) = 0;
    virtual HRESULT __stdcall put_SystemSortOrder(winrt::Windows::ApplicationModel::Contacts::ContactNameOrder value) = 0;
    virtual HRESULT __stdcall get_User(Windows::System::IUser ** value) = 0;
};

struct __declspec(uuid("81f21ac0-f661-4708-ba4f-d386bd0d622e")) __declspec(novtable) IContactManagerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ShowContactCard(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::Rect selection) = 0;
    virtual HRESULT __stdcall abi_ShowContactCardWithPlacement(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::Rect selection, winrt::Windows::UI::Popups::Placement preferredPlacement) = 0;
    virtual HRESULT __stdcall abi_ShowDelayLoadedContactCard(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::Rect selection, winrt::Windows::UI::Popups::Placement preferredPlacement, Windows::ApplicationModel::Contacts::IContactCardDelayedDataLoader ** dataLoader) = 0;
};

struct __declspec(uuid("a178e620-47d8-48cc-963c-9592b6e510c6")) __declspec(novtable) IContactManagerStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_RequestStoreAsync(Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactStore> ** store) = 0;
};

struct __declspec(uuid("c4cc3d42-7586-492a-930b-7bc138fc2139")) __declspec(novtable) IContactManagerStatics3 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ConvertContactToVCardAsync(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::RandomAccessStreamReference> ** vCard) = 0;
    virtual HRESULT __stdcall abi_ConvertContactToVCardAsyncWithMaxBytes(Windows::ApplicationModel::Contacts::IContact * contact, uint32_t maxBytes, Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::RandomAccessStreamReference> ** vCard) = 0;
    virtual HRESULT __stdcall abi_ConvertVCardToContactAsync(Windows::Storage::Streams::IRandomAccessStreamReference * vCard, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::Contact> ** contact) = 0;
    virtual HRESULT __stdcall abi_RequestStoreAsyncWithAccessType(winrt::Windows::ApplicationModel::Contacts::ContactStoreAccessType accessType, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactStore> ** store) = 0;
    virtual HRESULT __stdcall abi_RequestAnnotationStoreAsync(winrt::Windows::ApplicationModel::Contacts::ContactAnnotationStoreAccessType accessType, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactAnnotationStore> ** store) = 0;
    virtual HRESULT __stdcall abi_IsShowContactCardSupported(bool * result) = 0;
    virtual HRESULT __stdcall abi_ShowContactCardWithOptions(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::Rect selection, winrt::Windows::UI::Popups::Placement preferredPlacement, Windows::ApplicationModel::Contacts::IContactCardOptions * contactCardOptions) = 0;
    virtual HRESULT __stdcall abi_IsShowDelayLoadedContactCardSupported(bool * result) = 0;
    virtual HRESULT __stdcall abi_ShowDelayLoadedContactCardWithOptions(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::Rect selection, winrt::Windows::UI::Popups::Placement preferredPlacement, Windows::ApplicationModel::Contacts::IContactCardOptions * contactCardOptions, Windows::ApplicationModel::Contacts::IContactCardDelayedDataLoader ** dataLoader) = 0;
    virtual HRESULT __stdcall abi_ShowFullContactCard(Windows::ApplicationModel::Contacts::IContact * contact, Windows::ApplicationModel::Contacts::IFullContactCardOptions * fullContactCardOptions) = 0;
    virtual HRESULT __stdcall get_SystemDisplayNameOrder(winrt::Windows::ApplicationModel::Contacts::ContactNameOrder * value) = 0;
    virtual HRESULT __stdcall put_SystemDisplayNameOrder(winrt::Windows::ApplicationModel::Contacts::ContactNameOrder value) = 0;
    virtual HRESULT __stdcall get_SystemSortOrder(winrt::Windows::ApplicationModel::Contacts::ContactNameOrder * value) = 0;
    virtual HRESULT __stdcall put_SystemSortOrder(winrt::Windows::ApplicationModel::Contacts::ContactNameOrder value) = 0;
};

struct __declspec(uuid("24982272-347b-46dc-8d95-51bd41e15aaf")) __declspec(novtable) IContactManagerStatics4 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetForUser(Windows::System::IUser * user, Windows::ApplicationModel::Contacts::IContactManagerForUser ** result) = 0;
};

struct __declspec(uuid("bc922504-e7d8-413e-95f4-b75c54c74077")) __declspec(novtable) IContactMatchReason : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Field(winrt::Windows::ApplicationModel::Contacts::ContactMatchReasonKind * value) = 0;
    virtual HRESULT __stdcall get_Segments(Windows::Foundation::Collections::IVectorView<Windows::Data::Text::TextSegment> ** value) = 0;
    virtual HRESULT __stdcall get_Text(hstring * value) = 0;
};

struct __declspec(uuid("f404e97b-9034-453c-8ebf-140a38c86f1d")) __declspec(novtable) IContactName : Windows::IInspectable
{
    virtual HRESULT __stdcall get_FirstName(hstring * value) = 0;
    virtual HRESULT __stdcall put_FirstName(hstring value) = 0;
    virtual HRESULT __stdcall get_LastName(hstring * value) = 0;
    virtual HRESULT __stdcall put_LastName(hstring value) = 0;
    virtual HRESULT __stdcall get_MiddleName(hstring * value) = 0;
    virtual HRESULT __stdcall put_MiddleName(hstring value) = 0;
    virtual HRESULT __stdcall get_YomiGivenName(hstring * value) = 0;
    virtual HRESULT __stdcall put_YomiGivenName(hstring value) = 0;
    virtual HRESULT __stdcall get_YomiFamilyName(hstring * value) = 0;
    virtual HRESULT __stdcall put_YomiFamilyName(hstring value) = 0;
    virtual HRESULT __stdcall get_HonorificNameSuffix(hstring * value) = 0;
    virtual HRESULT __stdcall put_HonorificNameSuffix(hstring value) = 0;
    virtual HRESULT __stdcall get_HonorificNamePrefix(hstring * value) = 0;
    virtual HRESULT __stdcall put_HonorificNamePrefix(hstring value) = 0;
    virtual HRESULT __stdcall get_DisplayName(hstring * value) = 0;
    virtual HRESULT __stdcall get_YomiDisplayName(hstring * value) = 0;
};

struct __declspec(uuid("467dab65-2712-4f52-b783-9ea8111c63cd")) __declspec(novtable) IContactPhone : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Number(hstring * value) = 0;
    virtual HRESULT __stdcall put_Number(hstring value) = 0;
    virtual HRESULT __stdcall get_Kind(winrt::Windows::ApplicationModel::Contacts::ContactPhoneKind * value) = 0;
    virtual HRESULT __stdcall put_Kind(winrt::Windows::ApplicationModel::Contacts::ContactPhoneKind value) = 0;
    virtual HRESULT __stdcall get_Description(hstring * value) = 0;
    virtual HRESULT __stdcall put_Description(hstring value) = 0;
};

struct __declspec(uuid("0e09fd91-42f8-4055-90a0-896f96738936")) __declspec(novtable) IContactPicker : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CommitButtonText(hstring * value) = 0;
    virtual HRESULT __stdcall put_CommitButtonText(hstring value) = 0;
    virtual HRESULT __stdcall get_SelectionMode(winrt::Windows::ApplicationModel::Contacts::ContactSelectionMode * value) = 0;
    virtual HRESULT __stdcall put_SelectionMode(winrt::Windows::ApplicationModel::Contacts::ContactSelectionMode value) = 0;
    virtual HRESULT __stdcall get_DesiredFields(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
    virtual HRESULT __stdcall abi_PickSingleContactAsync(Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactInformation> ** result) = 0;
    virtual HRESULT __stdcall abi_PickMultipleContactsAsync(Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactInformation>> ** result) = 0;
};

struct __declspec(uuid("b35011cf-5cef-4d24-aa0c-340c5208725d")) __declspec(novtable) IContactPicker2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DesiredFieldsWithContactFieldType(Windows::Foundation::Collections::IVector<winrt::Windows::ApplicationModel::Contacts::ContactFieldType> ** value) = 0;
    virtual HRESULT __stdcall abi_PickContactAsync(Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::Contact> ** result) = 0;
    virtual HRESULT __stdcall abi_PickContactsAsync(Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<Windows::ApplicationModel::Contacts::Contact>> ** result) = 0;
};

struct __declspec(uuid("4408cc9e-7d7c-42f0-8ac7-f50733ecdbc1")) __declspec(novtable) IContactQueryOptions : Windows::IInspectable
{
    virtual HRESULT __stdcall get_TextSearch(Windows::ApplicationModel::Contacts::IContactQueryTextSearch ** value) = 0;
    virtual HRESULT __stdcall get_ContactListIds(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
    virtual HRESULT __stdcall get_IncludeContactsFromHiddenLists(bool * value) = 0;
    virtual HRESULT __stdcall put_IncludeContactsFromHiddenLists(bool value) = 0;
    virtual HRESULT __stdcall get_DesiredFields(winrt::Windows::ApplicationModel::Contacts::ContactQueryDesiredFields * value) = 0;
    virtual HRESULT __stdcall put_DesiredFields(winrt::Windows::ApplicationModel::Contacts::ContactQueryDesiredFields value) = 0;
    virtual HRESULT __stdcall get_DesiredOperations(winrt::Windows::ApplicationModel::Contacts::ContactAnnotationOperations * value) = 0;
    virtual HRESULT __stdcall put_DesiredOperations(winrt::Windows::ApplicationModel::Contacts::ContactAnnotationOperations value) = 0;
    virtual HRESULT __stdcall get_AnnotationListIds(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
};

struct __declspec(uuid("543fba47-8ce7-46cb-9dac-9aa42a1bc8e2")) __declspec(novtable) IContactQueryOptionsFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateWithText(hstring text, Windows::ApplicationModel::Contacts::IContactQueryOptions ** result) = 0;
    virtual HRESULT __stdcall abi_CreateWithTextAndFields(hstring text, winrt::Windows::ApplicationModel::Contacts::ContactQuerySearchFields fields, Windows::ApplicationModel::Contacts::IContactQueryOptions ** result) = 0;
};

struct __declspec(uuid("f7e3f9cb-a957-439b-a0b7-1c02a1963ff0")) __declspec(novtable) IContactQueryTextSearch : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Fields(winrt::Windows::ApplicationModel::Contacts::ContactQuerySearchFields * value) = 0;
    virtual HRESULT __stdcall put_Fields(winrt::Windows::ApplicationModel::Contacts::ContactQuerySearchFields value) = 0;
    virtual HRESULT __stdcall get_Text(hstring * value) = 0;
    virtual HRESULT __stdcall put_Text(hstring value) = 0;
    virtual HRESULT __stdcall get_SearchScope(winrt::Windows::ApplicationModel::Contacts::ContactQuerySearchScope * value) = 0;
    virtual HRESULT __stdcall put_SearchScope(winrt::Windows::ApplicationModel::Contacts::ContactQuerySearchScope value) = 0;
};

struct __declspec(uuid("d397e42e-1488-42f2-bf64-253f4884bfed")) __declspec(novtable) IContactReader : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ReadBatchAsync(Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactBatch> ** value) = 0;
    virtual HRESULT __stdcall abi_GetMatchingPropertiesWithMatchReason(Windows::ApplicationModel::Contacts::IContact * contact, Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactMatchReason> ** ppRetVal) = 0;
};

struct __declspec(uuid("8873b5ab-c5fb-46d8-93fe-da3ff1934054")) __declspec(novtable) IContactSignificantOther : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Name(hstring * value) = 0;
    virtual HRESULT __stdcall put_Name(hstring value) = 0;
    virtual HRESULT __stdcall get_Description(hstring * value) = 0;
    virtual HRESULT __stdcall put_Description(hstring value) = 0;
};

struct __declspec(uuid("8d7bd474-3f03-45f8-ba0f-c4ed37d64219")) __declspec(novtable) IContactSignificantOther2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Relationship(winrt::Windows::ApplicationModel::Contacts::ContactRelationship * value) = 0;
    virtual HRESULT __stdcall put_Relationship(winrt::Windows::ApplicationModel::Contacts::ContactRelationship value) = 0;
};

struct __declspec(uuid("2c220b10-3a6c-4293-b9bc-fe987f6e0d52")) __declspec(novtable) IContactStore : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_FindContactsAsync(Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::Contact>> ** contacts) = 0;
    virtual HRESULT __stdcall abi_FindContactsWithSearchTextAsync(hstring searchText, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::Contact>> ** contacts) = 0;
    virtual HRESULT __stdcall abi_GetContactAsync(hstring contactId, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::Contact> ** contacts) = 0;
};

struct __declspec(uuid("18ce1c22-ebd5-4bfb-b690-5f4f27c4f0e8")) __declspec(novtable) IContactStore2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ChangeTracker(Windows::ApplicationModel::Contacts::IContactChangeTracker ** value) = 0;
    virtual HRESULT __stdcall add_ContactChanged(Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Contacts::ContactStore, Windows::ApplicationModel::Contacts::ContactChangedEventArgs> * value, event_token * returnValue) = 0;
    virtual HRESULT __stdcall remove_ContactChanged(event_token value) = 0;
    virtual HRESULT __stdcall get_AggregateContactManager(Windows::ApplicationModel::Contacts::IAggregateContactManager ** value) = 0;
    virtual HRESULT __stdcall abi_FindContactListsAsync(Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Contacts::ContactList>> ** value) = 0;
    virtual HRESULT __stdcall abi_GetContactListAsync(hstring contactListId, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactList> ** value) = 0;
    virtual HRESULT __stdcall abi_CreateContactListAsync(hstring displayName, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactList> ** value) = 0;
    virtual HRESULT __stdcall abi_GetMeContactAsync(Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::Contact> ** meContact) = 0;
    virtual HRESULT __stdcall abi_GetContactReader(Windows::ApplicationModel::Contacts::IContactReader ** value) = 0;
    virtual HRESULT __stdcall abi_GetContactReaderWithOptions(Windows::ApplicationModel::Contacts::IContactQueryOptions * options, Windows::ApplicationModel::Contacts::IContactReader ** value) = 0;
    virtual HRESULT __stdcall abi_CreateContactListInAccountAsync(hstring displayName, hstring userDataAccountId, Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Contacts::ContactList> ** value) = 0;
};

struct __declspec(uuid("abb298d6-878a-4f8b-a9ce-46bb7d1c84ce")) __declspec(novtable) IContactStoreNotificationTriggerDetails : Windows::IInspectable
{
};

struct __declspec(uuid("9f130176-dc1b-4055-ad66-652f39d990e8")) __declspec(novtable) IContactWebsite : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Uri(Windows::Foundation::IUriRuntimeClass ** value) = 0;
    virtual HRESULT __stdcall put_Uri(Windows::Foundation::IUriRuntimeClass * value) = 0;
    virtual HRESULT __stdcall get_Description(hstring * value) = 0;
    virtual HRESULT __stdcall put_Description(hstring value) = 0;
};

struct __declspec(uuid("f87ee91e-5647-4068-bb5e-4b6f437ce308")) __declspec(novtable) IContactWebsite2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_RawValue(hstring * value) = 0;
    virtual HRESULT __stdcall put_RawValue(hstring value) = 0;
};

struct __declspec(uuid("8744436c-5cf9-4683-bdca-a1fdebf8dbce")) __declspec(novtable) IFullContactCardOptions : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DesiredRemainingView(winrt::Windows::UI::ViewManagement::ViewSizePreference * value) = 0;
    virtual HRESULT __stdcall put_DesiredRemainingView(winrt::Windows::UI::ViewManagement::ViewSizePreference value) = 0;
};

struct __declspec(uuid("2e0e1b12-d627-4fca-bad4-1faf168c7d14")) __declspec(novtable) IKnownContactFieldStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Email(hstring * value) = 0;
    virtual HRESULT __stdcall get_PhoneNumber(hstring * value) = 0;
    virtual HRESULT __stdcall get_Location(hstring * value) = 0;
    virtual HRESULT __stdcall get_InstantMessage(hstring * value) = 0;
    virtual HRESULT __stdcall abi_ConvertNameToType(hstring name, winrt::Windows::ApplicationModel::Contacts::ContactFieldType * type) = 0;
    virtual HRESULT __stdcall abi_ConvertTypeToName(winrt::Windows::ApplicationModel::Contacts::ContactFieldType type, hstring * name) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::ApplicationModel::Contacts::AggregateContactManager> { using default_interface = Windows::ApplicationModel::Contacts::IAggregateContactManager; };
template <> struct traits<Windows::ApplicationModel::Contacts::Contact> { using default_interface = Windows::ApplicationModel::Contacts::IContact; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactAddress> { using default_interface = Windows::ApplicationModel::Contacts::IContactAddress; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactAnnotation> { using default_interface = Windows::ApplicationModel::Contacts::IContactAnnotation; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactAnnotationList> { using default_interface = Windows::ApplicationModel::Contacts::IContactAnnotationList; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactAnnotationStore> { using default_interface = Windows::ApplicationModel::Contacts::IContactAnnotationStore; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactBatch> { using default_interface = Windows::ApplicationModel::Contacts::IContactBatch; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactCardDelayedDataLoader> { using default_interface = Windows::ApplicationModel::Contacts::IContactCardDelayedDataLoader; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactCardOptions> { using default_interface = Windows::ApplicationModel::Contacts::IContactCardOptions; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactChange> { using default_interface = Windows::ApplicationModel::Contacts::IContactChange; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactChangeReader> { using default_interface = Windows::ApplicationModel::Contacts::IContactChangeReader; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactChangeTracker> { using default_interface = Windows::ApplicationModel::Contacts::IContactChangeTracker; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactChangedDeferral> { using default_interface = Windows::ApplicationModel::Contacts::IContactChangedDeferral; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactChangedEventArgs> { using default_interface = Windows::ApplicationModel::Contacts::IContactChangedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactConnectedServiceAccount> { using default_interface = Windows::ApplicationModel::Contacts::IContactConnectedServiceAccount; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactDate> { using default_interface = Windows::ApplicationModel::Contacts::IContactDate; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactEmail> { using default_interface = Windows::ApplicationModel::Contacts::IContactEmail; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactField> { using default_interface = Windows::ApplicationModel::Contacts::IContactField; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactFieldFactory> { using default_interface = Windows::ApplicationModel::Contacts::IContactFieldFactory; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactInformation> { using default_interface = Windows::ApplicationModel::Contacts::IContactInformation; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactInstantMessageField> { using default_interface = Windows::ApplicationModel::Contacts::IContactInstantMessageField; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactJobInfo> { using default_interface = Windows::ApplicationModel::Contacts::IContactJobInfo; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactList> { using default_interface = Windows::ApplicationModel::Contacts::IContactList; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactListSyncConstraints> { using default_interface = Windows::ApplicationModel::Contacts::IContactListSyncConstraints; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactListSyncManager> { using default_interface = Windows::ApplicationModel::Contacts::IContactListSyncManager; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactLocationField> { using default_interface = Windows::ApplicationModel::Contacts::IContactLocationField; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactManagerForUser> { using default_interface = Windows::ApplicationModel::Contacts::IContactManagerForUser; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactMatchReason> { using default_interface = Windows::ApplicationModel::Contacts::IContactMatchReason; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactPhone> { using default_interface = Windows::ApplicationModel::Contacts::IContactPhone; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactPicker> { using default_interface = Windows::ApplicationModel::Contacts::IContactPicker; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactQueryOptions> { using default_interface = Windows::ApplicationModel::Contacts::IContactQueryOptions; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactQueryTextSearch> { using default_interface = Windows::ApplicationModel::Contacts::IContactQueryTextSearch; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactReader> { using default_interface = Windows::ApplicationModel::Contacts::IContactReader; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactSignificantOther> { using default_interface = Windows::ApplicationModel::Contacts::IContactSignificantOther; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactStore> { using default_interface = Windows::ApplicationModel::Contacts::IContactStore; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactStoreNotificationTriggerDetails> { using default_interface = Windows::ApplicationModel::Contacts::IContactStoreNotificationTriggerDetails; };
template <> struct traits<Windows::ApplicationModel::Contacts::ContactWebsite> { using default_interface = Windows::ApplicationModel::Contacts::IContactWebsite; };
template <> struct traits<Windows::ApplicationModel::Contacts::FullContactCardOptions> { using default_interface = Windows::ApplicationModel::Contacts::IFullContactCardOptions; };

}

namespace Windows::ApplicationModel::Contacts {

template <typename T> struct impl_IAggregateContactManager;
template <typename T> struct impl_IAggregateContactManager2;
template <typename T> struct impl_IContact;
template <typename T> struct impl_IContact2;
template <typename T> struct impl_IContact3;
template <typename T> struct impl_IContactAddress;
template <typename T> struct impl_IContactAnnotation;
template <typename T> struct impl_IContactAnnotationList;
template <typename T> struct impl_IContactAnnotationStore;
template <typename T> struct impl_IContactBatch;
template <typename T> struct impl_IContactCardDelayedDataLoader;
template <typename T> struct impl_IContactCardOptions;
template <typename T> struct impl_IContactCardOptions2;
template <typename T> struct impl_IContactChange;
template <typename T> struct impl_IContactChangeReader;
template <typename T> struct impl_IContactChangeTracker;
template <typename T> struct impl_IContactChangedDeferral;
template <typename T> struct impl_IContactChangedEventArgs;
template <typename T> struct impl_IContactConnectedServiceAccount;
template <typename T> struct impl_IContactDate;
template <typename T> struct impl_IContactEmail;
template <typename T> struct impl_IContactField;
template <typename T> struct impl_IContactFieldFactory;
template <typename T> struct impl_IContactInformation;
template <typename T> struct impl_IContactInstantMessageField;
template <typename T> struct impl_IContactInstantMessageFieldFactory;
template <typename T> struct impl_IContactJobInfo;
template <typename T> struct impl_IContactLaunchActionVerbsStatics;
template <typename T> struct impl_IContactList;
template <typename T> struct impl_IContactList2;
template <typename T> struct impl_IContactListSyncConstraints;
template <typename T> struct impl_IContactListSyncManager;
template <typename T> struct impl_IContactListSyncManager2;
template <typename T> struct impl_IContactLocationField;
template <typename T> struct impl_IContactLocationFieldFactory;
template <typename T> struct impl_IContactManagerForUser;
template <typename T> struct impl_IContactManagerStatics;
template <typename T> struct impl_IContactManagerStatics2;
template <typename T> struct impl_IContactManagerStatics3;
template <typename T> struct impl_IContactManagerStatics4;
template <typename T> struct impl_IContactMatchReason;
template <typename T> struct impl_IContactName;
template <typename T> struct impl_IContactPhone;
template <typename T> struct impl_IContactPicker;
template <typename T> struct impl_IContactPicker2;
template <typename T> struct impl_IContactQueryOptions;
template <typename T> struct impl_IContactQueryOptionsFactory;
template <typename T> struct impl_IContactQueryTextSearch;
template <typename T> struct impl_IContactReader;
template <typename T> struct impl_IContactSignificantOther;
template <typename T> struct impl_IContactSignificantOther2;
template <typename T> struct impl_IContactStore;
template <typename T> struct impl_IContactStore2;
template <typename T> struct impl_IContactStoreNotificationTriggerDetails;
template <typename T> struct impl_IContactWebsite;
template <typename T> struct impl_IContactWebsite2;
template <typename T> struct impl_IFullContactCardOptions;
template <typename T> struct impl_IKnownContactFieldStatics;

}

namespace impl {

template <> struct traits<Windows::ApplicationModel::Contacts::IAggregateContactManager>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IAggregateContactManager;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IAggregateContactManager<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IAggregateContactManager2>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IAggregateContactManager2;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IAggregateContactManager2<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContact>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContact;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContact<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContact2>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContact2;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContact2<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContact3>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContact3;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContact3<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactAddress>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactAddress;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactAddress<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactAnnotation>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactAnnotation;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactAnnotation<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactAnnotationList>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactAnnotationList;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactAnnotationList<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactAnnotationStore>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactAnnotationStore;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactAnnotationStore<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactBatch>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactBatch;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactBatch<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactCardDelayedDataLoader>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactCardDelayedDataLoader;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactCardDelayedDataLoader<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactCardOptions>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactCardOptions;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactCardOptions<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactCardOptions2>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactCardOptions2;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactCardOptions2<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactChange>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactChange;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactChange<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactChangeReader>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactChangeReader;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactChangeReader<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactChangeTracker>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactChangeTracker;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactChangeTracker<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactChangedDeferral>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactChangedDeferral;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactChangedDeferral<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactChangedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactChangedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactChangedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactConnectedServiceAccount>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactConnectedServiceAccount;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactConnectedServiceAccount<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactDate>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactDate;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactDate<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactEmail>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactEmail;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactEmail<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactField>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactField;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactField<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactFieldFactory>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactFieldFactory;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactFieldFactory<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactInformation>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactInformation;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactInformation<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactInstantMessageField>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactInstantMessageField;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactInstantMessageField<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactInstantMessageFieldFactory>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactInstantMessageFieldFactory;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactInstantMessageFieldFactory<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactJobInfo>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactJobInfo;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactJobInfo<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactLaunchActionVerbsStatics>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactLaunchActionVerbsStatics;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactLaunchActionVerbsStatics<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactList>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactList;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactList<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactList2>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactList2;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactList2<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactListSyncConstraints>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactListSyncConstraints;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactListSyncConstraints<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactListSyncManager>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactListSyncManager;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactListSyncManager<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactListSyncManager2>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactListSyncManager2;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactListSyncManager2<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactLocationField>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactLocationField;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactLocationField<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactLocationFieldFactory>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactLocationFieldFactory;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactLocationFieldFactory<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactManagerForUser>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactManagerForUser;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactManagerForUser<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactManagerStatics>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactManagerStatics;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactManagerStatics<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactManagerStatics2>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactManagerStatics2;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactManagerStatics2<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactManagerStatics3>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactManagerStatics3;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactManagerStatics3<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactManagerStatics4>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactManagerStatics4;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactManagerStatics4<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactMatchReason>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactMatchReason;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactMatchReason<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactName>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactName;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactName<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactPhone>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactPhone;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactPhone<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactPicker>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactPicker;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactPicker<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactPicker2>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactPicker2;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactPicker2<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactQueryOptions>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactQueryOptions;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactQueryOptions<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactQueryOptionsFactory>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactQueryOptionsFactory;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactQueryOptionsFactory<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactQueryTextSearch>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactQueryTextSearch;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactQueryTextSearch<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactReader>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactReader;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactReader<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactSignificantOther>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactSignificantOther;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactSignificantOther<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactSignificantOther2>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactSignificantOther2;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactSignificantOther2<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactStore>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactStore;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactStore<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactStore2>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactStore2;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactStore2<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactStoreNotificationTriggerDetails>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactStoreNotificationTriggerDetails;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactStoreNotificationTriggerDetails<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactWebsite>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactWebsite;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactWebsite<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IContactWebsite2>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IContactWebsite2;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IContactWebsite2<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IFullContactCardOptions>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IFullContactCardOptions;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IFullContactCardOptions<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::IKnownContactFieldStatics>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::IKnownContactFieldStatics;
    template <typename D> using consume = Windows::ApplicationModel::Contacts::impl_IKnownContactFieldStatics<D>;
};

template <> struct traits<Windows::ApplicationModel::Contacts::AggregateContactManager>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::AggregateContactManager;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.AggregateContactManager"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::Contact>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::Contact;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.Contact"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactAddress>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactAddress;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactAddress"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactAnnotation>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactAnnotation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactAnnotation"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactAnnotationList>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactAnnotationList;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactAnnotationList"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactAnnotationStore>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactAnnotationStore;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactAnnotationStore"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactBatch>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactBatch;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactBatch"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactCardDelayedDataLoader>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactCardDelayedDataLoader;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactCardDelayedDataLoader"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactCardOptions>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactCardOptions;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactCardOptions"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactChange>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactChange;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactChange"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactChangeReader>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactChangeReader;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactChangeReader"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactChangeTracker>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactChangeTracker;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactChangeTracker"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactChangedDeferral>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactChangedDeferral;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactChangedDeferral"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactChangedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactChangedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactConnectedServiceAccount>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactConnectedServiceAccount;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactConnectedServiceAccount"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactDate>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactDate;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactDate"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactEmail>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactEmail;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactEmail"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactField>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactField;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactField"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactFieldFactory>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactFieldFactory;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactFieldFactory"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactInformation>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactInformation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactInformation"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactInstantMessageField>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactInstantMessageField;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactInstantMessageField"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactJobInfo>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactJobInfo;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactJobInfo"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactLaunchActionVerbs>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactLaunchActionVerbs"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactList>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactList;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactList"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactListSyncConstraints>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactListSyncConstraints;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactListSyncConstraints"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactListSyncManager>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactListSyncManager;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactListSyncManager"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactLocationField>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactLocationField;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactLocationField"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactManager>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactManager"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactManagerForUser>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactManagerForUser;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactManagerForUser"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactMatchReason>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactMatchReason;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactMatchReason"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactPhone>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactPhone;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactPhone"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactPicker>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactPicker;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactPicker"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactQueryOptions>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactQueryOptions;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactQueryOptions"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactQueryTextSearch>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactQueryTextSearch;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactQueryTextSearch"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactReader>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactReader;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactReader"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactSignificantOther>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactSignificantOther;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactSignificantOther"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactStore>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactStore;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactStore"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactStoreNotificationTriggerDetails>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactStoreNotificationTriggerDetails;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactStoreNotificationTriggerDetails"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::ContactWebsite>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::ContactWebsite;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.ContactWebsite"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::FullContactCardOptions>
{
    using abi = ABI::Windows::ApplicationModel::Contacts::FullContactCardOptions;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.FullContactCardOptions"; }
};

template <> struct traits<Windows::ApplicationModel::Contacts::KnownContactField>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Contacts.KnownContactField"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Security.Authentication.Identity.Core.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Security::Authentication::Identity::Core {

struct IMicrosoftAccountMultiFactorAuthenticationManager;
struct IMicrosoftAccountMultiFactorAuthenticatorStatics;
struct IMicrosoftAccountMultiFactorGetSessionsResult;
struct IMicrosoftAccountMultiFactorOneTimeCodedInfo;
struct IMicrosoftAccountMultiFactorSessionInfo;
struct IMicrosoftAccountMultiFactorUnregisteredAccountsAndSessionInfo;
struct MicrosoftAccountMultiFactorAuthenticationManager;
struct MicrosoftAccountMultiFactorGetSessionsResult;
struct MicrosoftAccountMultiFactorOneTimeCodedInfo;
struct MicrosoftAccountMultiFactorSessionInfo;
struct MicrosoftAccountMultiFactorUnregisteredAccountsAndSessionInfo;

}

namespace Windows::Security::Authentication::Identity::Core {

struct IMicrosoftAccountMultiFactorAuthenticationManager;
struct IMicrosoftAccountMultiFactorAuthenticatorStatics;
struct IMicrosoftAccountMultiFactorGetSessionsResult;
struct IMicrosoftAccountMultiFactorOneTimeCodedInfo;
struct IMicrosoftAccountMultiFactorSessionInfo;
struct IMicrosoftAccountMultiFactorUnregisteredAccountsAndSessionInfo;
struct MicrosoftAccountMultiFactorAuthenticationManager;
struct MicrosoftAccountMultiFactorGetSessionsResult;
struct MicrosoftAccountMultiFactorOneTimeCodedInfo;
struct MicrosoftAccountMultiFactorSessionInfo;
struct MicrosoftAccountMultiFactorUnregisteredAccountsAndSessionInfo;

}

namespace Windows::Security::Authentication::Identity::Core {

enum class MicrosoftAccountMultiFactorAuthenticationType
{
    User = 0,
    Device = 1,
};

enum class MicrosoftAccountMultiFactorServiceResponse
{
    Success = 0,
    Error = 1,
    NoNetworkConnection = 2,
    ServiceUnavailable = 3,
    TotpSetupDenied = 4,
    NgcNotSetup = 5,
    SessionAlreadyDenied = 6,
    SessionAlreadyApproved = 7,
    SessionExpired = 8,
    NgcNonceExpired = 9,
    InvalidSessionId = 10,
    InvalidSessionType = 11,
    InvalidOperation = 12,
    InvalidStateTransition = 13,
    DeviceNotFound = 14,
    FlowDisabled = 15,
    SessionNotApproved = 16,
    OperationCanceledByUser = 17,
    NgcDisabledByServer = 18,
    NgcKeyNotFoundOnServer = 19,
    UIRequired = 20,
    DeviceIdChanged = 21,
};

enum class MicrosoftAccountMultiFactorSessionApprovalStatus
{
    Pending = 0,
    Approved = 1,
    Denied = 2,
};

enum class MicrosoftAccountMultiFactorSessionAuthenticationStatus
{
    Authenticated = 0,
    Unauthenticated = 1,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Popups.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.UI.Popups.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::UI::Popups {

template <typename H> struct impl_UICommandInvokedHandler : implements<impl_UICommandInvokedHandler<H>, abi<UICommandInvokedHandler>>, H
{
    impl_UICommandInvokedHandler(H && handler) : H(std::forward<H>(handler)) {}

    HRESULT __stdcall abi_Invoke(abi_arg_in<Windows::UI::Popups::IUICommand> command) noexcept override
    {
        try
        {
            (*this)(*reinterpret_cast<const Windows::UI::Popups::IUICommand *>(&command));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::UI::Popups {

struct WINRT_EBO MessageDialog :
    Windows::UI::Popups::IMessageDialog
{
    MessageDialog(std::nullptr_t) noexcept {}
    MessageDialog(hstring_ref content);
    MessageDialog(hstring_ref content, hstring_ref title);
};

struct WINRT_EBO PopupMenu :
    Windows::UI::Popups::IPopupMenu
{
    PopupMenu(std::nullptr_t) noexcept {}
    PopupMenu();
};

struct WINRT_EBO UICommand :
    Windows::UI::Popups::IUICommand
{
    UICommand(std::nullptr_t) noexcept {}
    UICommand();
    UICommand(hstring_ref label);
    UICommand(hstring_ref label, const Windows::UI::Popups::UICommandInvokedHandler & action);
    UICommand(hstring_ref label, const Windows::UI::Popups::UICommandInvokedHandler & action, const Windows::IInspectable & commandId);
};

struct WINRT_EBO UICommandSeparator :
    Windows::UI::Popups::IUICommand
{
    UICommandSeparator(std::nullptr_t) noexcept {}
    UICommandSeparator();
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.Effects.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Media.Effects.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Media::Effects {

struct WINRT_EBO AudioCaptureEffectsManager :
    Windows::Media::Effects::IAudioCaptureEffectsManager
{
    AudioCaptureEffectsManager(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AudioEffect :
    Windows::Media::Effects::IAudioEffect
{
    AudioEffect(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AudioEffectDefinition :
    Windows::Media::Effects::IAudioEffectDefinition
{
    AudioEffectDefinition(std::nullptr_t) noexcept {}
    AudioEffectDefinition(hstring_ref activatableClassId);
    AudioEffectDefinition(hstring_ref activatableClassId, const Windows::Foundation::Collections::IPropertySet & props);
};

struct AudioEffectsManager
{
    AudioEffectsManager() = delete;
    static Windows::Media::Effects::AudioRenderEffectsManager CreateAudioRenderEffectsManager(hstring_ref deviceId, Windows::Media::Render::AudioRenderCategory category);
    static Windows::Media::Effects::AudioRenderEffectsManager CreateAudioRenderEffectsManager(hstring_ref deviceId, Windows::Media::Render::AudioRenderCategory category, Windows::Media::AudioProcessing mode);
    static Windows::Media::Effects::AudioCaptureEffectsManager CreateAudioCaptureEffectsManager(hstring_ref deviceId, Windows::Media::Capture::MediaCategory category);
    static Windows::Media::Effects::AudioCaptureEffectsManager CreateAudioCaptureEffectsManager(hstring_ref deviceId, Windows::Media::Capture::MediaCategory category, Windows::Media::AudioProcessing mode);
};

struct WINRT_EBO AudioRenderEffectsManager :
    Windows::Media::Effects::IAudioRenderEffectsManager,
    impl::require<AudioRenderEffectsManager, Windows::Media::Effects::IAudioRenderEffectsManager2>
{
    AudioRenderEffectsManager(std::nullptr_t) noexcept {}
};

struct WINRT_EBO CompositeVideoFrameContext :
    Windows::Media::Effects::ICompositeVideoFrameContext
{
    CompositeVideoFrameContext(std::nullptr_t) noexcept {}
};

struct WINRT_EBO ProcessAudioFrameContext :
    Windows::Media::Effects::IProcessAudioFrameContext
{
    ProcessAudioFrameContext(std::nullptr_t) noexcept {}
};

struct WINRT_EBO ProcessVideoFrameContext :
    Windows::Media::Effects::IProcessVideoFrameContext
{
    ProcessVideoFrameContext(std::nullptr_t) noexcept {}
};

struct WINRT_EBO SlowMotionEffectDefinition :
    Windows::Media::Effects::ISlowMotionEffectDefinition
{
    SlowMotionEffectDefinition(std::nullptr_t) noexcept {}
    SlowMotionEffectDefinition();
};

struct WINRT_EBO VideoCompositorDefinition :
    Windows::Media::Effects::IVideoCompositorDefinition
{
    VideoCompositorDefinition(std::nullptr_t) noexcept {}
    VideoCompositorDefinition(hstring_ref activatableClassId);
    VideoCompositorDefinition(hstring_ref activatableClassId, const Windows::Foundation::Collections::IPropertySet & props);
};

struct WINRT_EBO VideoEffectDefinition :
    Windows::Media::Effects::IVideoEffectDefinition
{
    VideoEffectDefinition(std::nullptr_t) noexcept {}
    VideoEffectDefinition(hstring_ref activatableClassId);
    VideoEffectDefinition(hstring_ref activatableClassId, const Windows::Foundation::Collections::IPropertySet & props);
};

struct WINRT_EBO VideoTransformEffectDefinition :
    Windows::Media::Effects::IVideoEffectDefinition,
    impl::require<VideoTransformEffectDefinition, Windows::Media::Effects::IVideoTransformEffectDefinition>
{
    VideoTransformEffectDefinition(std::nullptr_t) noexcept {}
    VideoTransformEffectDefinition();
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Web.Syndication.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Data.Xml.Dom.3.h"
#include "internal/Windows.Security.Credentials.3.h"
#include "internal/Windows.Web.Syndication.3.h"
#include "Windows.Web.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationAttribute> : produce_base<D, Windows::Web::Syndication::ISyndicationAttribute>
{
    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Name(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Name(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Namespace(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Namespace());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Namespace(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Namespace(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Value(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Value(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationAttributeFactory> : produce_base<D, Windows::Web::Syndication::ISyndicationAttributeFactory>
{
    HRESULT __stdcall abi_CreateSyndicationAttribute(abi_arg_in<hstring> attributeName, abi_arg_in<hstring> attributeNamespace, abi_arg_in<hstring> attributeValue, abi_arg_out<Windows::Web::Syndication::ISyndicationAttribute> syndicationAttribute) noexcept override
    {
        try
        {
            *syndicationAttribute = detach(this->shim().CreateSyndicationAttribute(*reinterpret_cast<const hstring *>(&attributeName), *reinterpret_cast<const hstring *>(&attributeNamespace), *reinterpret_cast<const hstring *>(&attributeValue)));
            return S_OK;
        }
        catch (...)
        {
            *syndicationAttribute = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationCategory> : produce_base<D, Windows::Web::Syndication::ISyndicationCategory>
{
    HRESULT __stdcall get_Label(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Label());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Label(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Label(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Scheme(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Scheme());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Scheme(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Scheme(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Term(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Term());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Term(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Term(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationCategoryFactory> : produce_base<D, Windows::Web::Syndication::ISyndicationCategoryFactory>
{
    HRESULT __stdcall abi_CreateSyndicationCategory(abi_arg_in<hstring> term, abi_arg_out<Windows::Web::Syndication::ISyndicationCategory> category) noexcept override
    {
        try
        {
            *category = detach(this->shim().CreateSyndicationCategory(*reinterpret_cast<const hstring *>(&term)));
            return S_OK;
        }
        catch (...)
        {
            *category = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateSyndicationCategoryEx(abi_arg_in<hstring> term, abi_arg_in<hstring> scheme, abi_arg_in<hstring> label, abi_arg_out<Windows::Web::Syndication::ISyndicationCategory> category) noexcept override
    {
        try
        {
            *category = detach(this->shim().CreateSyndicationCategoryEx(*reinterpret_cast<const hstring *>(&term), *reinterpret_cast<const hstring *>(&scheme), *reinterpret_cast<const hstring *>(&label)));
            return S_OK;
        }
        catch (...)
        {
            *category = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationClient> : produce_base<D, Windows::Web::Syndication::ISyndicationClient>
{
    HRESULT __stdcall get_ServerCredential(abi_arg_out<Windows::Security::Credentials::IPasswordCredential> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ServerCredential());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ServerCredential(abi_arg_in<Windows::Security::Credentials::IPasswordCredential> value) noexcept override
    {
        try
        {
            this->shim().ServerCredential(*reinterpret_cast<const Windows::Security::Credentials::PasswordCredential *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ProxyCredential(abi_arg_out<Windows::Security::Credentials::IPasswordCredential> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ProxyCredential());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ProxyCredential(abi_arg_in<Windows::Security::Credentials::IPasswordCredential> value) noexcept override
    {
        try
        {
            this->shim().ProxyCredential(*reinterpret_cast<const Windows::Security::Credentials::PasswordCredential *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaxResponseBufferSize(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxResponseBufferSize());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_MaxResponseBufferSize(uint32_t value) noexcept override
    {
        try
        {
            this->shim().MaxResponseBufferSize(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Timeout(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Timeout());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Timeout(uint32_t value) noexcept override
    {
        try
        {
            this->shim().Timeout(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BypassCacheOnRetrieve(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BypassCacheOnRetrieve());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_BypassCacheOnRetrieve(bool value) noexcept override
    {
        try
        {
            this->shim().BypassCacheOnRetrieve(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetRequestHeader(abi_arg_in<hstring> name, abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().SetRequestHeader(*reinterpret_cast<const hstring *>(&name), *reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RetrieveFeedAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationFeed, Windows::Web::Syndication::RetrievalProgress>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().RetrieveFeedAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationClientFactory> : produce_base<D, Windows::Web::Syndication::ISyndicationClientFactory>
{
    HRESULT __stdcall abi_CreateSyndicationClient(abi_arg_in<Windows::Security::Credentials::IPasswordCredential> serverCredential, abi_arg_out<Windows::Web::Syndication::ISyndicationClient> syndicationClient) noexcept override
    {
        try
        {
            *syndicationClient = detach(this->shim().CreateSyndicationClient(*reinterpret_cast<const Windows::Security::Credentials::PasswordCredential *>(&serverCredential)));
            return S_OK;
        }
        catch (...)
        {
            *syndicationClient = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationContent> : produce_base<D, Windows::Web::Syndication::ISyndicationContent>
{
    HRESULT __stdcall get_SourceUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SourceUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SourceUri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            this->shim().SourceUri(*reinterpret_cast<const Windows::Foundation::Uri *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationContentFactory> : produce_base<D, Windows::Web::Syndication::ISyndicationContentFactory>
{
    HRESULT __stdcall abi_CreateSyndicationContent(abi_arg_in<hstring> text, Windows::Web::Syndication::SyndicationTextType type, abi_arg_out<Windows::Web::Syndication::ISyndicationContent> content) noexcept override
    {
        try
        {
            *content = detach(this->shim().CreateSyndicationContent(*reinterpret_cast<const hstring *>(&text), type));
            return S_OK;
        }
        catch (...)
        {
            *content = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateSyndicationContentWithSourceUri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> sourceUri, abi_arg_out<Windows::Web::Syndication::ISyndicationContent> content) noexcept override
    {
        try
        {
            *content = detach(this->shim().CreateSyndicationContentWithSourceUri(*reinterpret_cast<const Windows::Foundation::Uri *>(&sourceUri)));
            return S_OK;
        }
        catch (...)
        {
            *content = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationErrorStatics> : produce_base<D, Windows::Web::Syndication::ISyndicationErrorStatics>
{
    HRESULT __stdcall abi_GetStatus(int32_t hresult, Windows::Web::Syndication::SyndicationErrorStatus * status) noexcept override
    {
        try
        {
            *status = detach(this->shim().GetStatus(hresult));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationFeed> : produce_base<D, Windows::Web::Syndication::ISyndicationFeed>
{
    HRESULT __stdcall get_Authors(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Authors());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Categories(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationCategory>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Categories());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Contributors(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Contributors());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Generator(abi_arg_out<Windows::Web::Syndication::ISyndicationGenerator> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Generator());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Generator(abi_arg_in<Windows::Web::Syndication::ISyndicationGenerator> value) noexcept override
    {
        try
        {
            this->shim().Generator(*reinterpret_cast<const Windows::Web::Syndication::SyndicationGenerator *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IconUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IconUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IconUri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            this->shim().IconUri(*reinterpret_cast<const Windows::Foundation::Uri *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Id(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Id());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Id(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Id(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Items(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationItem>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Items());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LastUpdatedTime(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LastUpdatedTime());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_LastUpdatedTime(abi_arg_in<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            this->shim().LastUpdatedTime(*reinterpret_cast<const Windows::Foundation::DateTime *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Links(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationLink>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Links());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ImageUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ImageUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ImageUri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            this->shim().ImageUri(*reinterpret_cast<const Windows::Foundation::Uri *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Rights(abi_arg_out<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Rights());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Rights(abi_arg_in<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            this->shim().Rights(*reinterpret_cast<const Windows::Web::Syndication::ISyndicationText *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Subtitle(abi_arg_out<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Subtitle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Subtitle(abi_arg_in<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            this->shim().Subtitle(*reinterpret_cast<const Windows::Web::Syndication::ISyndicationText *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Title(abi_arg_out<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Title());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Title(abi_arg_in<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            this->shim().Title(*reinterpret_cast<const Windows::Web::Syndication::ISyndicationText *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FirstUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FirstUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LastUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LastUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NextUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NextUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PreviousUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PreviousUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SourceFormat(Windows::Web::Syndication::SyndicationFormat * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SourceFormat());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Load(abi_arg_in<hstring> feed) noexcept override
    {
        try
        {
            this->shim().Load(*reinterpret_cast<const hstring *>(&feed));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_LoadFromXml(abi_arg_in<Windows::Data::Xml::Dom::IXmlDocument> feedDocument) noexcept override
    {
        try
        {
            this->shim().LoadFromXml(*reinterpret_cast<const Windows::Data::Xml::Dom::XmlDocument *>(&feedDocument));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationFeedFactory> : produce_base<D, Windows::Web::Syndication::ISyndicationFeedFactory>
{
    HRESULT __stdcall abi_CreateSyndicationFeed(abi_arg_in<hstring> title, abi_arg_in<hstring> subtitle, abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Web::Syndication::ISyndicationFeed> feed) noexcept override
    {
        try
        {
            *feed = detach(this->shim().CreateSyndicationFeed(*reinterpret_cast<const hstring *>(&title), *reinterpret_cast<const hstring *>(&subtitle), *reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *feed = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationGenerator> : produce_base<D, Windows::Web::Syndication::ISyndicationGenerator>
{
    HRESULT __stdcall get_Text(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Text());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Text(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Text(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Uri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Uri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Uri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            this->shim().Uri(*reinterpret_cast<const Windows::Foundation::Uri *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Version(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Version());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Version(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Version(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationGeneratorFactory> : produce_base<D, Windows::Web::Syndication::ISyndicationGeneratorFactory>
{
    HRESULT __stdcall abi_CreateSyndicationGenerator(abi_arg_in<hstring> text, abi_arg_out<Windows::Web::Syndication::ISyndicationGenerator> generator) noexcept override
    {
        try
        {
            *generator = detach(this->shim().CreateSyndicationGenerator(*reinterpret_cast<const hstring *>(&text)));
            return S_OK;
        }
        catch (...)
        {
            *generator = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationItem> : produce_base<D, Windows::Web::Syndication::ISyndicationItem>
{
    HRESULT __stdcall get_Authors(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Authors());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Categories(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationCategory>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Categories());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Contributors(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Contributors());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Content(abi_arg_out<Windows::Web::Syndication::ISyndicationContent> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Content());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Content(abi_arg_in<Windows::Web::Syndication::ISyndicationContent> value) noexcept override
    {
        try
        {
            this->shim().Content(*reinterpret_cast<const Windows::Web::Syndication::SyndicationContent *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Id(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Id());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Id(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Id(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LastUpdatedTime(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LastUpdatedTime());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_LastUpdatedTime(abi_arg_in<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            this->shim().LastUpdatedTime(*reinterpret_cast<const Windows::Foundation::DateTime *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Links(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationLink>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Links());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PublishedDate(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PublishedDate());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_PublishedDate(abi_arg_in<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            this->shim().PublishedDate(*reinterpret_cast<const Windows::Foundation::DateTime *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Rights(abi_arg_out<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Rights());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Rights(abi_arg_in<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            this->shim().Rights(*reinterpret_cast<const Windows::Web::Syndication::ISyndicationText *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Source(abi_arg_out<Windows::Web::Syndication::ISyndicationFeed> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Source());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Source(abi_arg_in<Windows::Web::Syndication::ISyndicationFeed> value) noexcept override
    {
        try
        {
            this->shim().Source(*reinterpret_cast<const Windows::Web::Syndication::SyndicationFeed *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Summary(abi_arg_out<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Summary());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Summary(abi_arg_in<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            this->shim().Summary(*reinterpret_cast<const Windows::Web::Syndication::ISyndicationText *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Title(abi_arg_out<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Title());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Title(abi_arg_in<Windows::Web::Syndication::ISyndicationText> value) noexcept override
    {
        try
        {
            this->shim().Title(*reinterpret_cast<const Windows::Web::Syndication::ISyndicationText *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CommentsUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CommentsUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CommentsUri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            this->shim().CommentsUri(*reinterpret_cast<const Windows::Foundation::Uri *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EditUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EditUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EditMediaUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EditMediaUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ETag(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ETag());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ItemUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ItemUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Load(abi_arg_in<hstring> item) noexcept override
    {
        try
        {
            this->shim().Load(*reinterpret_cast<const hstring *>(&item));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_LoadFromXml(abi_arg_in<Windows::Data::Xml::Dom::IXmlDocument> itemDocument) noexcept override
    {
        try
        {
            this->shim().LoadFromXml(*reinterpret_cast<const Windows::Data::Xml::Dom::XmlDocument *>(&itemDocument));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationItemFactory> : produce_base<D, Windows::Web::Syndication::ISyndicationItemFactory>
{
    HRESULT __stdcall abi_CreateSyndicationItem(abi_arg_in<hstring> title, abi_arg_in<Windows::Web::Syndication::ISyndicationContent> content, abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Web::Syndication::ISyndicationItem> item) noexcept override
    {
        try
        {
            *item = detach(this->shim().CreateSyndicationItem(*reinterpret_cast<const hstring *>(&title), *reinterpret_cast<const Windows::Web::Syndication::SyndicationContent *>(&content), *reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *item = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationLink> : produce_base<D, Windows::Web::Syndication::ISyndicationLink>
{
    HRESULT __stdcall get_Length(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Length());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Length(uint32_t value) noexcept override
    {
        try
        {
            this->shim().Length(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MediaType(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MediaType());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_MediaType(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().MediaType(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Relationship(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Relationship());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Relationship(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Relationship(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Title(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Title());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Title(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Title(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Uri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Uri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Uri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            this->shim().Uri(*reinterpret_cast<const Windows::Foundation::Uri *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ResourceLanguage(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ResourceLanguage());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ResourceLanguage(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().ResourceLanguage(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationLinkFactory> : produce_base<D, Windows::Web::Syndication::ISyndicationLinkFactory>
{
    HRESULT __stdcall abi_CreateSyndicationLink(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Web::Syndication::ISyndicationLink> link) noexcept override
    {
        try
        {
            *link = detach(this->shim().CreateSyndicationLink(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *link = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateSyndicationLinkEx(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_in<hstring> relationship, abi_arg_in<hstring> title, abi_arg_in<hstring> mediaType, uint32_t length, abi_arg_out<Windows::Web::Syndication::ISyndicationLink> link) noexcept override
    {
        try
        {
            *link = detach(this->shim().CreateSyndicationLinkEx(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri), *reinterpret_cast<const hstring *>(&relationship), *reinterpret_cast<const hstring *>(&title), *reinterpret_cast<const hstring *>(&mediaType), length));
            return S_OK;
        }
        catch (...)
        {
            *link = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationNode> : produce_base<D, Windows::Web::Syndication::ISyndicationNode>
{
    HRESULT __stdcall get_NodeName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NodeName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_NodeName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().NodeName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NodeNamespace(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NodeNamespace());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_NodeNamespace(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().NodeNamespace(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NodeValue(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NodeValue());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_NodeValue(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().NodeValue(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Language(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Language());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Language(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Language(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BaseUri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BaseUri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_BaseUri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            this->shim().BaseUri(*reinterpret_cast<const Windows::Foundation::Uri *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AttributeExtensions(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationAttribute>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AttributeExtensions());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ElementExtensions(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Web::Syndication::ISyndicationNode>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ElementExtensions());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetXmlDocument(Windows::Web::Syndication::SyndicationFormat format, abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> xmlDocument) noexcept override
    {
        try
        {
            *xmlDocument = detach(this->shim().GetXmlDocument(format));
            return S_OK;
        }
        catch (...)
        {
            *xmlDocument = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationNodeFactory> : produce_base<D, Windows::Web::Syndication::ISyndicationNodeFactory>
{
    HRESULT __stdcall abi_CreateSyndicationNode(abi_arg_in<hstring> nodeName, abi_arg_in<hstring> nodeNamespace, abi_arg_in<hstring> nodeValue, abi_arg_out<Windows::Web::Syndication::ISyndicationNode> node) noexcept override
    {
        try
        {
            *node = detach(this->shim().CreateSyndicationNode(*reinterpret_cast<const hstring *>(&nodeName), *reinterpret_cast<const hstring *>(&nodeNamespace), *reinterpret_cast<const hstring *>(&nodeValue)));
            return S_OK;
        }
        catch (...)
        {
            *node = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationPerson> : produce_base<D, Windows::Web::Syndication::ISyndicationPerson>
{
    HRESULT __stdcall get_Email(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Email());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Email(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Email(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Name(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Name(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Uri(abi_arg_out<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Uri());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Uri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> value) noexcept override
    {
        try
        {
            this->shim().Uri(*reinterpret_cast<const Windows::Foundation::Uri *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationPersonFactory> : produce_base<D, Windows::Web::Syndication::ISyndicationPersonFactory>
{
    HRESULT __stdcall abi_CreateSyndicationPerson(abi_arg_in<hstring> name, abi_arg_out<Windows::Web::Syndication::ISyndicationPerson> person) noexcept override
    {
        try
        {
            *person = detach(this->shim().CreateSyndicationPerson(*reinterpret_cast<const hstring *>(&name)));
            return S_OK;
        }
        catch (...)
        {
            *person = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateSyndicationPersonEx(abi_arg_in<hstring> name, abi_arg_in<hstring> email, abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Web::Syndication::ISyndicationPerson> person) noexcept override
    {
        try
        {
            *person = detach(this->shim().CreateSyndicationPersonEx(*reinterpret_cast<const hstring *>(&name), *reinterpret_cast<const hstring *>(&email), *reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *person = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationText> : produce_base<D, Windows::Web::Syndication::ISyndicationText>
{
    HRESULT __stdcall get_Text(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Text());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Text(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Text(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Type(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Type());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Type(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Type(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Xml(abi_arg_out<Windows::Data::Xml::Dom::IXmlDocument> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Xml());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Xml(abi_arg_in<Windows::Data::Xml::Dom::IXmlDocument> value) noexcept override
    {
        try
        {
            this->shim().Xml(*reinterpret_cast<const Windows::Data::Xml::Dom::XmlDocument *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::Syndication::ISyndicationTextFactory> : produce_base<D, Windows::Web::Syndication::ISyndicationTextFactory>
{
    HRESULT __stdcall abi_CreateSyndicationText(abi_arg_in<hstring> text, abi_arg_out<Windows::Web::Syndication::ISyndicationText> syndicationText) noexcept override
    {
        try
        {
            *syndicationText = detach(this->shim().CreateSyndicationText(*reinterpret_cast<const hstring *>(&text)));
            return S_OK;
        }
        catch (...)
        {
            *syndicationText = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateSyndicationTextEx(abi_arg_in<hstring> text, Windows::Web::Syndication::SyndicationTextType type, abi_arg_out<Windows::Web::Syndication::ISyndicationText> syndicationText) noexcept override
    {
        try
        {
            *syndicationText = detach(this->shim().CreateSyndicationTextEx(*reinterpret_cast<const hstring *>(&text), type));
            return S_OK;
        }
        catch (...)
        {
            *syndicationText = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Web::Syndication {

template <typename D> hstring impl_ISyndicationAttribute<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationAttribute &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationAttribute<D>::Name(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationAttribute &>(static_cast<const D &>(*this))->put_Name(get(value)));
}

template <typename D> hstring impl_ISyndicationAttribute<D>::Namespace() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationAttribute &>(static_cast<const D &>(*this))->get_Namespace(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationAttribute<D>::Namespace(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationAttribute &>(static_cast<const D &>(*this))->put_Namespace(get(value)));
}

template <typename D> hstring impl_ISyndicationAttribute<D>::Value() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationAttribute &>(static_cast<const D &>(*this))->get_Value(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationAttribute<D>::Value(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationAttribute &>(static_cast<const D &>(*this))->put_Value(get(value)));
}

template <typename D> Windows::Web::Syndication::SyndicationAttribute impl_ISyndicationAttributeFactory<D>::CreateSyndicationAttribute(hstring_ref attributeName, hstring_ref attributeNamespace, hstring_ref attributeValue) const
{
    Windows::Web::Syndication::SyndicationAttribute syndicationAttribute { nullptr };
    check_hresult(static_cast<const ISyndicationAttributeFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationAttribute(get(attributeName), get(attributeNamespace), get(attributeValue), put(syndicationAttribute)));
    return syndicationAttribute;
}

template <typename D> hstring impl_ISyndicationNode<D>::NodeName() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->get_NodeName(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationNode<D>::NodeName(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->put_NodeName(get(value)));
}

template <typename D> hstring impl_ISyndicationNode<D>::NodeNamespace() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->get_NodeNamespace(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationNode<D>::NodeNamespace(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->put_NodeNamespace(get(value)));
}

template <typename D> hstring impl_ISyndicationNode<D>::NodeValue() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->get_NodeValue(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationNode<D>::NodeValue(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->put_NodeValue(get(value)));
}

template <typename D> hstring impl_ISyndicationNode<D>::Language() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->get_Language(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationNode<D>::Language(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->put_Language(get(value)));
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationNode<D>::BaseUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->get_BaseUri(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationNode<D>::BaseUri(const Windows::Foundation::Uri & value) const
{
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->put_BaseUri(get(value)));
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationAttribute> impl_ISyndicationNode<D>::AttributeExtensions() const
{
    Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationAttribute> value;
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->get_AttributeExtensions(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Web::Syndication::ISyndicationNode> impl_ISyndicationNode<D>::ElementExtensions() const
{
    Windows::Foundation::Collections::IVector<Windows::Web::Syndication::ISyndicationNode> value;
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->get_ElementExtensions(put(value)));
    return value;
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_ISyndicationNode<D>::GetXmlDocument(Windows::Web::Syndication::SyndicationFormat format) const
{
    Windows::Data::Xml::Dom::XmlDocument xmlDocument { nullptr };
    check_hresult(static_cast<const ISyndicationNode &>(static_cast<const D &>(*this))->abi_GetXmlDocument(format, put(xmlDocument)));
    return xmlDocument;
}

template <typename D> Windows::Web::Syndication::SyndicationNode impl_ISyndicationNodeFactory<D>::CreateSyndicationNode(hstring_ref nodeName, hstring_ref nodeNamespace, hstring_ref nodeValue) const
{
    Windows::Web::Syndication::SyndicationNode node { nullptr };
    check_hresult(static_cast<const ISyndicationNodeFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationNode(get(nodeName), get(nodeNamespace), get(nodeValue), put(node)));
    return node;
}

template <typename D> hstring impl_ISyndicationGenerator<D>::Text() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationGenerator &>(static_cast<const D &>(*this))->get_Text(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationGenerator<D>::Text(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationGenerator &>(static_cast<const D &>(*this))->put_Text(get(value)));
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationGenerator<D>::Uri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationGenerator &>(static_cast<const D &>(*this))->get_Uri(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationGenerator<D>::Uri(const Windows::Foundation::Uri & value) const
{
    check_hresult(static_cast<const ISyndicationGenerator &>(static_cast<const D &>(*this))->put_Uri(get(value)));
}

template <typename D> hstring impl_ISyndicationGenerator<D>::Version() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationGenerator &>(static_cast<const D &>(*this))->get_Version(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationGenerator<D>::Version(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationGenerator &>(static_cast<const D &>(*this))->put_Version(get(value)));
}

template <typename D> Windows::Web::Syndication::SyndicationGenerator impl_ISyndicationGeneratorFactory<D>::CreateSyndicationGenerator(hstring_ref text) const
{
    Windows::Web::Syndication::SyndicationGenerator generator { nullptr };
    check_hresult(static_cast<const ISyndicationGeneratorFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationGenerator(get(text), put(generator)));
    return generator;
}

template <typename D> hstring impl_ISyndicationText<D>::Text() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationText &>(static_cast<const D &>(*this))->get_Text(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationText<D>::Text(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationText &>(static_cast<const D &>(*this))->put_Text(get(value)));
}

template <typename D> hstring impl_ISyndicationText<D>::Type() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationText &>(static_cast<const D &>(*this))->get_Type(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationText<D>::Type(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationText &>(static_cast<const D &>(*this))->put_Type(get(value)));
}

template <typename D> Windows::Data::Xml::Dom::XmlDocument impl_ISyndicationText<D>::Xml() const
{
    Windows::Data::Xml::Dom::XmlDocument value { nullptr };
    check_hresult(static_cast<const ISyndicationText &>(static_cast<const D &>(*this))->get_Xml(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationText<D>::Xml(const Windows::Data::Xml::Dom::XmlDocument & value) const
{
    check_hresult(static_cast<const ISyndicationText &>(static_cast<const D &>(*this))->put_Xml(get(value)));
}

template <typename D> Windows::Web::Syndication::SyndicationText impl_ISyndicationTextFactory<D>::CreateSyndicationText(hstring_ref text) const
{
    Windows::Web::Syndication::SyndicationText syndicationText { nullptr };
    check_hresult(static_cast<const ISyndicationTextFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationText(get(text), put(syndicationText)));
    return syndicationText;
}

template <typename D> Windows::Web::Syndication::SyndicationText impl_ISyndicationTextFactory<D>::CreateSyndicationTextEx(hstring_ref text, Windows::Web::Syndication::SyndicationTextType type) const
{
    Windows::Web::Syndication::SyndicationText syndicationText { nullptr };
    check_hresult(static_cast<const ISyndicationTextFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationTextEx(get(text), type, put(syndicationText)));
    return syndicationText;
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationContent<D>::SourceUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationContent &>(static_cast<const D &>(*this))->get_SourceUri(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationContent<D>::SourceUri(const Windows::Foundation::Uri & value) const
{
    check_hresult(static_cast<const ISyndicationContent &>(static_cast<const D &>(*this))->put_SourceUri(get(value)));
}

template <typename D> Windows::Web::Syndication::SyndicationContent impl_ISyndicationContentFactory<D>::CreateSyndicationContent(hstring_ref text, Windows::Web::Syndication::SyndicationTextType type) const
{
    Windows::Web::Syndication::SyndicationContent content { nullptr };
    check_hresult(static_cast<const ISyndicationContentFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationContent(get(text), type, put(content)));
    return content;
}

template <typename D> Windows::Web::Syndication::SyndicationContent impl_ISyndicationContentFactory<D>::CreateSyndicationContentWithSourceUri(const Windows::Foundation::Uri & sourceUri) const
{
    Windows::Web::Syndication::SyndicationContent content { nullptr };
    check_hresult(static_cast<const ISyndicationContentFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationContentWithSourceUri(get(sourceUri), put(content)));
    return content;
}

template <typename D> uint32_t impl_ISyndicationLink<D>::Length() const
{
    uint32_t value {};
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->get_Length(&value));
    return value;
}

template <typename D> void impl_ISyndicationLink<D>::Length(uint32_t value) const
{
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->put_Length(value));
}

template <typename D> hstring impl_ISyndicationLink<D>::MediaType() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->get_MediaType(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationLink<D>::MediaType(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->put_MediaType(get(value)));
}

template <typename D> hstring impl_ISyndicationLink<D>::Relationship() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->get_Relationship(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationLink<D>::Relationship(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->put_Relationship(get(value)));
}

template <typename D> hstring impl_ISyndicationLink<D>::Title() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->get_Title(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationLink<D>::Title(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->put_Title(get(value)));
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationLink<D>::Uri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->get_Uri(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationLink<D>::Uri(const Windows::Foundation::Uri & value) const
{
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->put_Uri(get(value)));
}

template <typename D> hstring impl_ISyndicationLink<D>::ResourceLanguage() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->get_ResourceLanguage(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationLink<D>::ResourceLanguage(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationLink &>(static_cast<const D &>(*this))->put_ResourceLanguage(get(value)));
}

template <typename D> Windows::Web::Syndication::SyndicationLink impl_ISyndicationLinkFactory<D>::CreateSyndicationLink(const Windows::Foundation::Uri & uri) const
{
    Windows::Web::Syndication::SyndicationLink link { nullptr };
    check_hresult(static_cast<const ISyndicationLinkFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationLink(get(uri), put(link)));
    return link;
}

template <typename D> Windows::Web::Syndication::SyndicationLink impl_ISyndicationLinkFactory<D>::CreateSyndicationLinkEx(const Windows::Foundation::Uri & uri, hstring_ref relationship, hstring_ref title, hstring_ref mediaType, uint32_t length) const
{
    Windows::Web::Syndication::SyndicationLink link { nullptr };
    check_hresult(static_cast<const ISyndicationLinkFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationLinkEx(get(uri), get(relationship), get(title), get(mediaType), length, put(link)));
    return link;
}

template <typename D> hstring impl_ISyndicationPerson<D>::Email() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationPerson &>(static_cast<const D &>(*this))->get_Email(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationPerson<D>::Email(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationPerson &>(static_cast<const D &>(*this))->put_Email(get(value)));
}

template <typename D> hstring impl_ISyndicationPerson<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationPerson &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationPerson<D>::Name(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationPerson &>(static_cast<const D &>(*this))->put_Name(get(value)));
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationPerson<D>::Uri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationPerson &>(static_cast<const D &>(*this))->get_Uri(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationPerson<D>::Uri(const Windows::Foundation::Uri & value) const
{
    check_hresult(static_cast<const ISyndicationPerson &>(static_cast<const D &>(*this))->put_Uri(get(value)));
}

template <typename D> Windows::Web::Syndication::SyndicationPerson impl_ISyndicationPersonFactory<D>::CreateSyndicationPerson(hstring_ref name) const
{
    Windows::Web::Syndication::SyndicationPerson person { nullptr };
    check_hresult(static_cast<const ISyndicationPersonFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationPerson(get(name), put(person)));
    return person;
}

template <typename D> Windows::Web::Syndication::SyndicationPerson impl_ISyndicationPersonFactory<D>::CreateSyndicationPersonEx(hstring_ref name, hstring_ref email, const Windows::Foundation::Uri & uri) const
{
    Windows::Web::Syndication::SyndicationPerson person { nullptr };
    check_hresult(static_cast<const ISyndicationPersonFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationPersonEx(get(name), get(email), get(uri), put(person)));
    return person;
}

template <typename D> hstring impl_ISyndicationCategory<D>::Label() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationCategory &>(static_cast<const D &>(*this))->get_Label(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationCategory<D>::Label(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationCategory &>(static_cast<const D &>(*this))->put_Label(get(value)));
}

template <typename D> hstring impl_ISyndicationCategory<D>::Scheme() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationCategory &>(static_cast<const D &>(*this))->get_Scheme(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationCategory<D>::Scheme(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationCategory &>(static_cast<const D &>(*this))->put_Scheme(get(value)));
}

template <typename D> hstring impl_ISyndicationCategory<D>::Term() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationCategory &>(static_cast<const D &>(*this))->get_Term(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationCategory<D>::Term(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationCategory &>(static_cast<const D &>(*this))->put_Term(get(value)));
}

template <typename D> Windows::Web::Syndication::SyndicationCategory impl_ISyndicationCategoryFactory<D>::CreateSyndicationCategory(hstring_ref term) const
{
    Windows::Web::Syndication::SyndicationCategory category { nullptr };
    check_hresult(static_cast<const ISyndicationCategoryFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationCategory(get(term), put(category)));
    return category;
}

template <typename D> Windows::Web::Syndication::SyndicationCategory impl_ISyndicationCategoryFactory<D>::CreateSyndicationCategoryEx(hstring_ref term, hstring_ref scheme, hstring_ref label) const
{
    Windows::Web::Syndication::SyndicationCategory category { nullptr };
    check_hresult(static_cast<const ISyndicationCategoryFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationCategoryEx(get(term), get(scheme), get(label), put(category)));
    return category;
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson> impl_ISyndicationItem<D>::Authors() const
{
    Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson> value;
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_Authors(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationCategory> impl_ISyndicationItem<D>::Categories() const
{
    Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationCategory> value;
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_Categories(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson> impl_ISyndicationItem<D>::Contributors() const
{
    Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson> value;
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_Contributors(put(value)));
    return value;
}

template <typename D> Windows::Web::Syndication::SyndicationContent impl_ISyndicationItem<D>::Content() const
{
    Windows::Web::Syndication::SyndicationContent value { nullptr };
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_Content(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationItem<D>::Content(const Windows::Web::Syndication::SyndicationContent & value) const
{
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->put_Content(get(value)));
}

template <typename D> hstring impl_ISyndicationItem<D>::Id() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_Id(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationItem<D>::Id(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->put_Id(get(value)));
}

template <typename D> Windows::Foundation::DateTime impl_ISyndicationItem<D>::LastUpdatedTime() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_LastUpdatedTime(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationItem<D>::LastUpdatedTime(const Windows::Foundation::DateTime & value) const
{
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->put_LastUpdatedTime(get(value)));
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationLink> impl_ISyndicationItem<D>::Links() const
{
    Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationLink> value;
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_Links(put(value)));
    return value;
}

template <typename D> Windows::Foundation::DateTime impl_ISyndicationItem<D>::PublishedDate() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_PublishedDate(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationItem<D>::PublishedDate(const Windows::Foundation::DateTime & value) const
{
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->put_PublishedDate(get(value)));
}

template <typename D> Windows::Web::Syndication::ISyndicationText impl_ISyndicationItem<D>::Rights() const
{
    Windows::Web::Syndication::ISyndicationText value;
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_Rights(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationItem<D>::Rights(const Windows::Web::Syndication::ISyndicationText & value) const
{
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->put_Rights(get(value)));
}

template <typename D> Windows::Web::Syndication::SyndicationFeed impl_ISyndicationItem<D>::Source() const
{
    Windows::Web::Syndication::SyndicationFeed value { nullptr };
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_Source(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationItem<D>::Source(const Windows::Web::Syndication::SyndicationFeed & value) const
{
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->put_Source(get(value)));
}

template <typename D> Windows::Web::Syndication::ISyndicationText impl_ISyndicationItem<D>::Summary() const
{
    Windows::Web::Syndication::ISyndicationText value;
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_Summary(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationItem<D>::Summary(const Windows::Web::Syndication::ISyndicationText & value) const
{
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->put_Summary(get(value)));
}

template <typename D> Windows::Web::Syndication::ISyndicationText impl_ISyndicationItem<D>::Title() const
{
    Windows::Web::Syndication::ISyndicationText value;
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_Title(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationItem<D>::Title(const Windows::Web::Syndication::ISyndicationText & value) const
{
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->put_Title(get(value)));
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationItem<D>::CommentsUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_CommentsUri(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationItem<D>::CommentsUri(const Windows::Foundation::Uri & value) const
{
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->put_CommentsUri(get(value)));
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationItem<D>::EditUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_EditUri(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationItem<D>::EditMediaUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_EditMediaUri(put(value)));
    return value;
}

template <typename D> hstring impl_ISyndicationItem<D>::ETag() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_ETag(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationItem<D>::ItemUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->get_ItemUri(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationItem<D>::Load(hstring_ref item) const
{
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->abi_Load(get(item)));
}

template <typename D> void impl_ISyndicationItem<D>::LoadFromXml(const Windows::Data::Xml::Dom::XmlDocument & itemDocument) const
{
    check_hresult(static_cast<const ISyndicationItem &>(static_cast<const D &>(*this))->abi_LoadFromXml(get(itemDocument)));
}

template <typename D> Windows::Web::Syndication::SyndicationItem impl_ISyndicationItemFactory<D>::CreateSyndicationItem(hstring_ref title, const Windows::Web::Syndication::SyndicationContent & content, const Windows::Foundation::Uri & uri) const
{
    Windows::Web::Syndication::SyndicationItem item { nullptr };
    check_hresult(static_cast<const ISyndicationItemFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationItem(get(title), get(content), get(uri), put(item)));
    return item;
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson> impl_ISyndicationFeed<D>::Authors() const
{
    Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson> value;
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_Authors(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationCategory> impl_ISyndicationFeed<D>::Categories() const
{
    Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationCategory> value;
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_Categories(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson> impl_ISyndicationFeed<D>::Contributors() const
{
    Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationPerson> value;
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_Contributors(put(value)));
    return value;
}

template <typename D> Windows::Web::Syndication::SyndicationGenerator impl_ISyndicationFeed<D>::Generator() const
{
    Windows::Web::Syndication::SyndicationGenerator value { nullptr };
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_Generator(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationFeed<D>::Generator(const Windows::Web::Syndication::SyndicationGenerator & value) const
{
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->put_Generator(get(value)));
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationFeed<D>::IconUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_IconUri(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationFeed<D>::IconUri(const Windows::Foundation::Uri & value) const
{
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->put_IconUri(get(value)));
}

template <typename D> hstring impl_ISyndicationFeed<D>::Id() const
{
    hstring value;
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_Id(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationFeed<D>::Id(hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->put_Id(get(value)));
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationItem> impl_ISyndicationFeed<D>::Items() const
{
    Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationItem> value;
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_Items(put(value)));
    return value;
}

template <typename D> Windows::Foundation::DateTime impl_ISyndicationFeed<D>::LastUpdatedTime() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_LastUpdatedTime(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationFeed<D>::LastUpdatedTime(const Windows::Foundation::DateTime & value) const
{
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->put_LastUpdatedTime(get(value)));
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationLink> impl_ISyndicationFeed<D>::Links() const
{
    Windows::Foundation::Collections::IVector<Windows::Web::Syndication::SyndicationLink> value;
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_Links(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationFeed<D>::ImageUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_ImageUri(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationFeed<D>::ImageUri(const Windows::Foundation::Uri & value) const
{
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->put_ImageUri(get(value)));
}

template <typename D> Windows::Web::Syndication::ISyndicationText impl_ISyndicationFeed<D>::Rights() const
{
    Windows::Web::Syndication::ISyndicationText value;
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_Rights(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationFeed<D>::Rights(const Windows::Web::Syndication::ISyndicationText & value) const
{
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->put_Rights(get(value)));
}

template <typename D> Windows::Web::Syndication::ISyndicationText impl_ISyndicationFeed<D>::Subtitle() const
{
    Windows::Web::Syndication::ISyndicationText value;
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_Subtitle(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationFeed<D>::Subtitle(const Windows::Web::Syndication::ISyndicationText & value) const
{
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->put_Subtitle(get(value)));
}

template <typename D> Windows::Web::Syndication::ISyndicationText impl_ISyndicationFeed<D>::Title() const
{
    Windows::Web::Syndication::ISyndicationText value;
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_Title(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationFeed<D>::Title(const Windows::Web::Syndication::ISyndicationText & value) const
{
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->put_Title(get(value)));
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationFeed<D>::FirstUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_FirstUri(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationFeed<D>::LastUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_LastUri(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationFeed<D>::NextUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_NextUri(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Uri impl_ISyndicationFeed<D>::PreviousUri() const
{
    Windows::Foundation::Uri value { nullptr };
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_PreviousUri(put(value)));
    return value;
}

template <typename D> Windows::Web::Syndication::SyndicationFormat impl_ISyndicationFeed<D>::SourceFormat() const
{
    Windows::Web::Syndication::SyndicationFormat value {};
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->get_SourceFormat(&value));
    return value;
}

template <typename D> void impl_ISyndicationFeed<D>::Load(hstring_ref feed) const
{
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->abi_Load(get(feed)));
}

template <typename D> void impl_ISyndicationFeed<D>::LoadFromXml(const Windows::Data::Xml::Dom::XmlDocument & feedDocument) const
{
    check_hresult(static_cast<const ISyndicationFeed &>(static_cast<const D &>(*this))->abi_LoadFromXml(get(feedDocument)));
}

template <typename D> Windows::Web::Syndication::SyndicationFeed impl_ISyndicationFeedFactory<D>::CreateSyndicationFeed(hstring_ref title, hstring_ref subtitle, const Windows::Foundation::Uri & uri) const
{
    Windows::Web::Syndication::SyndicationFeed feed { nullptr };
    check_hresult(static_cast<const ISyndicationFeedFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationFeed(get(title), get(subtitle), get(uri), put(feed)));
    return feed;
}

template <typename D> Windows::Security::Credentials::PasswordCredential impl_ISyndicationClient<D>::ServerCredential() const
{
    Windows::Security::Credentials::PasswordCredential value { nullptr };
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->get_ServerCredential(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationClient<D>::ServerCredential(const Windows::Security::Credentials::PasswordCredential & value) const
{
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->put_ServerCredential(get(value)));
}

template <typename D> Windows::Security::Credentials::PasswordCredential impl_ISyndicationClient<D>::ProxyCredential() const
{
    Windows::Security::Credentials::PasswordCredential value { nullptr };
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->get_ProxyCredential(put(value)));
    return value;
}

template <typename D> void impl_ISyndicationClient<D>::ProxyCredential(const Windows::Security::Credentials::PasswordCredential & value) const
{
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->put_ProxyCredential(get(value)));
}

template <typename D> uint32_t impl_ISyndicationClient<D>::MaxResponseBufferSize() const
{
    uint32_t value {};
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->get_MaxResponseBufferSize(&value));
    return value;
}

template <typename D> void impl_ISyndicationClient<D>::MaxResponseBufferSize(uint32_t value) const
{
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->put_MaxResponseBufferSize(value));
}

template <typename D> uint32_t impl_ISyndicationClient<D>::Timeout() const
{
    uint32_t value {};
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->get_Timeout(&value));
    return value;
}

template <typename D> void impl_ISyndicationClient<D>::Timeout(uint32_t value) const
{
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->put_Timeout(value));
}

template <typename D> bool impl_ISyndicationClient<D>::BypassCacheOnRetrieve() const
{
    bool value {};
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->get_BypassCacheOnRetrieve(&value));
    return value;
}

template <typename D> void impl_ISyndicationClient<D>::BypassCacheOnRetrieve(bool value) const
{
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->put_BypassCacheOnRetrieve(value));
}

template <typename D> void impl_ISyndicationClient<D>::SetRequestHeader(hstring_ref name, hstring_ref value) const
{
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->abi_SetRequestHeader(get(name), get(value)));
}

template <typename D> Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationFeed, Windows::Web::Syndication::RetrievalProgress> impl_ISyndicationClient<D>::RetrieveFeedAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncOperationWithProgress<Windows::Web::Syndication::SyndicationFeed, Windows::Web::Syndication::RetrievalProgress> operation;
    check_hresult(static_cast<const ISyndicationClient &>(static_cast<const D &>(*this))->abi_RetrieveFeedAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Web::Syndication::SyndicationClient impl_ISyndicationClientFactory<D>::CreateSyndicationClient(const Windows::Security::Credentials::PasswordCredential & serverCredential) const
{
    Windows::Web::Syndication::SyndicationClient syndicationClient { nullptr };
    check_hresult(static_cast<const ISyndicationClientFactory &>(static_cast<const D &>(*this))->abi_CreateSyndicationClient(get(serverCredential), put(syndicationClient)));
    return syndicationClient;
}

template <typename D> Windows::Web::Syndication::SyndicationErrorStatus impl_ISyndicationErrorStatics<D>::GetStatus(int32_t hresult) const
{
    Windows::Web::Syndication::SyndicationErrorStatus status {};
    check_hresult(static_cast<const ISyndicationErrorStatics &>(static_cast<const D &>(*this))->abi_GetStatus(hresult, &status));
    return status;
}

inline SyndicationAttribute::SyndicationAttribute() :
    SyndicationAttribute(activate_instance<SyndicationAttribute>())
{}

inline SyndicationAttribute::SyndicationAttribute(hstring_ref attributeName, hstring_ref attributeNamespace, hstring_ref attributeValue) :
    SyndicationAttribute(get_activation_factory<SyndicationAttribute, ISyndicationAttributeFactory>().CreateSyndicationAttribute(attributeName, attributeNamespace, attributeValue))
{}

inline SyndicationCategory::SyndicationCategory() :
    SyndicationCategory(activate_instance<SyndicationCategory>())
{}

inline SyndicationCategory::SyndicationCategory(hstring_ref term) :
    SyndicationCategory(get_activation_factory<SyndicationCategory, ISyndicationCategoryFactory>().CreateSyndicationCategory(term))
{}

inline SyndicationCategory::SyndicationCategory(hstring_ref term, hstring_ref scheme, hstring_ref label) :
    SyndicationCategory(get_activation_factory<SyndicationCategory, ISyndicationCategoryFactory>().CreateSyndicationCategoryEx(term, scheme, label))
{}

inline SyndicationClient::SyndicationClient() :
    SyndicationClient(activate_instance<SyndicationClient>())
{}

inline SyndicationClient::SyndicationClient(const Windows::Security::Credentials::PasswordCredential & serverCredential) :
    SyndicationClient(get_activation_factory<SyndicationClient, ISyndicationClientFactory>().CreateSyndicationClient(serverCredential))
{}

inline SyndicationContent::SyndicationContent() :
    SyndicationContent(activate_instance<SyndicationContent>())
{}

inline SyndicationContent::SyndicationContent(hstring_ref text, Windows::Web::Syndication::SyndicationTextType type) :
    SyndicationContent(get_activation_factory<SyndicationContent, ISyndicationContentFactory>().CreateSyndicationContent(text, type))
{}

inline SyndicationContent::SyndicationContent(const Windows::Foundation::Uri & sourceUri) :
    SyndicationContent(get_activation_factory<SyndicationContent, ISyndicationContentFactory>().CreateSyndicationContentWithSourceUri(sourceUri))
{}

inline Windows::Web::Syndication::SyndicationErrorStatus SyndicationError::GetStatus(int32_t hresult)
{
    return get_activation_factory<SyndicationError, ISyndicationErrorStatics>().GetStatus(hresult);
}

inline SyndicationFeed::SyndicationFeed() :
    SyndicationFeed(activate_instance<SyndicationFeed>())
{}

inline SyndicationFeed::SyndicationFeed(hstring_ref title, hstring_ref subtitle, const Windows::Foundation::Uri & uri) :
    SyndicationFeed(get_activation_factory<SyndicationFeed, ISyndicationFeedFactory>().CreateSyndicationFeed(title, subtitle, uri))
{}

inline SyndicationGenerator::SyndicationGenerator() :
    SyndicationGenerator(activate_instance<SyndicationGenerator>())
{}

inline SyndicationGenerator::SyndicationGenerator(hstring_ref text) :
    SyndicationGenerator(get_activation_factory<SyndicationGenerator, ISyndicationGeneratorFactory>().CreateSyndicationGenerator(text))
{}

inline SyndicationItem::SyndicationItem() :
    SyndicationItem(activate_instance<SyndicationItem>())
{}

inline SyndicationItem::SyndicationItem(hstring_ref title, const Windows::Web::Syndication::SyndicationContent & content, const Windows::Foundation::Uri & uri) :
    SyndicationItem(get_activation_factory<SyndicationItem, ISyndicationItemFactory>().CreateSyndicationItem(title, content, uri))
{}

inline SyndicationLink::SyndicationLink() :
    SyndicationLink(activate_instance<SyndicationLink>())
{}

inline SyndicationLink::SyndicationLink(const Windows::Foundation::Uri & uri) :
    SyndicationLink(get_activation_factory<SyndicationLink, ISyndicationLinkFactory>().CreateSyndicationLink(uri))
{}

inline SyndicationLink::SyndicationLink(const Windows::Foundation::Uri & uri, hstring_ref relationship, hstring_ref title, hstring_ref mediaType, uint32_t length) :
    SyndicationLink(get_activation_factory<SyndicationLink, ISyndicationLinkFactory>().CreateSyndicationLinkEx(uri, relationship, title, mediaType, length))
{}

inline SyndicationNode::SyndicationNode() :
    SyndicationNode(activate_instance<SyndicationNode>())
{}

inline SyndicationNode::SyndicationNode(hstring_ref nodeName, hstring_ref nodeNamespace, hstring_ref nodeValue) :
    SyndicationNode(get_activation_factory<SyndicationNode, ISyndicationNodeFactory>().CreateSyndicationNode(nodeName, nodeNamespace, nodeValue))
{}

inline SyndicationPerson::SyndicationPerson() :
    SyndicationPerson(activate_instance<SyndicationPerson>())
{}

inline SyndicationPerson::SyndicationPerson(hstring_ref name) :
    SyndicationPerson(get_activation_factory<SyndicationPerson, ISyndicationPersonFactory>().CreateSyndicationPerson(name))
{}

inline SyndicationPerson::SyndicationPerson(hstring_ref name, hstring_ref email, const Windows::Foundation::Uri & uri) :
    SyndicationPerson(get_activation_factory<SyndicationPerson, ISyndicationPersonFactory>().CreateSyndicationPersonEx(name, email, uri))
{}

inline SyndicationText::SyndicationText() :
    SyndicationText(activate_instance<SyndicationText>())
{}

inline SyndicationText::SyndicationText(hstring_ref text) :
    SyndicationText(get_activation_factory<SyndicationText, ISyndicationTextFactory>().CreateSyndicationText(text))
{}

inline SyndicationText::SyndicationText(hstring_ref text, Windows::Web::Syndication::SyndicationTextType type) :
    SyndicationText(get_activation_factory<SyndicationText, ISyndicationTextFactory>().CreateSyndicationTextEx(text, type))
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.ApplicationModel.Email.DataProvider.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.ApplicationModel.Email.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.ApplicationModel.Email.DataProvider.3.h"
#include "Windows.ApplicationModel.Email.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection>
{
    HRESULT __stdcall add_MailboxSyncRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxSyncManagerSyncRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().MailboxSyncRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxSyncManagerSyncRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_MailboxSyncRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().MailboxSyncRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_DownloadMessageRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadMessageRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().DownloadMessageRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadMessageRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_DownloadMessageRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().DownloadMessageRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_DownloadAttachmentRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadAttachmentRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().DownloadAttachmentRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadAttachmentRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_DownloadAttachmentRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().DownloadAttachmentRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_CreateFolderRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxCreateFolderRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().CreateFolderRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxCreateFolderRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_CreateFolderRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().CreateFolderRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_DeleteFolderRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDeleteFolderRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().DeleteFolderRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDeleteFolderRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_DeleteFolderRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().DeleteFolderRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_EmptyFolderRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxEmptyFolderRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().EmptyFolderRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxEmptyFolderRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_EmptyFolderRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().EmptyFolderRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_MoveFolderRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxMoveFolderRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().MoveFolderRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxMoveFolderRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_MoveFolderRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().MoveFolderRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_UpdateMeetingResponseRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxUpdateMeetingResponseRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().UpdateMeetingResponseRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxUpdateMeetingResponseRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_UpdateMeetingResponseRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().UpdateMeetingResponseRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_ForwardMeetingRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxForwardMeetingRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().ForwardMeetingRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxForwardMeetingRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_ForwardMeetingRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().ForwardMeetingRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_ProposeNewTimeForMeetingRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxProposeNewTimeForMeetingRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().ProposeNewTimeForMeetingRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxProposeNewTimeForMeetingRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_ProposeNewTimeForMeetingRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().ProposeNewTimeForMeetingRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_SetAutoReplySettingsRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxSetAutoReplySettingsRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().SetAutoReplySettingsRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxSetAutoReplySettingsRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_SetAutoReplySettingsRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().SetAutoReplySettingsRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_GetAutoReplySettingsRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxGetAutoReplySettingsRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().GetAutoReplySettingsRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxGetAutoReplySettingsRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_GetAutoReplySettingsRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().GetAutoReplySettingsRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_ResolveRecipientsRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxResolveRecipientsRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().ResolveRecipientsRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxResolveRecipientsRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_ResolveRecipientsRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().ResolveRecipientsRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_ValidateCertificatesRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxValidateCertificatesRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().ValidateCertificatesRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxValidateCertificatesRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_ValidateCertificatesRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().ValidateCertificatesRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_ServerSearchReadBatchRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxServerSearchReadBatchRequestEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().ServerSearchReadBatchRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxServerSearchReadBatchRequestEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_ServerSearchReadBatchRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().ServerSearchReadBatchRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Start() noexcept override
    {
        try
        {
            this->shim().Start();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderTriggerDetails> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderTriggerDetails>
{
    HRESULT __stdcall get_Connection(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Connection());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxCreateFolderRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxCreateFolderRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ParentFolderId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ParentFolderId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_in<Windows::ApplicationModel::Email::IEmailFolder> folder, abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync(*reinterpret_cast<const Windows::ApplicationModel::Email::EmailFolder *>(&folder)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(Windows::ApplicationModel::Email::EmailMailboxCreateFolderStatus status, abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync(status));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxCreateFolderRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxCreateFolderRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxCreateFolderRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDeleteFolderRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDeleteFolderRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailFolderId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailFolderId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(Windows::ApplicationModel::Email::EmailMailboxDeleteFolderStatus status, abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync(status));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDeleteFolderRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDeleteFolderRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDeleteFolderRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDownloadAttachmentRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDownloadAttachmentRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailMessageId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMessageId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailAttachmentId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailAttachmentId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDownloadAttachmentRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDownloadAttachmentRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDownloadAttachmentRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDownloadMessageRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDownloadMessageRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailMessageId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMessageId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDownloadMessageRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDownloadMessageRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxDownloadMessageRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxEmptyFolderRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxEmptyFolderRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailFolderId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailFolderId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(Windows::ApplicationModel::Email::EmailMailboxEmptyFolderStatus status, abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync(status));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxEmptyFolderRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxEmptyFolderRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxEmptyFolderRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxForwardMeetingRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxForwardMeetingRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailMessageId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMessageId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Recipients(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Email::EmailRecipient>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Recipients());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Subject(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Subject());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ForwardHeaderType(Windows::ApplicationModel::Email::EmailMessageBodyKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ForwardHeaderType());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ForwardHeader(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ForwardHeader());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Comment(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Comment());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxForwardMeetingRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxForwardMeetingRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxForwardMeetingRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxGetAutoReplySettingsRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxGetAutoReplySettingsRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RequestedFormat(Windows::ApplicationModel::Email::EmailMailboxAutoReplyMessageResponseKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RequestedFormat());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_in<Windows::ApplicationModel::Email::IEmailMailboxAutoReplySettings> autoReplySettings, abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync(*reinterpret_cast<const Windows::ApplicationModel::Email::EmailMailboxAutoReplySettings *>(&autoReplySettings)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxGetAutoReplySettingsRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxGetAutoReplySettingsRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxGetAutoReplySettingsRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxMoveFolderRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxMoveFolderRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailFolderId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailFolderId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NewParentFolderId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NewParentFolderId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NewFolderName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NewFolderName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxMoveFolderRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxMoveFolderRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxMoveFolderRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxProposeNewTimeForMeetingRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxProposeNewTimeForMeetingRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailMessageId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMessageId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NewStartTime(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NewStartTime());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NewDuration(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NewDuration());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Subject(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Subject());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Comment(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Comment());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxProposeNewTimeForMeetingRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxProposeNewTimeForMeetingRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxProposeNewTimeForMeetingRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxResolveRecipientsRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxResolveRecipientsRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Recipients(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Recipients());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::ApplicationModel::Email::EmailRecipientResolutionResult>> resolutionResults, abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::ApplicationModel::Email::EmailRecipientResolutionResult> *>(&resolutionResults)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxResolveRecipientsRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxResolveRecipientsRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxResolveRecipientsRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxServerSearchReadBatchRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxServerSearchReadBatchRequest>
{
    HRESULT __stdcall get_SessionId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SessionId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailFolderId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailFolderId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Options(abi_arg_out<Windows::ApplicationModel::Email::IEmailQueryOptions> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Options());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SuggestedBatchSize(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SuggestedBatchSize());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SaveMessageAsync(abi_arg_in<Windows::ApplicationModel::Email::IEmailMessage> message, abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().SaveMessageAsync(*reinterpret_cast<const Windows::ApplicationModel::Email::EmailMessage *>(&message)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(Windows::ApplicationModel::Email::EmailBatchStatus batchStatus, abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync(batchStatus));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxServerSearchReadBatchRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxServerSearchReadBatchRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxServerSearchReadBatchRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxSetAutoReplySettingsRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxSetAutoReplySettingsRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AutoReplySettings(abi_arg_out<Windows::ApplicationModel::Email::IEmailMailboxAutoReplySettings> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AutoReplySettings());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxSetAutoReplySettingsRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxSetAutoReplySettingsRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxSetAutoReplySettingsRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxSyncManagerSyncRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxSyncManagerSyncRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxSyncManagerSyncRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxSyncManagerSyncRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxSyncManagerSyncRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxUpdateMeetingResponseRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxUpdateMeetingResponseRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EmailMessageId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMessageId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Response(Windows::ApplicationModel::Email::EmailMeetingResponseType * response) noexcept override
    {
        try
        {
            *response = detach(this->shim().Response());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Subject(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Subject());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Comment(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Comment());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SendUpdate(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SendUpdate());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxUpdateMeetingResponseRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxUpdateMeetingResponseRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxUpdateMeetingResponseRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxValidateCertificatesRequest> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxValidateCertificatesRequest>
{
    HRESULT __stdcall get_EmailMailboxId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EmailMailboxId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Certificates(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Certificates());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportCompletedAsync(abi_arg_in<Windows::Foundation::Collections::IIterable<winrt::Windows::ApplicationModel::Email::EmailCertificateValidationStatus>> validationStatuses, abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportCompletedAsync(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<winrt::Windows::ApplicationModel::Email::EmailCertificateValidationStatus> *>(&validationStatuses)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportFailedAsync(abi_arg_out<Windows::Foundation::IAsyncAction> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().ReportFailedAsync());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxValidateCertificatesRequestEventArgs> : produce_base<D, Windows::ApplicationModel::Email::DataProvider::IEmailMailboxValidateCertificatesRequestEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::ApplicationModel::Email::DataProvider::IEmailMailboxValidateCertificatesRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::ApplicationModel::Email::DataProvider {

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection impl_IEmailDataProviderTriggerDetails<D>::Connection() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection value { nullptr };
    check_hresult(static_cast<const IEmailDataProviderTriggerDetails &>(static_cast<const D &>(*this))->get_Connection(put(value)));
    return value;
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::MailboxSyncRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxSyncManagerSyncRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_MailboxSyncRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::MailboxSyncRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxSyncManagerSyncRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_MailboxSyncRequested, MailboxSyncRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::MailboxSyncRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_MailboxSyncRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::DownloadMessageRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadMessageRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_DownloadMessageRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::DownloadMessageRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadMessageRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_DownloadMessageRequested, DownloadMessageRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::DownloadMessageRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_DownloadMessageRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::DownloadAttachmentRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadAttachmentRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_DownloadAttachmentRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::DownloadAttachmentRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadAttachmentRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_DownloadAttachmentRequested, DownloadAttachmentRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::DownloadAttachmentRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_DownloadAttachmentRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::CreateFolderRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxCreateFolderRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_CreateFolderRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::CreateFolderRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxCreateFolderRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_CreateFolderRequested, CreateFolderRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::CreateFolderRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_CreateFolderRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::DeleteFolderRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDeleteFolderRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_DeleteFolderRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::DeleteFolderRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxDeleteFolderRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_DeleteFolderRequested, DeleteFolderRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::DeleteFolderRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_DeleteFolderRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::EmptyFolderRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxEmptyFolderRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_EmptyFolderRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::EmptyFolderRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxEmptyFolderRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_EmptyFolderRequested, EmptyFolderRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::EmptyFolderRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_EmptyFolderRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::MoveFolderRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxMoveFolderRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_MoveFolderRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::MoveFolderRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxMoveFolderRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_MoveFolderRequested, MoveFolderRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::MoveFolderRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_MoveFolderRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::UpdateMeetingResponseRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxUpdateMeetingResponseRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_UpdateMeetingResponseRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::UpdateMeetingResponseRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxUpdateMeetingResponseRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_UpdateMeetingResponseRequested, UpdateMeetingResponseRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::UpdateMeetingResponseRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_UpdateMeetingResponseRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::ForwardMeetingRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxForwardMeetingRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_ForwardMeetingRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::ForwardMeetingRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxForwardMeetingRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_ForwardMeetingRequested, ForwardMeetingRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::ForwardMeetingRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_ForwardMeetingRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::ProposeNewTimeForMeetingRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxProposeNewTimeForMeetingRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_ProposeNewTimeForMeetingRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::ProposeNewTimeForMeetingRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxProposeNewTimeForMeetingRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_ProposeNewTimeForMeetingRequested, ProposeNewTimeForMeetingRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::ProposeNewTimeForMeetingRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_ProposeNewTimeForMeetingRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::SetAutoReplySettingsRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxSetAutoReplySettingsRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_SetAutoReplySettingsRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::SetAutoReplySettingsRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxSetAutoReplySettingsRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_SetAutoReplySettingsRequested, SetAutoReplySettingsRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::SetAutoReplySettingsRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_SetAutoReplySettingsRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::GetAutoReplySettingsRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxGetAutoReplySettingsRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_GetAutoReplySettingsRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::GetAutoReplySettingsRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxGetAutoReplySettingsRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_GetAutoReplySettingsRequested, GetAutoReplySettingsRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::GetAutoReplySettingsRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_GetAutoReplySettingsRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::ResolveRecipientsRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxResolveRecipientsRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_ResolveRecipientsRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::ResolveRecipientsRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxResolveRecipientsRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_ResolveRecipientsRequested, ResolveRecipientsRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::ResolveRecipientsRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_ResolveRecipientsRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::ValidateCertificatesRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxValidateCertificatesRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_ValidateCertificatesRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::ValidateCertificatesRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxValidateCertificatesRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_ValidateCertificatesRequested, ValidateCertificatesRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::ValidateCertificatesRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_ValidateCertificatesRequested(token));
}

template <typename D> event_token impl_IEmailDataProviderConnection<D>::ServerSearchReadBatchRequested(const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxServerSearchReadBatchRequestEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->add_ServerSearchReadBatchRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IEmailDataProviderConnection> impl_IEmailDataProviderConnection<D>::ServerSearchReadBatchRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Email::DataProvider::EmailDataProviderConnection, Windows::ApplicationModel::Email::DataProvider::EmailMailboxServerSearchReadBatchRequestEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IEmailDataProviderConnection>(this, &ABI::Windows::ApplicationModel::Email::DataProvider::IEmailDataProviderConnection::remove_ServerSearchReadBatchRequested, ServerSearchReadBatchRequested(handler));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::ServerSearchReadBatchRequested(event_token token) const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->remove_ServerSearchReadBatchRequested(token));
}

template <typename D> void impl_IEmailDataProviderConnection<D>::Start() const
{
    check_hresult(static_cast<const IEmailDataProviderConnection &>(static_cast<const D &>(*this))->abi_Start());
}

template <typename D> hstring impl_IEmailMailboxSyncManagerSyncRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxSyncManagerSyncRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxSyncManagerSyncRequest<D>::ReportCompletedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxSyncManagerSyncRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxSyncManagerSyncRequest<D>::ReportFailedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxSyncManagerSyncRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxDownloadMessageRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxDownloadMessageRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxDownloadMessageRequest<D>::EmailMessageId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxDownloadMessageRequest &>(static_cast<const D &>(*this))->get_EmailMessageId(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxDownloadMessageRequest<D>::ReportCompletedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxDownloadMessageRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxDownloadMessageRequest<D>::ReportFailedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxDownloadMessageRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxDownloadAttachmentRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxDownloadAttachmentRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxDownloadAttachmentRequest<D>::EmailMessageId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxDownloadAttachmentRequest &>(static_cast<const D &>(*this))->get_EmailMessageId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxDownloadAttachmentRequest<D>::EmailAttachmentId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxDownloadAttachmentRequest &>(static_cast<const D &>(*this))->get_EmailAttachmentId(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxDownloadAttachmentRequest<D>::ReportCompletedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxDownloadAttachmentRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxDownloadAttachmentRequest<D>::ReportFailedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxDownloadAttachmentRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxCreateFolderRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxCreateFolderRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxCreateFolderRequest<D>::ParentFolderId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxCreateFolderRequest &>(static_cast<const D &>(*this))->get_ParentFolderId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxCreateFolderRequest<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxCreateFolderRequest &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxCreateFolderRequest<D>::ReportCompletedAsync(const Windows::ApplicationModel::Email::EmailFolder & folder) const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxCreateFolderRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(get(folder), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxCreateFolderRequest<D>::ReportFailedAsync(Windows::ApplicationModel::Email::EmailMailboxCreateFolderStatus status) const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxCreateFolderRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(status, put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxDeleteFolderRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxDeleteFolderRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxDeleteFolderRequest<D>::EmailFolderId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxDeleteFolderRequest &>(static_cast<const D &>(*this))->get_EmailFolderId(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxDeleteFolderRequest<D>::ReportCompletedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxDeleteFolderRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxDeleteFolderRequest<D>::ReportFailedAsync(Windows::ApplicationModel::Email::EmailMailboxDeleteFolderStatus status) const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxDeleteFolderRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(status, put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxEmptyFolderRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxEmptyFolderRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxEmptyFolderRequest<D>::EmailFolderId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxEmptyFolderRequest &>(static_cast<const D &>(*this))->get_EmailFolderId(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxEmptyFolderRequest<D>::ReportCompletedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxEmptyFolderRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxEmptyFolderRequest<D>::ReportFailedAsync(Windows::ApplicationModel::Email::EmailMailboxEmptyFolderStatus status) const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxEmptyFolderRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(status, put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxMoveFolderRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxMoveFolderRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxMoveFolderRequest<D>::EmailFolderId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxMoveFolderRequest &>(static_cast<const D &>(*this))->get_EmailFolderId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxMoveFolderRequest<D>::NewParentFolderId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxMoveFolderRequest &>(static_cast<const D &>(*this))->get_NewParentFolderId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxMoveFolderRequest<D>::NewFolderName() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxMoveFolderRequest &>(static_cast<const D &>(*this))->get_NewFolderName(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxMoveFolderRequest<D>::ReportCompletedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxMoveFolderRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxMoveFolderRequest<D>::ReportFailedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxMoveFolderRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxUpdateMeetingResponseRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxUpdateMeetingResponseRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxUpdateMeetingResponseRequest<D>::EmailMessageId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxUpdateMeetingResponseRequest &>(static_cast<const D &>(*this))->get_EmailMessageId(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::EmailMeetingResponseType impl_IEmailMailboxUpdateMeetingResponseRequest<D>::Response() const
{
    Windows::ApplicationModel::Email::EmailMeetingResponseType response {};
    check_hresult(static_cast<const IEmailMailboxUpdateMeetingResponseRequest &>(static_cast<const D &>(*this))->get_Response(&response));
    return response;
}

template <typename D> hstring impl_IEmailMailboxUpdateMeetingResponseRequest<D>::Subject() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxUpdateMeetingResponseRequest &>(static_cast<const D &>(*this))->get_Subject(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxUpdateMeetingResponseRequest<D>::Comment() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxUpdateMeetingResponseRequest &>(static_cast<const D &>(*this))->get_Comment(put(value)));
    return value;
}

template <typename D> bool impl_IEmailMailboxUpdateMeetingResponseRequest<D>::SendUpdate() const
{
    bool value {};
    check_hresult(static_cast<const IEmailMailboxUpdateMeetingResponseRequest &>(static_cast<const D &>(*this))->get_SendUpdate(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxUpdateMeetingResponseRequest<D>::ReportCompletedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxUpdateMeetingResponseRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxUpdateMeetingResponseRequest<D>::ReportFailedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxUpdateMeetingResponseRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxForwardMeetingRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxForwardMeetingRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxForwardMeetingRequest<D>::EmailMessageId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxForwardMeetingRequest &>(static_cast<const D &>(*this))->get_EmailMessageId(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Email::EmailRecipient> impl_IEmailMailboxForwardMeetingRequest<D>::Recipients() const
{
    Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::Email::EmailRecipient> value;
    check_hresult(static_cast<const IEmailMailboxForwardMeetingRequest &>(static_cast<const D &>(*this))->get_Recipients(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxForwardMeetingRequest<D>::Subject() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxForwardMeetingRequest &>(static_cast<const D &>(*this))->get_Subject(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::EmailMessageBodyKind impl_IEmailMailboxForwardMeetingRequest<D>::ForwardHeaderType() const
{
    Windows::ApplicationModel::Email::EmailMessageBodyKind value {};
    check_hresult(static_cast<const IEmailMailboxForwardMeetingRequest &>(static_cast<const D &>(*this))->get_ForwardHeaderType(&value));
    return value;
}

template <typename D> hstring impl_IEmailMailboxForwardMeetingRequest<D>::ForwardHeader() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxForwardMeetingRequest &>(static_cast<const D &>(*this))->get_ForwardHeader(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxForwardMeetingRequest<D>::Comment() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxForwardMeetingRequest &>(static_cast<const D &>(*this))->get_Comment(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxForwardMeetingRequest<D>::ReportCompletedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxForwardMeetingRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxForwardMeetingRequest<D>::ReportFailedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxForwardMeetingRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxProposeNewTimeForMeetingRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxProposeNewTimeForMeetingRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxProposeNewTimeForMeetingRequest<D>::EmailMessageId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxProposeNewTimeForMeetingRequest &>(static_cast<const D &>(*this))->get_EmailMessageId(put(value)));
    return value;
}

template <typename D> Windows::Foundation::DateTime impl_IEmailMailboxProposeNewTimeForMeetingRequest<D>::NewStartTime() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const IEmailMailboxProposeNewTimeForMeetingRequest &>(static_cast<const D &>(*this))->get_NewStartTime(put(value)));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_IEmailMailboxProposeNewTimeForMeetingRequest<D>::NewDuration() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IEmailMailboxProposeNewTimeForMeetingRequest &>(static_cast<const D &>(*this))->get_NewDuration(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxProposeNewTimeForMeetingRequest<D>::Subject() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxProposeNewTimeForMeetingRequest &>(static_cast<const D &>(*this))->get_Subject(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxProposeNewTimeForMeetingRequest<D>::Comment() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxProposeNewTimeForMeetingRequest &>(static_cast<const D &>(*this))->get_Comment(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxProposeNewTimeForMeetingRequest<D>::ReportCompletedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxProposeNewTimeForMeetingRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxProposeNewTimeForMeetingRequest<D>::ReportFailedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxProposeNewTimeForMeetingRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxSetAutoReplySettingsRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxSetAutoReplySettingsRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::EmailMailboxAutoReplySettings impl_IEmailMailboxSetAutoReplySettingsRequest<D>::AutoReplySettings() const
{
    Windows::ApplicationModel::Email::EmailMailboxAutoReplySettings value { nullptr };
    check_hresult(static_cast<const IEmailMailboxSetAutoReplySettingsRequest &>(static_cast<const D &>(*this))->get_AutoReplySettings(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxSetAutoReplySettingsRequest<D>::ReportCompletedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxSetAutoReplySettingsRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxSetAutoReplySettingsRequest<D>::ReportFailedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxSetAutoReplySettingsRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxGetAutoReplySettingsRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxGetAutoReplySettingsRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::EmailMailboxAutoReplyMessageResponseKind impl_IEmailMailboxGetAutoReplySettingsRequest<D>::RequestedFormat() const
{
    Windows::ApplicationModel::Email::EmailMailboxAutoReplyMessageResponseKind value {};
    check_hresult(static_cast<const IEmailMailboxGetAutoReplySettingsRequest &>(static_cast<const D &>(*this))->get_RequestedFormat(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxGetAutoReplySettingsRequest<D>::ReportCompletedAsync(const Windows::ApplicationModel::Email::EmailMailboxAutoReplySettings & autoReplySettings) const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxGetAutoReplySettingsRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(get(autoReplySettings), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxGetAutoReplySettingsRequest<D>::ReportFailedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxGetAutoReplySettingsRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxResolveRecipientsRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxResolveRecipientsRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_IEmailMailboxResolveRecipientsRequest<D>::Recipients() const
{
    Windows::Foundation::Collections::IVectorView<hstring> value;
    check_hresult(static_cast<const IEmailMailboxResolveRecipientsRequest &>(static_cast<const D &>(*this))->get_Recipients(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxResolveRecipientsRequest<D>::ReportCompletedAsync(const Windows::Foundation::Collections::IIterable<Windows::ApplicationModel::Email::EmailRecipientResolutionResult> & resolutionResults) const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxResolveRecipientsRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(get(resolutionResults), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxResolveRecipientsRequest<D>::ReportFailedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxResolveRecipientsRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxValidateCertificatesRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxValidateCertificatesRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> impl_IEmailMailboxValidateCertificatesRequest<D>::Certificates() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Security::Cryptography::Certificates::Certificate> value;
    check_hresult(static_cast<const IEmailMailboxValidateCertificatesRequest &>(static_cast<const D &>(*this))->get_Certificates(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxValidateCertificatesRequest<D>::ReportCompletedAsync(const Windows::Foundation::Collections::IIterable<winrt::Windows::ApplicationModel::Email::EmailCertificateValidationStatus> & validationStatuses) const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxValidateCertificatesRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(get(validationStatuses), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxValidateCertificatesRequest<D>::ReportFailedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxValidateCertificatesRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(put(result)));
    return result;
}

template <typename D> hstring impl_IEmailMailboxServerSearchReadBatchRequest<D>::SessionId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxServerSearchReadBatchRequest &>(static_cast<const D &>(*this))->get_SessionId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxServerSearchReadBatchRequest<D>::EmailMailboxId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxServerSearchReadBatchRequest &>(static_cast<const D &>(*this))->get_EmailMailboxId(put(value)));
    return value;
}

template <typename D> hstring impl_IEmailMailboxServerSearchReadBatchRequest<D>::EmailFolderId() const
{
    hstring value;
    check_hresult(static_cast<const IEmailMailboxServerSearchReadBatchRequest &>(static_cast<const D &>(*this))->get_EmailFolderId(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::EmailQueryOptions impl_IEmailMailboxServerSearchReadBatchRequest<D>::Options() const
{
    Windows::ApplicationModel::Email::EmailQueryOptions value { nullptr };
    check_hresult(static_cast<const IEmailMailboxServerSearchReadBatchRequest &>(static_cast<const D &>(*this))->get_Options(put(value)));
    return value;
}

template <typename D> uint32_t impl_IEmailMailboxServerSearchReadBatchRequest<D>::SuggestedBatchSize() const
{
    uint32_t value {};
    check_hresult(static_cast<const IEmailMailboxServerSearchReadBatchRequest &>(static_cast<const D &>(*this))->get_SuggestedBatchSize(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxServerSearchReadBatchRequest<D>::SaveMessageAsync(const Windows::ApplicationModel::Email::EmailMessage & message) const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxServerSearchReadBatchRequest &>(static_cast<const D &>(*this))->abi_SaveMessageAsync(get(message), put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxServerSearchReadBatchRequest<D>::ReportCompletedAsync() const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxServerSearchReadBatchRequest &>(static_cast<const D &>(*this))->abi_ReportCompletedAsync(put(result)));
    return result;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IEmailMailboxServerSearchReadBatchRequest<D>::ReportFailedAsync(Windows::ApplicationModel::Email::EmailBatchStatus batchStatus) const
{
    Windows::Foundation::IAsyncAction result;
    check_hresult(static_cast<const IEmailMailboxServerSearchReadBatchRequest &>(static_cast<const D &>(*this))->abi_ReportFailedAsync(batchStatus, put(result)));
    return result;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxSyncManagerSyncRequest impl_IEmailMailboxSyncManagerSyncRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxSyncManagerSyncRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxSyncManagerSyncRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxSyncManagerSyncRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxSyncManagerSyncRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadMessageRequest impl_IEmailMailboxDownloadMessageRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadMessageRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxDownloadMessageRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxDownloadMessageRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxDownloadMessageRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadAttachmentRequest impl_IEmailMailboxDownloadAttachmentRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxDownloadAttachmentRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxDownloadAttachmentRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxDownloadAttachmentRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxDownloadAttachmentRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxCreateFolderRequest impl_IEmailMailboxCreateFolderRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxCreateFolderRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxCreateFolderRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxCreateFolderRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxCreateFolderRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxDeleteFolderRequest impl_IEmailMailboxDeleteFolderRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxDeleteFolderRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxDeleteFolderRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxDeleteFolderRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxDeleteFolderRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxEmptyFolderRequest impl_IEmailMailboxEmptyFolderRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxEmptyFolderRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxEmptyFolderRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxEmptyFolderRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxEmptyFolderRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxMoveFolderRequest impl_IEmailMailboxMoveFolderRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxMoveFolderRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxMoveFolderRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxMoveFolderRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxMoveFolderRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxUpdateMeetingResponseRequest impl_IEmailMailboxUpdateMeetingResponseRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxUpdateMeetingResponseRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxUpdateMeetingResponseRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxUpdateMeetingResponseRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxUpdateMeetingResponseRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxForwardMeetingRequest impl_IEmailMailboxForwardMeetingRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxForwardMeetingRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxForwardMeetingRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxForwardMeetingRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxForwardMeetingRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxProposeNewTimeForMeetingRequest impl_IEmailMailboxProposeNewTimeForMeetingRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxProposeNewTimeForMeetingRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxProposeNewTimeForMeetingRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxProposeNewTimeForMeetingRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxProposeNewTimeForMeetingRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxSetAutoReplySettingsRequest impl_IEmailMailboxSetAutoReplySettingsRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxSetAutoReplySettingsRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxSetAutoReplySettingsRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxSetAutoReplySettingsRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxSetAutoReplySettingsRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxGetAutoReplySettingsRequest impl_IEmailMailboxGetAutoReplySettingsRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxGetAutoReplySettingsRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxGetAutoReplySettingsRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxGetAutoReplySettingsRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxGetAutoReplySettingsRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxResolveRecipientsRequest impl_IEmailMailboxResolveRecipientsRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxResolveRecipientsRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxResolveRecipientsRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxResolveRecipientsRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxResolveRecipientsRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxValidateCertificatesRequest impl_IEmailMailboxValidateCertificatesRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxValidateCertificatesRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxValidateCertificatesRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxValidateCertificatesRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxValidateCertificatesRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

template <typename D> Windows::ApplicationModel::Email::DataProvider::EmailMailboxServerSearchReadBatchRequest impl_IEmailMailboxServerSearchReadBatchRequestEventArgs<D>::Request() const
{
    Windows::ApplicationModel::Email::DataProvider::EmailMailboxServerSearchReadBatchRequest value { nullptr };
    check_hresult(static_cast<const IEmailMailboxServerSearchReadBatchRequestEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IEmailMailboxServerSearchReadBatchRequestEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral value { nullptr };
    check_hresult(static_cast<const IEmailMailboxServerSearchReadBatchRequestEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(value)));
    return value;
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Storage.Compression.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Storage::Compression {

struct ICompressor;
struct ICompressorFactory;
struct IDecompressor;
struct IDecompressorFactory;
struct Compressor;
struct Decompressor;

}

namespace Windows::Storage::Compression {

struct ICompressor;
struct ICompressorFactory;
struct IDecompressor;
struct IDecompressorFactory;
struct Compressor;
struct Decompressor;

}

namespace Windows::Storage::Compression {

enum class CompressAlgorithm
{
    InvalidAlgorithm = 0,
    NullAlgorithm = 1,
    Mszip = 2,
    Xpress = 3,
    XpressHuff = 4,
    Lzms = 5,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Phone.System.Power.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Phone.System.Power.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
#define WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
template <> struct __declspec(uuid("c50898f6-c536-5f47-8583-8b2c2438a13b")) __declspec(novtable) EventHandler<Windows::IInspectable> : impl_EventHandler<Windows::IInspectable> {};
#endif


}

namespace Windows::Phone::System::Power {

template <typename D>
struct WINRT_EBO impl_IPowerManagerStatics
{
    Windows::Phone::System::Power::PowerSavingMode PowerSavingMode() const;
    event_token PowerSavingModeChanged(const Windows::Foundation::EventHandler<Windows::IInspectable> & changeHandler) const;
    using PowerSavingModeChanged_revoker = event_revoker<IPowerManagerStatics>;
    PowerSavingModeChanged_revoker PowerSavingModeChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & changeHandler) const;
    void PowerSavingModeChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IPowerManagerStatics2
{
    bool PowerSavingModeEnabled() const;
};

struct IPowerManagerStatics :
    Windows::IInspectable,
    impl::consume<IPowerManagerStatics>
{
    IPowerManagerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPowerManagerStatics>(m_ptr); }
};

struct IPowerManagerStatics2 :
    Windows::IInspectable,
    impl::consume<IPowerManagerStatics2>
{
    IPowerManagerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPowerManagerStatics2>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Search.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::ApplicationModel::Search {

struct ILocalContentSuggestionSettings;
struct ISearchPane;
struct ISearchPaneQueryChangedEventArgs;
struct ISearchPaneQueryLinguisticDetails;
struct ISearchPaneQuerySubmittedEventArgs;
struct ISearchPaneQuerySubmittedEventArgsWithLinguisticDetails;
struct ISearchPaneResultSuggestionChosenEventArgs;
struct ISearchPaneStatics;
struct ISearchPaneStaticsWithHideThisApplication;
struct ISearchPaneSuggestionsRequest;
struct ISearchPaneSuggestionsRequestDeferral;
struct ISearchPaneSuggestionsRequestedEventArgs;
struct ISearchPaneVisibilityChangedEventArgs;
struct ISearchQueryLinguisticDetails;
struct ISearchQueryLinguisticDetailsFactory;
struct ISearchSuggestionCollection;
struct ISearchSuggestionsRequest;
struct ISearchSuggestionsRequestDeferral;
struct LocalContentSuggestionSettings;
struct SearchPane;
struct SearchPaneQueryChangedEventArgs;
struct SearchPaneQueryLinguisticDetails;
struct SearchPaneQuerySubmittedEventArgs;
struct SearchPaneResultSuggestionChosenEventArgs;
struct SearchPaneSuggestionsRequest;
struct SearchPaneSuggestionsRequestDeferral;
struct SearchPaneSuggestionsRequestedEventArgs;
struct SearchPaneVisibilityChangedEventArgs;
struct SearchQueryLinguisticDetails;
struct SearchSuggestionCollection;
struct SearchSuggestionsRequest;
struct SearchSuggestionsRequestDeferral;

}

namespace Windows::ApplicationModel::Search {

struct ILocalContentSuggestionSettings;
struct ISearchPane;
struct ISearchPaneQueryChangedEventArgs;
struct ISearchPaneQueryLinguisticDetails;
struct ISearchPaneQuerySubmittedEventArgs;
struct ISearchPaneQuerySubmittedEventArgsWithLinguisticDetails;
struct ISearchPaneResultSuggestionChosenEventArgs;
struct ISearchPaneStatics;
struct ISearchPaneStaticsWithHideThisApplication;
struct ISearchPaneSuggestionsRequest;
struct ISearchPaneSuggestionsRequestDeferral;
struct ISearchPaneSuggestionsRequestedEventArgs;
struct ISearchPaneVisibilityChangedEventArgs;
struct ISearchQueryLinguisticDetails;
struct ISearchQueryLinguisticDetailsFactory;
struct ISearchSuggestionCollection;
struct ISearchSuggestionsRequest;
struct ISearchSuggestionsRequestDeferral;
struct LocalContentSuggestionSettings;
struct SearchPane;
struct SearchPaneQueryChangedEventArgs;
struct SearchPaneQueryLinguisticDetails;
struct SearchPaneQuerySubmittedEventArgs;
struct SearchPaneResultSuggestionChosenEventArgs;
struct SearchPaneSuggestionsRequest;
struct SearchPaneSuggestionsRequestDeferral;
struct SearchPaneSuggestionsRequestedEventArgs;
struct SearchPaneVisibilityChangedEventArgs;
struct SearchQueryLinguisticDetails;
struct SearchSuggestionCollection;
struct SearchSuggestionsRequest;
struct SearchSuggestionsRequestDeferral;

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.System.RemoteDesktop.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.System.RemoteDesktop.3.h"
#include "Windows.System.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::System::RemoteDesktop::IInteractiveSessionStatics> : produce_base<D, Windows::System::RemoteDesktop::IInteractiveSessionStatics>
{
    HRESULT __stdcall get_IsRemote(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsRemote());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::System::RemoteDesktop {

template <typename D> bool impl_IInteractiveSessionStatics<D>::IsRemote() const
{
    bool value {};
    check_hresult(static_cast<const IInteractiveSessionStatics &>(static_cast<const D &>(*this))->get_IsRemote(&value));
    return value;
}

inline bool InteractiveSession::IsRemote()
{
    return get_activation_factory<InteractiveSession, IInteractiveSessionStatics>().IsRemote();
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.Ocr.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Media::Ocr {

struct IOcrEngine;
struct IOcrEngineStatics;
struct IOcrLine;
struct IOcrResult;
struct IOcrWord;
struct OcrEngine;
struct OcrLine;
struct OcrResult;
struct OcrWord;

}

namespace Windows::Media::Ocr {

struct IOcrEngine;
struct IOcrEngineStatics;
struct IOcrLine;
struct IOcrResult;
struct IOcrWord;
struct OcrEngine;
struct OcrLine;
struct OcrResult;
struct OcrWord;

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Appointments.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.ApplicationModel.Appointments.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::ApplicationModel::Appointments {

struct WINRT_EBO Appointment :
    Windows::ApplicationModel::Appointments::IAppointment,
    impl::require<Appointment, Windows::ApplicationModel::Appointments::IAppointment2, Windows::ApplicationModel::Appointments::IAppointment3>
{
    Appointment(std::nullptr_t) noexcept {}
    Appointment();
};

struct WINRT_EBO AppointmentCalendar :
    Windows::ApplicationModel::Appointments::IAppointmentCalendar,
    impl::require<AppointmentCalendar, Windows::ApplicationModel::Appointments::IAppointmentCalendar2, Windows::ApplicationModel::Appointments::IAppointmentCalendar3>
{
    AppointmentCalendar(std::nullptr_t) noexcept {}
    using impl_IAppointmentCalendar::DisplayColor;
    using impl_IAppointmentCalendar::IsHidden;
    using impl_IAppointmentCalendar2::DisplayColor;
    using impl_IAppointmentCalendar2::IsHidden;
};

struct WINRT_EBO AppointmentCalendarSyncManager :
    Windows::ApplicationModel::Appointments::IAppointmentCalendarSyncManager,
    impl::require<AppointmentCalendarSyncManager, Windows::ApplicationModel::Appointments::IAppointmentCalendarSyncManager2>
{
    AppointmentCalendarSyncManager(std::nullptr_t) noexcept {}
    using impl_IAppointmentCalendarSyncManager::LastAttemptedSyncTime;
    using impl_IAppointmentCalendarSyncManager::LastSuccessfulSyncTime;
    using impl_IAppointmentCalendarSyncManager::Status;
    using impl_IAppointmentCalendarSyncManager2::LastAttemptedSyncTime;
    using impl_IAppointmentCalendarSyncManager2::LastSuccessfulSyncTime;
    using impl_IAppointmentCalendarSyncManager2::Status;
};

struct WINRT_EBO AppointmentConflictResult :
    Windows::ApplicationModel::Appointments::IAppointmentConflictResult
{
    AppointmentConflictResult(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppointmentException :
    Windows::ApplicationModel::Appointments::IAppointmentException
{
    AppointmentException(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppointmentInvitee :
    Windows::ApplicationModel::Appointments::IAppointmentInvitee
{
    AppointmentInvitee(std::nullptr_t) noexcept {}
    AppointmentInvitee();
};

struct AppointmentManager
{
    AppointmentManager() = delete;
    static Windows::Foundation::IAsyncOperation<hstring> ShowAddAppointmentAsync(const Windows::ApplicationModel::Appointments::Appointment & appointment, const Windows::Foundation::Rect & selection);
    static Windows::Foundation::IAsyncOperation<hstring> ShowAddAppointmentAsync(const Windows::ApplicationModel::Appointments::Appointment & appointment, const Windows::Foundation::Rect & selection, Windows::UI::Popups::Placement preferredPlacement);
    static Windows::Foundation::IAsyncOperation<hstring> ShowReplaceAppointmentAsync(hstring_ref appointmentId, const Windows::ApplicationModel::Appointments::Appointment & appointment, const Windows::Foundation::Rect & selection);
    static Windows::Foundation::IAsyncOperation<hstring> ShowReplaceAppointmentAsync(hstring_ref appointmentId, const Windows::ApplicationModel::Appointments::Appointment & appointment, const Windows::Foundation::Rect & selection, Windows::UI::Popups::Placement preferredPlacement);
    static Windows::Foundation::IAsyncOperation<hstring> ShowReplaceAppointmentAsync(hstring_ref appointmentId, const Windows::ApplicationModel::Appointments::Appointment & appointment, const Windows::Foundation::Rect & selection, Windows::UI::Popups::Placement preferredPlacement, const Windows::Foundation::DateTime & instanceStartDate);
    static Windows::Foundation::IAsyncOperation<bool> ShowRemoveAppointmentAsync(hstring_ref appointmentId, const Windows::Foundation::Rect & selection);
    static Windows::Foundation::IAsyncOperation<bool> ShowRemoveAppointmentAsync(hstring_ref appointmentId, const Windows::Foundation::Rect & selection, Windows::UI::Popups::Placement preferredPlacement);
    static Windows::Foundation::IAsyncOperation<bool> ShowRemoveAppointmentAsync(hstring_ref appointmentId, const Windows::Foundation::Rect & selection, Windows::UI::Popups::Placement preferredPlacement, const Windows::Foundation::DateTime & instanceStartDate);
    static Windows::Foundation::IAsyncAction ShowTimeFrameAsync(const Windows::Foundation::DateTime & timeToShow, const Windows::Foundation::TimeSpan & duration);
    static Windows::Foundation::IAsyncAction ShowAppointmentDetailsAsync(hstring_ref appointmentId);
    static Windows::Foundation::IAsyncAction ShowAppointmentDetailsAsync(hstring_ref appointmentId, const Windows::Foundation::DateTime & instanceStartDate);
    static Windows::Foundation::IAsyncOperation<hstring> ShowEditNewAppointmentAsync(const Windows::ApplicationModel::Appointments::Appointment & appointment);
    static Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::Appointments::AppointmentStore> RequestStoreAsync(Windows::ApplicationModel::Appointments::AppointmentStoreAccessType options);
    static Windows::ApplicationModel::Appointments::AppointmentManagerForUser GetForUser(const Windows::System::User & user);
};

struct WINRT_EBO AppointmentManagerForUser :
    Windows::ApplicationModel::Appointments::IAppointmentManagerForUser
{
    AppointmentManagerForUser(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppointmentOrganizer :
    Windows::ApplicationModel::Appointments::IAppointmentParticipant
{
    AppointmentOrganizer(std::nullptr_t) noexcept {}
    AppointmentOrganizer();
};

struct AppointmentProperties
{
    AppointmentProperties() = delete;
    static hstring Subject();
    static hstring Location();
    static hstring StartTime();
    static hstring Duration();
    static hstring Reminder();
    static hstring BusyStatus();
    static hstring Sensitivity();
    static hstring OriginalStartTime();
    static hstring IsResponseRequested();
    static hstring AllowNewTimeProposal();
    static hstring AllDay();
    static hstring Details();
    static hstring OnlineMeetingLink();
    static hstring ReplyTime();
    static hstring Organizer();
    static hstring UserResponse();
    static hstring HasInvitees();
    static hstring IsCanceledMeeting();
    static hstring IsOrganizedByUser();
    static hstring Recurrence();
    static hstring Uri();
    static hstring Invitees();
    static Windows::Foundation::Collections::IVector<hstring> DefaultProperties();
    static hstring ChangeNumber();
    static hstring RemoteChangeNumber();
    static hstring DetailsKind();
};

struct WINRT_EBO AppointmentRecurrence :
    Windows::ApplicationModel::Appointments::IAppointmentRecurrence,
    impl::require<AppointmentRecurrence, Windows::ApplicationModel::Appointments::IAppointmentRecurrence2, Windows::ApplicationModel::Appointments::IAppointmentRecurrence3>
{
    AppointmentRecurrence(std::nullptr_t) noexcept {}
    AppointmentRecurrence();
};

struct WINRT_EBO AppointmentStore :
    Windows::ApplicationModel::Appointments::IAppointmentStore,
    impl::require<AppointmentStore, Windows::ApplicationModel::Appointments::IAppointmentStore2>
{
    AppointmentStore(std::nullptr_t) noexcept {}
    using impl_IAppointmentStore::CreateAppointmentCalendarAsync;
    using impl_IAppointmentStore2::CreateAppointmentCalendarAsync;
};

struct WINRT_EBO AppointmentStoreChange :
    Windows::ApplicationModel::Appointments::IAppointmentStoreChange,
    impl::require<AppointmentStoreChange, Windows::ApplicationModel::Appointments::IAppointmentStoreChange2>
{
    AppointmentStoreChange(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppointmentStoreChangeReader :
    Windows::ApplicationModel::Appointments::IAppointmentStoreChangeReader
{
    AppointmentStoreChangeReader(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppointmentStoreChangeTracker :
    Windows::ApplicationModel::Appointments::IAppointmentStoreChangeTracker
{
    AppointmentStoreChangeTracker(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppointmentStoreChangedDeferral :
    Windows::ApplicationModel::Appointments::IAppointmentStoreChangedDeferral
{
    AppointmentStoreChangedDeferral(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppointmentStoreChangedEventArgs :
    Windows::ApplicationModel::Appointments::IAppointmentStoreChangedEventArgs
{
    AppointmentStoreChangedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppointmentStoreNotificationTriggerDetails :
    Windows::ApplicationModel::Appointments::IAppointmentStoreNotificationTriggerDetails
{
    AppointmentStoreNotificationTriggerDetails(std::nullptr_t) noexcept {}
};

struct WINRT_EBO FindAppointmentsOptions :
    Windows::ApplicationModel::Appointments::IFindAppointmentsOptions
{
    FindAppointmentsOptions(std::nullptr_t) noexcept {}
    FindAppointmentsOptions();
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Media.Animation.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Xaml::Media::Animation {

struct KeyTime;
struct RepeatBehavior;

}

namespace Windows::UI::Xaml::Media::Animation {

using KeyTime = ABI::Windows::UI::Xaml::Media::Animation::KeyTime;
using RepeatBehavior = ABI::Windows::UI::Xaml::Media::Animation::RepeatBehavior;

}

namespace ABI::Windows::UI::Xaml::Media::Animation {

struct IAddDeleteThemeTransition;
struct IBackEase;
struct IBackEaseStatics;
struct IBeginStoryboard;
struct IBeginStoryboardStatics;
struct IBounceEase;
struct IBounceEaseStatics;
struct ICircleEase;
struct IColorAnimation;
struct IColorAnimationStatics;
struct IColorAnimationUsingKeyFrames;
struct IColorAnimationUsingKeyFramesStatics;
struct IColorKeyFrame;
struct IColorKeyFrameFactory;
struct IColorKeyFrameStatics;
struct ICommonNavigationTransitionInfo;
struct ICommonNavigationTransitionInfoStatics;
struct IConnectedAnimation;
struct IConnectedAnimationService;
struct IConnectedAnimationServiceStatics;
struct IContentThemeTransition;
struct IContentThemeTransitionStatics;
struct IContinuumNavigationTransitionInfo;
struct IContinuumNavigationTransitionInfoStatics;
struct ICubicEase;
struct IDiscreteColorKeyFrame;
struct IDiscreteDoubleKeyFrame;
struct IDiscreteObjectKeyFrame;
struct IDiscretePointKeyFrame;
struct IDoubleAnimation;
struct IDoubleAnimationStatics;
struct IDoubleAnimationUsingKeyFrames;
struct IDoubleAnimationUsingKeyFramesStatics;
struct IDoubleKeyFrame;
struct IDoubleKeyFrameFactory;
struct IDoubleKeyFrameStatics;
struct IDragItemThemeAnimation;
struct IDragItemThemeAnimationStatics;
struct IDragOverThemeAnimation;
struct IDragOverThemeAnimationStatics;
struct IDrillInNavigationTransitionInfo;
struct IDrillInThemeAnimation;
struct IDrillInThemeAnimationStatics;
struct IDrillOutThemeAnimation;
struct IDrillOutThemeAnimationStatics;
struct IDropTargetItemThemeAnimation;
struct IDropTargetItemThemeAnimationStatics;
struct IEasingColorKeyFrame;
struct IEasingColorKeyFrameStatics;
struct IEasingDoubleKeyFrame;
struct IEasingDoubleKeyFrameStatics;
struct IEasingFunctionBase;
struct IEasingFunctionBaseFactory;
struct IEasingFunctionBaseStatics;
struct IEasingPointKeyFrame;
struct IEasingPointKeyFrameStatics;
struct IEdgeUIThemeTransition;
struct IEdgeUIThemeTransitionStatics;
struct IElasticEase;
struct IElasticEaseStatics;
struct IEntranceNavigationTransitionInfo;
struct IEntranceNavigationTransitionInfoStatics;
struct IEntranceThemeTransition;
struct IEntranceThemeTransitionStatics;
struct IExponentialEase;
struct IExponentialEaseStatics;
struct IFadeInThemeAnimation;
struct IFadeInThemeAnimationStatics;
struct IFadeOutThemeAnimation;
struct IFadeOutThemeAnimationStatics;
struct IKeySpline;
struct IKeyTimeHelper;
struct IKeyTimeHelperStatics;
struct ILinearColorKeyFrame;
struct ILinearDoubleKeyFrame;
struct ILinearPointKeyFrame;
struct INavigationThemeTransition;
struct INavigationThemeTransitionStatics;
struct INavigationTransitionInfo;
struct INavigationTransitionInfoFactory;
struct INavigationTransitionInfoOverrides;
struct IObjectAnimationUsingKeyFrames;
struct IObjectAnimationUsingKeyFramesStatics;
struct IObjectKeyFrame;
struct IObjectKeyFrameFactory;
struct IObjectKeyFrameStatics;
struct IPaneThemeTransition;
struct IPaneThemeTransitionStatics;
struct IPointAnimation;
struct IPointAnimationStatics;
struct IPointAnimationUsingKeyFrames;
struct IPointAnimationUsingKeyFramesStatics;
struct IPointKeyFrame;
struct IPointKeyFrameFactory;
struct IPointKeyFrameStatics;
struct IPointerDownThemeAnimation;
struct IPointerDownThemeAnimationStatics;
struct IPointerUpThemeAnimation;
struct IPointerUpThemeAnimationStatics;
struct IPopInThemeAnimation;
struct IPopInThemeAnimationStatics;
struct IPopOutThemeAnimation;
struct IPopOutThemeAnimationStatics;
struct IPopupThemeTransition;
struct IPopupThemeTransitionStatics;
struct IPowerEase;
struct IPowerEaseStatics;
struct IQuadraticEase;
struct IQuarticEase;
struct IQuinticEase;
struct IReorderThemeTransition;
struct IRepeatBehaviorHelper;
struct IRepeatBehaviorHelperStatics;
struct IRepositionThemeAnimation;
struct IRepositionThemeAnimationStatics;
struct IRepositionThemeTransition;
struct IRepositionThemeTransition2;
struct IRepositionThemeTransitionStatics2;
struct ISineEase;
struct ISlideNavigationTransitionInfo;
struct ISplineColorKeyFrame;
struct ISplineColorKeyFrameStatics;
struct ISplineDoubleKeyFrame;
struct ISplineDoubleKeyFrameStatics;
struct ISplinePointKeyFrame;
struct ISplinePointKeyFrameStatics;
struct ISplitCloseThemeAnimation;
struct ISplitCloseThemeAnimationStatics;
struct ISplitOpenThemeAnimation;
struct ISplitOpenThemeAnimationStatics;
struct IStoryboard;
struct IStoryboardStatics;
struct ISuppressNavigationTransitionInfo;
struct ISwipeBackThemeAnimation;
struct ISwipeBackThemeAnimationStatics;
struct ISwipeHintThemeAnimation;
struct ISwipeHintThemeAnimationStatics;
struct ITimeline;
struct ITimelineFactory;
struct ITimelineStatics;
struct ITransition;
struct ITransitionFactory;
struct AddDeleteThemeTransition;
struct BackEase;
struct BeginStoryboard;
struct BounceEase;
struct CircleEase;
struct ColorAnimation;
struct ColorAnimationUsingKeyFrames;
struct ColorKeyFrame;
struct ColorKeyFrameCollection;
struct CommonNavigationTransitionInfo;
struct ConnectedAnimation;
struct ConnectedAnimationService;
struct ContentThemeTransition;
struct ContinuumNavigationTransitionInfo;
struct CubicEase;
struct DiscreteColorKeyFrame;
struct DiscreteDoubleKeyFrame;
struct DiscreteObjectKeyFrame;
struct DiscretePointKeyFrame;
struct DoubleAnimation;
struct DoubleAnimationUsingKeyFrames;
struct DoubleKeyFrame;
struct DoubleKeyFrameCollection;
struct DragItemThemeAnimation;
struct DragOverThemeAnimation;
struct DrillInNavigationTransitionInfo;
struct DrillInThemeAnimation;
struct DrillOutThemeAnimation;
struct DropTargetItemThemeAnimation;
struct EasingColorKeyFrame;
struct EasingDoubleKeyFrame;
struct EasingFunctionBase;
struct EasingPointKeyFrame;
struct EdgeUIThemeTransition;
struct ElasticEase;
struct EntranceNavigationTransitionInfo;
struct EntranceThemeTransition;
struct ExponentialEase;
struct FadeInThemeAnimation;
struct FadeOutThemeAnimation;
struct KeySpline;
struct KeyTimeHelper;
struct LinearColorKeyFrame;
struct LinearDoubleKeyFrame;
struct LinearPointKeyFrame;
struct NavigationThemeTransition;
struct NavigationTransitionInfo;
struct ObjectAnimationUsingKeyFrames;
struct ObjectKeyFrame;
struct ObjectKeyFrameCollection;
struct PaneThemeTransition;
struct PointAnimation;
struct PointAnimationUsingKeyFrames;
struct PointKeyFrame;
struct PointKeyFrameCollection;
struct PointerDownThemeAnimation;
struct PointerUpThemeAnimation;
struct PopInThemeAnimation;
struct PopOutThemeAnimation;
struct PopupThemeTransition;
struct PowerEase;
struct QuadraticEase;
struct QuarticEase;
struct QuinticEase;
struct ReorderThemeTransition;
struct RepeatBehaviorHelper;
struct RepositionThemeAnimation;
struct RepositionThemeTransition;
struct SineEase;
struct SlideNavigationTransitionInfo;
struct SplineColorKeyFrame;
struct SplineDoubleKeyFrame;
struct SplinePointKeyFrame;
struct SplitCloseThemeAnimation;
struct SplitOpenThemeAnimation;
struct Storyboard;
struct SuppressNavigationTransitionInfo;
struct SwipeBackThemeAnimation;
struct SwipeHintThemeAnimation;
struct Timeline;
struct TimelineCollection;
struct Transition;
struct TransitionCollection;

}

namespace Windows::UI::Xaml::Media::Animation {

struct IAddDeleteThemeTransition;
struct IBackEase;
struct IBackEaseStatics;
struct IBeginStoryboard;
struct IBeginStoryboardStatics;
struct IBounceEase;
struct IBounceEaseStatics;
struct ICircleEase;
struct IColorAnimation;
struct IColorAnimationStatics;
struct IColorAnimationUsingKeyFrames;
struct IColorAnimationUsingKeyFramesStatics;
struct IColorKeyFrame;
struct IColorKeyFrameFactory;
struct IColorKeyFrameStatics;
struct ICommonNavigationTransitionInfo;
struct ICommonNavigationTransitionInfoStatics;
struct IConnectedAnimation;
struct IConnectedAnimationService;
struct IConnectedAnimationServiceStatics;
struct IContentThemeTransition;
struct IContentThemeTransitionStatics;
struct IContinuumNavigationTransitionInfo;
struct IContinuumNavigationTransitionInfoStatics;
struct ICubicEase;
struct IDiscreteColorKeyFrame;
struct IDiscreteDoubleKeyFrame;
struct IDiscreteObjectKeyFrame;
struct IDiscretePointKeyFrame;
struct IDoubleAnimation;
struct IDoubleAnimationStatics;
struct IDoubleAnimationUsingKeyFrames;
struct IDoubleAnimationUsingKeyFramesStatics;
struct IDoubleKeyFrame;
struct IDoubleKeyFrameFactory;
struct IDoubleKeyFrameStatics;
struct IDragItemThemeAnimation;
struct IDragItemThemeAnimationStatics;
struct IDragOverThemeAnimation;
struct IDragOverThemeAnimationStatics;
struct IDrillInNavigationTransitionInfo;
struct IDrillInThemeAnimation;
struct IDrillInThemeAnimationStatics;
struct IDrillOutThemeAnimation;
struct IDrillOutThemeAnimationStatics;
struct IDropTargetItemThemeAnimation;
struct IDropTargetItemThemeAnimationStatics;
struct IEasingColorKeyFrame;
struct IEasingColorKeyFrameStatics;
struct IEasingDoubleKeyFrame;
struct IEasingDoubleKeyFrameStatics;
struct IEasingFunctionBase;
struct IEasingFunctionBaseFactory;
struct IEasingFunctionBaseStatics;
struct IEasingPointKeyFrame;
struct IEasingPointKeyFrameStatics;
struct IEdgeUIThemeTransition;
struct IEdgeUIThemeTransitionStatics;
struct IElasticEase;
struct IElasticEaseStatics;
struct IEntranceNavigationTransitionInfo;
struct IEntranceNavigationTransitionInfoStatics;
struct IEntranceThemeTransition;
struct IEntranceThemeTransitionStatics;
struct IExponentialEase;
struct IExponentialEaseStatics;
struct IFadeInThemeAnimation;
struct IFadeInThemeAnimationStatics;
struct IFadeOutThemeAnimation;
struct IFadeOutThemeAnimationStatics;
struct IKeySpline;
struct IKeyTimeHelper;
struct IKeyTimeHelperStatics;
struct ILinearColorKeyFrame;
struct ILinearDoubleKeyFrame;
struct ILinearPointKeyFrame;
struct INavigationThemeTransition;
struct INavigationThemeTransitionStatics;
struct INavigationTransitionInfo;
struct INavigationTransitionInfoFactory;
struct INavigationTransitionInfoOverrides;
struct IObjectAnimationUsingKeyFrames;
struct IObjectAnimationUsingKeyFramesStatics;
struct IObjectKeyFrame;
struct IObjectKeyFrameFactory;
struct IObjectKeyFrameStatics;
struct IPaneThemeTransition;
struct IPaneThemeTransitionStatics;
struct IPointAnimation;
struct IPointAnimationStatics;
struct IPointAnimationUsingKeyFrames;
struct IPointAnimationUsingKeyFramesStatics;
struct IPointKeyFrame;
struct IPointKeyFrameFactory;
struct IPointKeyFrameStatics;
struct IPointerDownThemeAnimation;
struct IPointerDownThemeAnimationStatics;
struct IPointerUpThemeAnimation;
struct IPointerUpThemeAnimationStatics;
struct IPopInThemeAnimation;
struct IPopInThemeAnimationStatics;
struct IPopOutThemeAnimation;
struct IPopOutThemeAnimationStatics;
struct IPopupThemeTransition;
struct IPopupThemeTransitionStatics;
struct IPowerEase;
struct IPowerEaseStatics;
struct IQuadraticEase;
struct IQuarticEase;
struct IQuinticEase;
struct IReorderThemeTransition;
struct IRepeatBehaviorHelper;
struct IRepeatBehaviorHelperStatics;
struct IRepositionThemeAnimation;
struct IRepositionThemeAnimationStatics;
struct IRepositionThemeTransition;
struct IRepositionThemeTransition2;
struct IRepositionThemeTransitionStatics2;
struct ISineEase;
struct ISlideNavigationTransitionInfo;
struct ISplineColorKeyFrame;
struct ISplineColorKeyFrameStatics;
struct ISplineDoubleKeyFrame;
struct ISplineDoubleKeyFrameStatics;
struct ISplinePointKeyFrame;
struct ISplinePointKeyFrameStatics;
struct ISplitCloseThemeAnimation;
struct ISplitCloseThemeAnimationStatics;
struct ISplitOpenThemeAnimation;
struct ISplitOpenThemeAnimationStatics;
struct IStoryboard;
struct IStoryboardStatics;
struct ISuppressNavigationTransitionInfo;
struct ISwipeBackThemeAnimation;
struct ISwipeBackThemeAnimationStatics;
struct ISwipeHintThemeAnimation;
struct ISwipeHintThemeAnimationStatics;
struct ITimeline;
struct ITimelineFactory;
struct ITimelineStatics;
struct ITransition;
struct ITransitionFactory;
struct AddDeleteThemeTransition;
struct BackEase;
struct BeginStoryboard;
struct BounceEase;
struct CircleEase;
struct ColorAnimation;
struct ColorAnimationUsingKeyFrames;
struct ColorKeyFrame;
struct ColorKeyFrameCollection;
struct CommonNavigationTransitionInfo;
struct ConnectedAnimation;
struct ConnectedAnimationService;
struct ContentThemeTransition;
struct ContinuumNavigationTransitionInfo;
struct CubicEase;
struct DiscreteColorKeyFrame;
struct DiscreteDoubleKeyFrame;
struct DiscreteObjectKeyFrame;
struct DiscretePointKeyFrame;
struct DoubleAnimation;
struct DoubleAnimationUsingKeyFrames;
struct DoubleKeyFrame;
struct DoubleKeyFrameCollection;
struct DragItemThemeAnimation;
struct DragOverThemeAnimation;
struct DrillInNavigationTransitionInfo;
struct DrillInThemeAnimation;
struct DrillOutThemeAnimation;
struct DropTargetItemThemeAnimation;
struct EasingColorKeyFrame;
struct EasingDoubleKeyFrame;
struct EasingFunctionBase;
struct EasingPointKeyFrame;
struct EdgeUIThemeTransition;
struct ElasticEase;
struct EntranceNavigationTransitionInfo;
struct EntranceThemeTransition;
struct ExponentialEase;
struct FadeInThemeAnimation;
struct FadeOutThemeAnimation;
struct KeySpline;
struct KeyTimeHelper;
struct LinearColorKeyFrame;
struct LinearDoubleKeyFrame;
struct LinearPointKeyFrame;
struct NavigationThemeTransition;
struct NavigationTransitionInfo;
struct ObjectAnimationUsingKeyFrames;
struct ObjectKeyFrame;
struct ObjectKeyFrameCollection;
struct PaneThemeTransition;
struct PointAnimation;
struct PointAnimationUsingKeyFrames;
struct PointKeyFrame;
struct PointKeyFrameCollection;
struct PointerDownThemeAnimation;
struct PointerUpThemeAnimation;
struct PopInThemeAnimation;
struct PopOutThemeAnimation;
struct PopupThemeTransition;
struct PowerEase;
struct QuadraticEase;
struct QuarticEase;
struct QuinticEase;
struct ReorderThemeTransition;
struct RepeatBehaviorHelper;
struct RepositionThemeAnimation;
struct RepositionThemeTransition;
struct SineEase;
struct SlideNavigationTransitionInfo;
struct SplineColorKeyFrame;
struct SplineDoubleKeyFrame;
struct SplinePointKeyFrame;
struct SplitCloseThemeAnimation;
struct SplitOpenThemeAnimation;
struct Storyboard;
struct SuppressNavigationTransitionInfo;
struct SwipeBackThemeAnimation;
struct SwipeHintThemeAnimation;
struct Timeline;
struct TimelineCollection;
struct Transition;
struct TransitionCollection;

}

namespace Windows::UI::Xaml::Media::Animation {

enum class ClockState
{
    Active = 0,
    Filling = 1,
    Stopped = 2,
};

enum class EasingMode
{
    EaseOut = 0,
    EaseIn = 1,
    EaseInOut = 2,
};

enum class FillBehavior
{
    HoldEnd = 0,
    Stop = 1,
};

enum class RepeatBehaviorType
{
    Count = 0,
    Duration = 1,
    Forever = 2,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.System.Display.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.System.Display.1.h"

WINRT_EXPORT namespace winrt {

namespace Windows::System::Display {

template <typename D>
struct WINRT_EBO impl_IDisplayRequest
{
    void RequestActive() const;
    void RequestRelease() const;
};

struct IDisplayRequest :
    Windows::IInspectable,
    impl::consume<IDisplayRequest>
{
    IDisplayRequest(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDisplayRequest>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.SerialCommunication.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::SerialCommunication {

struct IErrorReceivedEventArgs;
struct IPinChangedEventArgs;
struct ISerialDevice;
struct ISerialDeviceStatics;
struct ErrorReceivedEventArgs;
struct PinChangedEventArgs;
struct SerialDevice;

}

namespace Windows::Devices::SerialCommunication {

struct IErrorReceivedEventArgs;
struct IPinChangedEventArgs;
struct ISerialDevice;
struct ISerialDeviceStatics;
struct ErrorReceivedEventArgs;
struct PinChangedEventArgs;
struct SerialDevice;

}

namespace Windows::Devices::SerialCommunication {

enum class SerialError
{
    Frame = 0,
    BufferOverrun = 1,
    ReceiveFull = 2,
    ReceiveParity = 3,
    TransmitFull = 4,
};

enum class SerialHandshake
{
    None = 0,
    RequestToSend = 1,
    XOnXOff = 2,
    RequestToSendXOnXOff = 3,
};

enum class SerialParity
{
    None = 0,
    Odd = 1,
    Even = 2,
    Mark = 3,
    Space = 4,
};

enum class SerialPinChange
{
    BreakSignal = 0,
    CarrierDetect = 1,
    ClearToSend = 2,
    DataSetReady = 3,
    RingIndicator = 4,
};

enum class SerialStopBitCount
{
    One = 0,
    OnePointFive = 1,
    Two = 2,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.AppExtensions.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.ApplicationModel.AppExtensions.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::ApplicationModel::AppExtensions {

struct WINRT_EBO AppExtension :
    Windows::ApplicationModel::AppExtensions::IAppExtension
{
    AppExtension(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppExtensionCatalog :
    Windows::ApplicationModel::AppExtensions::IAppExtensionCatalog
{
    AppExtensionCatalog(std::nullptr_t) noexcept {}
    static Windows::ApplicationModel::AppExtensions::AppExtensionCatalog Open(hstring_ref appExtensionName);
};

struct WINRT_EBO AppExtensionPackageInstalledEventArgs :
    Windows::ApplicationModel::AppExtensions::IAppExtensionPackageInstalledEventArgs
{
    AppExtensionPackageInstalledEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppExtensionPackageStatusChangedEventArgs :
    Windows::ApplicationModel::AppExtensions::IAppExtensionPackageStatusChangedEventArgs
{
    AppExtensionPackageStatusChangedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppExtensionPackageUninstallingEventArgs :
    Windows::ApplicationModel::AppExtensions::IAppExtensionPackageUninstallingEventArgs
{
    AppExtensionPackageUninstallingEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppExtensionPackageUpdatedEventArgs :
    Windows::ApplicationModel::AppExtensions::IAppExtensionPackageUpdatedEventArgs
{
    AppExtensionPackageUpdatedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppExtensionPackageUpdatingEventArgs :
    Windows::ApplicationModel::AppExtensions::IAppExtensionPackageUpdatingEventArgs
{
    AppExtensionPackageUpdatingEventArgs(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Data.Json.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Data.Json.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Data::Json {

struct WINRT_EBO JsonArray :
    Windows::Data::Json::IJsonArray,
    impl::require<JsonArray, Windows::Foundation::IStringable, Windows::Foundation::Collections::IVector<Windows::Data::Json::IJsonValue>, Windows::Foundation::Collections::IIterable<Windows::Data::Json::IJsonValue>>
{
    JsonArray(std::nullptr_t) noexcept {}
    JsonArray();
    static Windows::Data::Json::JsonArray Parse(hstring_ref input);
    static bool TryParse(hstring_ref input, Windows::Data::Json::JsonArray & result);
};

struct JsonError
{
    JsonError() = delete;
    static Windows::Data::Json::JsonErrorStatus GetJsonStatus(int32_t hresult);
};

struct WINRT_EBO JsonObject :
    Windows::Data::Json::IJsonObject,
    impl::require<JsonObject, Windows::Foundation::IStringable, Windows::Data::Json::IJsonObjectWithDefaultValues, Windows::Foundation::Collections::IMap<hstring, Windows::Data::Json::IJsonValue>, Windows::Foundation::Collections::IIterable<Windows::Foundation::Collections::IKeyValuePair<hstring, Windows::Data::Json::IJsonValue>>>
{
    JsonObject(std::nullptr_t) noexcept {}
    JsonObject();
    using impl_IJsonObject::GetNamedArray;
    using impl_IJsonObject::GetNamedBoolean;
    using impl_IJsonObject::GetNamedNumber;
    using impl_IJsonObject::GetNamedObject;
    using impl_IJsonObject::GetNamedString;
    using impl_IJsonObject::GetNamedValue;
    using impl_IJsonObjectWithDefaultValues::GetNamedArray;
    using impl_IJsonObjectWithDefaultValues::GetNamedBoolean;
    using impl_IJsonObjectWithDefaultValues::GetNamedNumber;
    using impl_IJsonObjectWithDefaultValues::GetNamedObject;
    using impl_IJsonObjectWithDefaultValues::GetNamedString;
    using impl_IJsonObjectWithDefaultValues::GetNamedValue;
    static Windows::Data::Json::JsonObject Parse(hstring_ref input);
    static bool TryParse(hstring_ref input, Windows::Data::Json::JsonObject & result);
};

struct WINRT_EBO JsonValue :
    Windows::Data::Json::IJsonValue,
    impl::require<JsonValue, Windows::Foundation::IStringable>
{
    JsonValue(std::nullptr_t) noexcept {}
    static Windows::Data::Json::JsonValue Parse(hstring_ref input);
    static bool TryParse(hstring_ref input, Windows::Data::Json::JsonValue & result);
    static Windows::Data::Json::JsonValue CreateBooleanValue(bool input);
    static Windows::Data::Json::JsonValue CreateNumberValue(double input);
    static Windows::Data::Json::JsonValue CreateStringValue(hstring_ref input);
    static Windows::Data::Json::JsonValue CreateNullValue();
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.Casting.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Media.Casting.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Media::Casting {

struct WINRT_EBO CastingConnection :
    Windows::Media::Casting::ICastingConnection
{
    CastingConnection(std::nullptr_t) noexcept {}
};

struct WINRT_EBO CastingConnectionErrorOccurredEventArgs :
    Windows::Media::Casting::ICastingConnectionErrorOccurredEventArgs
{
    CastingConnectionErrorOccurredEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO CastingDevice :
    Windows::Media::Casting::ICastingDevice
{
    CastingDevice(std::nullptr_t) noexcept {}
    static hstring GetDeviceSelector(Windows::Media::Casting::CastingPlaybackTypes type);
    static Windows::Foundation::IAsyncOperation<hstring> GetDeviceSelectorFromCastingSourceAsync(const Windows::Media::Casting::CastingSource & castingSource);
    static Windows::Foundation::IAsyncOperation<Windows::Media::Casting::CastingDevice> FromIdAsync(hstring_ref value);
    static Windows::Foundation::IAsyncOperation<bool> DeviceInfoSupportsCastingAsync(const Windows::Devices::Enumeration::DeviceInformation & device);
};

struct WINRT_EBO CastingDevicePicker :
    Windows::Media::Casting::ICastingDevicePicker
{
    CastingDevicePicker(std::nullptr_t) noexcept {}
    CastingDevicePicker();
};

struct WINRT_EBO CastingDevicePickerFilter :
    Windows::Media::Casting::ICastingDevicePickerFilter
{
    CastingDevicePickerFilter(std::nullptr_t) noexcept {}
};

struct WINRT_EBO CastingDeviceSelectedEventArgs :
    Windows::Media::Casting::ICastingDeviceSelectedEventArgs
{
    CastingDeviceSelectedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO CastingSource :
    Windows::Media::Casting::ICastingSource
{
    CastingSource(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Printing.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.UI.Xaml.Printing.0.h"
#include "Windows.Graphics.Printing.0.h"
#include "Windows.UI.Xaml.0.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Xaml::Printing {

struct __declspec(uuid("d4b57970-57a0-4209-847c-c093b54bc729")) __declspec(novtable) AddPagesEventHandler : IUnknown
{
    virtual HRESULT __stdcall abi_Invoke(Windows::IInspectable * sender, Windows::UI::Xaml::Printing::IAddPagesEventArgs * e) = 0;
};

struct __declspec(uuid("ccb3e9ed-9c11-4e50-ab49-e98086bbfdef")) __declspec(novtable) GetPreviewPageEventHandler : IUnknown
{
    virtual HRESULT __stdcall abi_Invoke(Windows::IInspectable * sender, Windows::UI::Xaml::Printing::IGetPreviewPageEventArgs * e) = 0;
};

struct __declspec(uuid("e2e52be5-056c-4420-9795-cb3526ce0c20")) __declspec(novtable) IAddPagesEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_PrintTaskOptions(Windows::Graphics::Printing::IPrintTaskOptionsCore ** value) = 0;
};

struct __declspec(uuid("a43d703d-dea9-4df6-a7ed-35049cd485c7")) __declspec(novtable) IGetPreviewPageEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_PageNumber(int32_t * value) = 0;
};

struct __declspec(uuid("ed945fd6-79ab-42b7-930a-3d6e09011d21")) __declspec(novtable) IPaginateEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_PrintTaskOptions(Windows::Graphics::Printing::IPrintTaskOptionsCore ** value) = 0;
    virtual HRESULT __stdcall get_CurrentPreviewPageNumber(int32_t * value) = 0;
};

struct __declspec(uuid("e44327c3-a999-485b-b1d8-72dc517821e6")) __declspec(novtable) IPrintDocument : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DocumentSource(Windows::Graphics::Printing::IPrintDocumentSource ** value) = 0;
    virtual HRESULT __stdcall add_Paginate(Windows::UI::Xaml::Printing::PaginateEventHandler * value, event_token * token) = 0;
    virtual HRESULT __stdcall remove_Paginate(event_token token) = 0;
    virtual HRESULT __stdcall add_GetPreviewPage(Windows::UI::Xaml::Printing::GetPreviewPageEventHandler * value, event_token * token) = 0;
    virtual HRESULT __stdcall remove_GetPreviewPage(event_token token) = 0;
    virtual HRESULT __stdcall add_AddPages(Windows::UI::Xaml::Printing::AddPagesEventHandler * value, event_token * token) = 0;
    virtual HRESULT __stdcall remove_AddPages(event_token token) = 0;
    virtual HRESULT __stdcall abi_AddPage(Windows::UI::Xaml::IUIElement * pageVisual) = 0;
    virtual HRESULT __stdcall abi_AddPagesComplete() = 0;
    virtual HRESULT __stdcall abi_SetPreviewPageCount(int32_t count, winrt::Windows::UI::Xaml::Printing::PreviewPageCountType type) = 0;
    virtual HRESULT __stdcall abi_SetPreviewPage(int32_t pageNumber, Windows::UI::Xaml::IUIElement * pageVisual) = 0;
    virtual HRESULT __stdcall abi_InvalidatePreview() = 0;
};

struct __declspec(uuid("fb87b18f-2606-4a2f-99d4-a7cdbc35d7c7")) __declspec(novtable) IPrintDocumentFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateInstance(Windows::IInspectable * outer, Windows::IInspectable ** inner, Windows::UI::Xaml::Printing::IPrintDocument ** instance) = 0;
};

struct __declspec(uuid("fd970a3c-b152-49e0-a6bd-6aa6477e43c7")) __declspec(novtable) IPrintDocumentStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DocumentSourceProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
};

struct __declspec(uuid("0cc05b61-811b-4a32-9965-13eb78dbb01b")) __declspec(novtable) PaginateEventHandler : IUnknown
{
    virtual HRESULT __stdcall abi_Invoke(Windows::IInspectable * sender, Windows::UI::Xaml::Printing::IPaginateEventArgs * e) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::UI::Xaml::Printing::AddPagesEventArgs> { using default_interface = Windows::UI::Xaml::Printing::IAddPagesEventArgs; };
template <> struct traits<Windows::UI::Xaml::Printing::GetPreviewPageEventArgs> { using default_interface = Windows::UI::Xaml::Printing::IGetPreviewPageEventArgs; };
template <> struct traits<Windows::UI::Xaml::Printing::PaginateEventArgs> { using default_interface = Windows::UI::Xaml::Printing::IPaginateEventArgs; };
template <> struct traits<Windows::UI::Xaml::Printing::PrintDocument> { using default_interface = Windows::UI::Xaml::Printing::IPrintDocument; };

}

namespace Windows::UI::Xaml::Printing {

template <typename T> struct impl_IAddPagesEventArgs;
template <typename T> struct impl_IGetPreviewPageEventArgs;
template <typename T> struct impl_IPaginateEventArgs;
template <typename T> struct impl_IPrintDocument;
template <typename T> struct impl_IPrintDocumentFactory;
template <typename T> struct impl_IPrintDocumentStatics;
template <typename T> struct impl_AddPagesEventHandler;
template <typename T> struct impl_GetPreviewPageEventHandler;
template <typename T> struct impl_PaginateEventHandler;

}

namespace impl {

template <> struct traits<Windows::UI::Xaml::Printing::AddPagesEventHandler>
{
    using abi = ABI::Windows::UI::Xaml::Printing::AddPagesEventHandler;
};

template <> struct traits<Windows::UI::Xaml::Printing::GetPreviewPageEventHandler>
{
    using abi = ABI::Windows::UI::Xaml::Printing::GetPreviewPageEventHandler;
};

template <> struct traits<Windows::UI::Xaml::Printing::IAddPagesEventArgs>
{
    using abi = ABI::Windows::UI::Xaml::Printing::IAddPagesEventArgs;
    template <typename D> using consume = Windows::UI::Xaml::Printing::impl_IAddPagesEventArgs<D>;
};

template <> struct traits<Windows::UI::Xaml::Printing::IGetPreviewPageEventArgs>
{
    using abi = ABI::Windows::UI::Xaml::Printing::IGetPreviewPageEventArgs;
    template <typename D> using consume = Windows::UI::Xaml::Printing::impl_IGetPreviewPageEventArgs<D>;
};

template <> struct traits<Windows::UI::Xaml::Printing::IPaginateEventArgs>
{
    using abi = ABI::Windows::UI::Xaml::Printing::IPaginateEventArgs;
    template <typename D> using consume = Windows::UI::Xaml::Printing::impl_IPaginateEventArgs<D>;
};

template <> struct traits<Windows::UI::Xaml::Printing::IPrintDocument>
{
    using abi = ABI::Windows::UI::Xaml::Printing::IPrintDocument;
    template <typename D> using consume = Windows::UI::Xaml::Printing::impl_IPrintDocument<D>;
};

template <> struct traits<Windows::UI::Xaml::Printing::IPrintDocumentFactory>
{
    using abi = ABI::Windows::UI::Xaml::Printing::IPrintDocumentFactory;
    template <typename D> using consume = Windows::UI::Xaml::Printing::impl_IPrintDocumentFactory<D>;
};

template <> struct traits<Windows::UI::Xaml::Printing::IPrintDocumentStatics>
{
    using abi = ABI::Windows::UI::Xaml::Printing::IPrintDocumentStatics;
    template <typename D> using consume = Windows::UI::Xaml::Printing::impl_IPrintDocumentStatics<D>;
};

template <> struct traits<Windows::UI::Xaml::Printing::PaginateEventHandler>
{
    using abi = ABI::Windows::UI::Xaml::Printing::PaginateEventHandler;
};

template <> struct traits<Windows::UI::Xaml::Printing::AddPagesEventArgs>
{
    using abi = ABI::Windows::UI::Xaml::Printing::AddPagesEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Xaml.Printing.AddPagesEventArgs"; }
};

template <> struct traits<Windows::UI::Xaml::Printing::GetPreviewPageEventArgs>
{
    using abi = ABI::Windows::UI::Xaml::Printing::GetPreviewPageEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Xaml.Printing.GetPreviewPageEventArgs"; }
};

template <> struct traits<Windows::UI::Xaml::Printing::PaginateEventArgs>
{
    using abi = ABI::Windows::UI::Xaml::Printing::PaginateEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Xaml.Printing.PaginateEventArgs"; }
};

template <> struct traits<Windows::UI::Xaml::Printing::PrintDocument>
{
    using abi = ABI::Windows::UI::Xaml::Printing::PrintDocument;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Xaml.Printing.PrintDocument"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.Protection.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Media.Protection.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Foundation.Collections.0.h"
#include "Windows.Media.Playback.0.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Media::Protection {

struct __declspec(uuid("95da643c-6db9-424b-86ca-091af432081c")) __declspec(novtable) ComponentLoadFailedEventHandler : IUnknown
{
    virtual HRESULT __stdcall abi_Invoke(Windows::Media::Protection::IMediaProtectionManager * sender, Windows::Media::Protection::IComponentLoadFailedEventArgs * e) = 0;
};

struct __declspec(uuid("95972e93-7746-417e-8495-f031bbc5862c")) __declspec(novtable) IComponentLoadFailedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Information(Windows::Media::Protection::IRevocationAndRenewalInformation ** value) = 0;
    virtual HRESULT __stdcall get_Completion(Windows::Media::Protection::IMediaProtectionServiceCompletion ** value) = 0;
};

struct __declspec(uuid("6ffbcd67-b795-48c5-8b7b-a7c4efe202e3")) __declspec(novtable) IComponentRenewalStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_RenewSystemComponentsAsync(Windows::Media::Protection::IRevocationAndRenewalInformation * information, Windows::Foundation::IAsyncOperationWithProgress<winrt::Windows::Media::Protection::RenewalStatus, uint32_t> ** operation) = 0;
};

struct __declspec(uuid("718845e9-64d7-426d-809b-1be461941a2a")) __declspec(novtable) IHdcpSession : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_IsEffectiveProtectionAtLeast(winrt::Windows::Media::Protection::HdcpProtection protection, bool * value) = 0;
    virtual HRESULT __stdcall abi_GetEffectiveProtection(Windows::Foundation::IReference<winrt::Windows::Media::Protection::HdcpProtection> ** value) = 0;
    virtual HRESULT __stdcall abi_SetDesiredMinProtectionAsync(winrt::Windows::Media::Protection::HdcpProtection protection, Windows::Foundation::IAsyncOperation<winrt::Windows::Media::Protection::HdcpSetProtectionResult> ** value) = 0;
    virtual HRESULT __stdcall add_ProtectionChanged(Windows::Foundation::TypedEventHandler<Windows::Media::Protection::HdcpSession, Windows::IInspectable> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ProtectionChanged(event_token token) = 0;
};

struct __declspec(uuid("45694947-c741-434b-a79e-474c12d93d2f")) __declspec(novtable) IMediaProtectionManager : Windows::IInspectable
{
    virtual HRESULT __stdcall add_ServiceRequested(Windows::Media::Protection::ServiceRequestedEventHandler * handler, event_token * cookie) = 0;
    virtual HRESULT __stdcall remove_ServiceRequested(event_token cookie) = 0;
    virtual HRESULT __stdcall add_RebootNeeded(Windows::Media::Protection::RebootNeededEventHandler * handler, event_token * cookie) = 0;
    virtual HRESULT __stdcall remove_RebootNeeded(event_token cookie) = 0;
    virtual HRESULT __stdcall add_ComponentLoadFailed(Windows::Media::Protection::ComponentLoadFailedEventHandler * handler, event_token * cookie) = 0;
    virtual HRESULT __stdcall remove_ComponentLoadFailed(event_token cookie) = 0;
    virtual HRESULT __stdcall get_Properties(Windows::Foundation::Collections::IPropertySet ** value) = 0;
};

struct __declspec(uuid("0c111226-7b26-4d31-95bb-9c1b08ef7fc0")) __declspec(novtable) IMediaProtectionPMPServer : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Properties(Windows::Foundation::Collections::IPropertySet ** ppProperties) = 0;
};

struct __declspec(uuid("602c8e5e-f7d2-487e-af91-dbc4252b2182")) __declspec(novtable) IMediaProtectionPMPServerFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreatePMPServer(Windows::Foundation::Collections::IPropertySet * pProperties, Windows::Media::Protection::IMediaProtectionPMPServer ** ppObject) = 0;
};

struct __declspec(uuid("8b5cca18-cfd5-44ee-a2ed-df76010c14b5")) __declspec(novtable) IMediaProtectionServiceCompletion : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Complete(bool success) = 0;
};

struct __declspec(uuid("b1de0ea6-2094-478d-87a4-8b95200f85c6")) __declspec(novtable) IMediaProtectionServiceRequest : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ProtectionSystem(GUID * system) = 0;
    virtual HRESULT __stdcall get_Type(GUID * type) = 0;
};

struct __declspec(uuid("c7ac5d7e-7480-4d29-a464-7bcd913dd8e4")) __declspec(novtable) IProtectionCapabilities : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_IsTypeSupported(hstring type, hstring keySystem, winrt::Windows::Media::Protection::ProtectionCapabilityResult * value) = 0;
};

struct __declspec(uuid("f3a1937b-2501-439e-a6e7-6fc95e175fcf")) __declspec(novtable) IRevocationAndRenewalInformation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Items(Windows::Foundation::Collections::IVector<Windows::Media::Protection::RevocationAndRenewalItem> ** items) = 0;
};

struct __declspec(uuid("3099c20c-3cf0-49ea-902d-caf32d2dde2c")) __declspec(novtable) IRevocationAndRenewalItem : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Reasons(winrt::Windows::Media::Protection::RevocationAndRenewalReasons * reasons) = 0;
    virtual HRESULT __stdcall get_HeaderHash(hstring * value) = 0;
    virtual HRESULT __stdcall get_PublicKeyHash(hstring * value) = 0;
    virtual HRESULT __stdcall get_Name(hstring * name) = 0;
    virtual HRESULT __stdcall get_RenewalId(hstring * value) = 0;
};

struct __declspec(uuid("34283baf-abb4-4fc1-bd89-93f106573a49")) __declspec(novtable) IServiceRequestedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Request(Windows::Media::Protection::IMediaProtectionServiceRequest ** value) = 0;
    virtual HRESULT __stdcall get_Completion(Windows::Media::Protection::IMediaProtectionServiceCompletion ** value) = 0;
};

struct __declspec(uuid("553c69d6-fafe-4128-8dfa-130e398a13a7")) __declspec(novtable) IServiceRequestedEventArgs2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_MediaPlaybackItem(Windows::Media::Playback::IMediaPlaybackItem ** value) = 0;
};

struct __declspec(uuid("64e12a45-973b-4a3a-b260-91898a49a82c")) __declspec(novtable) RebootNeededEventHandler : IUnknown
{
    virtual HRESULT __stdcall abi_Invoke(Windows::Media::Protection::IMediaProtectionManager * sender) = 0;
};

struct __declspec(uuid("d2d690ba-cac9-48e1-95c0-d38495a84055")) __declspec(novtable) ServiceRequestedEventHandler : IUnknown
{
    virtual HRESULT __stdcall abi_Invoke(Windows::Media::Protection::IMediaProtectionManager * sender, Windows::Media::Protection::IServiceRequestedEventArgs * e) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Media::Protection::ComponentLoadFailedEventArgs> { using default_interface = Windows::Media::Protection::IComponentLoadFailedEventArgs; };
template <> struct traits<Windows::Media::Protection::HdcpSession> { using default_interface = Windows::Media::Protection::IHdcpSession; };
template <> struct traits<Windows::Media::Protection::MediaProtectionManager> { using default_interface = Windows::Media::Protection::IMediaProtectionManager; };
template <> struct traits<Windows::Media::Protection::MediaProtectionPMPServer> { using default_interface = Windows::Media::Protection::IMediaProtectionPMPServer; };
template <> struct traits<Windows::Media::Protection::MediaProtectionServiceCompletion> { using default_interface = Windows::Media::Protection::IMediaProtectionServiceCompletion; };
template <> struct traits<Windows::Media::Protection::ProtectionCapabilities> { using default_interface = Windows::Media::Protection::IProtectionCapabilities; };
template <> struct traits<Windows::Media::Protection::RevocationAndRenewalInformation> { using default_interface = Windows::Media::Protection::IRevocationAndRenewalInformation; };
template <> struct traits<Windows::Media::Protection::RevocationAndRenewalItem> { using default_interface = Windows::Media::Protection::IRevocationAndRenewalItem; };
template <> struct traits<Windows::Media::Protection::ServiceRequestedEventArgs> { using default_interface = Windows::Media::Protection::IServiceRequestedEventArgs; };

}

namespace Windows::Media::Protection {

template <typename T> struct impl_IComponentLoadFailedEventArgs;
template <typename T> struct impl_IComponentRenewalStatics;
template <typename T> struct impl_IHdcpSession;
template <typename T> struct impl_IMediaProtectionManager;
template <typename T> struct impl_IMediaProtectionPMPServer;
template <typename T> struct impl_IMediaProtectionPMPServerFactory;
template <typename T> struct impl_IMediaProtectionServiceCompletion;
template <typename T> struct impl_IMediaProtectionServiceRequest;
template <typename T> struct impl_IProtectionCapabilities;
template <typename T> struct impl_IRevocationAndRenewalInformation;
template <typename T> struct impl_IRevocationAndRenewalItem;
template <typename T> struct impl_IServiceRequestedEventArgs;
template <typename T> struct impl_IServiceRequestedEventArgs2;
template <typename T> struct impl_ComponentLoadFailedEventHandler;
template <typename T> struct impl_RebootNeededEventHandler;
template <typename T> struct impl_ServiceRequestedEventHandler;

}

namespace impl {

template <> struct traits<Windows::Media::Protection::ComponentLoadFailedEventHandler>
{
    using abi = ABI::Windows::Media::Protection::ComponentLoadFailedEventHandler;
};

template <> struct traits<Windows::Media::Protection::IComponentLoadFailedEventArgs>
{
    using abi = ABI::Windows::Media::Protection::IComponentLoadFailedEventArgs;
    template <typename D> using consume = Windows::Media::Protection::impl_IComponentLoadFailedEventArgs<D>;
};

template <> struct traits<Windows::Media::Protection::IComponentRenewalStatics>
{
    using abi = ABI::Windows::Media::Protection::IComponentRenewalStatics;
    template <typename D> using consume = Windows::Media::Protection::impl_IComponentRenewalStatics<D>;
};

template <> struct traits<Windows::Media::Protection::IHdcpSession>
{
    using abi = ABI::Windows::Media::Protection::IHdcpSession;
    template <typename D> using consume = Windows::Media::Protection::impl_IHdcpSession<D>;
};

template <> struct traits<Windows::Media::Protection::IMediaProtectionManager>
{
    using abi = ABI::Windows::Media::Protection::IMediaProtectionManager;
    template <typename D> using consume = Windows::Media::Protection::impl_IMediaProtectionManager<D>;
};

template <> struct traits<Windows::Media::Protection::IMediaProtectionPMPServer>
{
    using abi = ABI::Windows::Media::Protection::IMediaProtectionPMPServer;
    template <typename D> using consume = Windows::Media::Protection::impl_IMediaProtectionPMPServer<D>;
};

template <> struct traits<Windows::Media::Protection::IMediaProtectionPMPServerFactory>
{
    using abi = ABI::Windows::Media::Protection::IMediaProtectionPMPServerFactory;
    template <typename D> using consume = Windows::Media::Protection::impl_IMediaProtectionPMPServerFactory<D>;
};

template <> struct traits<Windows::Media::Protection::IMediaProtectionServiceCompletion>
{
    using abi = ABI::Windows::Media::Protection::IMediaProtectionServiceCompletion;
    template <typename D> using consume = Windows::Media::Protection::impl_IMediaProtectionServiceCompletion<D>;
};

template <> struct traits<Windows::Media::Protection::IMediaProtectionServiceRequest>
{
    using abi = ABI::Windows::Media::Protection::IMediaProtectionServiceRequest;
    template <typename D> using consume = Windows::Media::Protection::impl_IMediaProtectionServiceRequest<D>;
};

template <> struct traits<Windows::Media::Protection::IProtectionCapabilities>
{
    using abi = ABI::Windows::Media::Protection::IProtectionCapabilities;
    template <typename D> using consume = Windows::Media::Protection::impl_IProtectionCapabilities<D>;
};

template <> struct traits<Windows::Media::Protection::IRevocationAndRenewalInformation>
{
    using abi = ABI::Windows::Media::Protection::IRevocationAndRenewalInformation;
    template <typename D> using consume = Windows::Media::Protection::impl_IRevocationAndRenewalInformation<D>;
};

template <> struct traits<Windows::Media::Protection::IRevocationAndRenewalItem>
{
    using abi = ABI::Windows::Media::Protection::IRevocationAndRenewalItem;
    template <typename D> using consume = Windows::Media::Protection::impl_IRevocationAndRenewalItem<D>;
};

template <> struct traits<Windows::Media::Protection::IServiceRequestedEventArgs>
{
    using abi = ABI::Windows::Media::Protection::IServiceRequestedEventArgs;
    template <typename D> using consume = Windows::Media::Protection::impl_IServiceRequestedEventArgs<D>;
};

template <> struct traits<Windows::Media::Protection::IServiceRequestedEventArgs2>
{
    using abi = ABI::Windows::Media::Protection::IServiceRequestedEventArgs2;
    template <typename D> using consume = Windows::Media::Protection::impl_IServiceRequestedEventArgs2<D>;
};

template <> struct traits<Windows::Media::Protection::RebootNeededEventHandler>
{
    using abi = ABI::Windows::Media::Protection::RebootNeededEventHandler;
};

template <> struct traits<Windows::Media::Protection::ServiceRequestedEventHandler>
{
    using abi = ABI::Windows::Media::Protection::ServiceRequestedEventHandler;
};

template <> struct traits<Windows::Media::Protection::ComponentLoadFailedEventArgs>
{
    using abi = ABI::Windows::Media::Protection::ComponentLoadFailedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Protection.ComponentLoadFailedEventArgs"; }
};

template <> struct traits<Windows::Media::Protection::ComponentRenewal>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Protection.ComponentRenewal"; }
};

template <> struct traits<Windows::Media::Protection::HdcpSession>
{
    using abi = ABI::Windows::Media::Protection::HdcpSession;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Protection.HdcpSession"; }
};

template <> struct traits<Windows::Media::Protection::MediaProtectionManager>
{
    using abi = ABI::Windows::Media::Protection::MediaProtectionManager;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Protection.MediaProtectionManager"; }
};

template <> struct traits<Windows::Media::Protection::MediaProtectionPMPServer>
{
    using abi = ABI::Windows::Media::Protection::MediaProtectionPMPServer;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Protection.MediaProtectionPMPServer"; }
};

template <> struct traits<Windows::Media::Protection::MediaProtectionServiceCompletion>
{
    using abi = ABI::Windows::Media::Protection::MediaProtectionServiceCompletion;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Protection.MediaProtectionServiceCompletion"; }
};

template <> struct traits<Windows::Media::Protection::ProtectionCapabilities>
{
    using abi = ABI::Windows::Media::Protection::ProtectionCapabilities;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Protection.ProtectionCapabilities"; }
};

template <> struct traits<Windows::Media::Protection::RevocationAndRenewalInformation>
{
    using abi = ABI::Windows::Media::Protection::RevocationAndRenewalInformation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Protection.RevocationAndRenewalInformation"; }
};

template <> struct traits<Windows::Media::Protection::RevocationAndRenewalItem>
{
    using abi = ABI::Windows::Media::Protection::RevocationAndRenewalItem;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Protection.RevocationAndRenewalItem"; }
};

template <> struct traits<Windows::Media::Protection::ServiceRequestedEventArgs>
{
    using abi = ABI::Windows::Media::Protection::ServiceRequestedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Protection.ServiceRequestedEventArgs"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Activation.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.ApplicationModel.Activation.0.h"
#include "Windows.ApplicationModel.Appointments.AppointmentsProvider.0.h"
#include "Windows.ApplicationModel.Background.0.h"
#include "Windows.ApplicationModel.Calls.0.h"
#include "Windows.ApplicationModel.Contacts.0.h"
#include "Windows.ApplicationModel.Contacts.Provider.0.h"
#include "Windows.ApplicationModel.DataTransfer.ShareTarget.0.h"
#include "Windows.ApplicationModel.Search.0.h"
#include "Windows.ApplicationModel.UserDataAccounts.Provider.0.h"
#include "Windows.ApplicationModel.Wallet.0.h"
#include "Windows.Devices.Enumeration.0.h"
#include "Windows.Devices.Printers.Extensions.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Foundation.Collections.0.h"
#include "Windows.Media.SpeechRecognition.0.h"
#include "Windows.Security.Authentication.Web.0.h"
#include "Windows.Security.Authentication.Web.Provider.0.h"
#include "Windows.Storage.0.h"
#include "Windows.Storage.Pickers.Provider.0.h"
#include "Windows.Storage.Provider.0.h"
#include "Windows.Storage.Search.0.h"
#include "Windows.System.0.h"
#include "Windows.UI.ViewManagement.0.h"
#include "Windows.Foundation.1.h"
#include "Windows.Storage.1.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.UI.Notifications.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::ApplicationModel::Activation {

struct __declspec(uuid("cf651713-cd08-4fd8-b697-a281b6544e2e")) __declspec(novtable) IActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Kind(winrt::Windows::ApplicationModel::Activation::ActivationKind * value) = 0;
    virtual HRESULT __stdcall get_PreviousExecutionState(winrt::Windows::ApplicationModel::Activation::ApplicationExecutionState * value) = 0;
    virtual HRESULT __stdcall get_SplashScreen(Windows::ApplicationModel::Activation::ISplashScreen ** value) = 0;
};

struct __declspec(uuid("1cf09b9e-9962-4936-80ff-afc8e8ae5c8c")) __declspec(novtable) IActivatedEventArgsWithUser : Windows::IInspectable
{
    virtual HRESULT __stdcall get_User(Windows::System::IUser ** value) = 0;
};

struct __declspec(uuid("930cef4b-b829-40fc-88f4-8513e8a64738")) __declspec(novtable) IApplicationViewActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CurrentlyShownApplicationViewId(int32_t * value) = 0;
};

struct __declspec(uuid("3364c405-933c-4e7d-a034-500fb8dcd9f3")) __declspec(novtable) IAppointmentsProviderActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Verb(hstring * value) = 0;
};

struct __declspec(uuid("a2861367-cee5-4e4d-9ed7-41c34ec18b02")) __declspec(novtable) IAppointmentsProviderAddAppointmentActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AddAppointmentOperation(Windows::ApplicationModel::Appointments::AppointmentsProvider::IAddAppointmentOperation ** value) = 0;
};

struct __declspec(uuid("751f3ab8-0b8e-451c-9f15-966e699bac25")) __declspec(novtable) IAppointmentsProviderRemoveAppointmentActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_RemoveAppointmentOperation(Windows::ApplicationModel::Appointments::AppointmentsProvider::IRemoveAppointmentOperation ** value) = 0;
};

struct __declspec(uuid("1551b7d4-a981-4067-8a62-0524e4ade121")) __declspec(novtable) IAppointmentsProviderReplaceAppointmentActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ReplaceAppointmentOperation(Windows::ApplicationModel::Appointments::AppointmentsProvider::IReplaceAppointmentOperation ** value) = 0;
};

struct __declspec(uuid("3958f065-9841-4ca5-999b-885198b9ef2a")) __declspec(novtable) IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_InstanceStartDate(Windows::Foundation::IReference<Windows::Foundation::DateTime> ** value) = 0;
    virtual HRESULT __stdcall get_LocalId(hstring * value) = 0;
    virtual HRESULT __stdcall get_RoamingId(hstring * value) = 0;
};

struct __declspec(uuid("9baeaba6-0e0b-49aa-babc-12b1dc774986")) __declspec(novtable) IAppointmentsProviderShowTimeFrameActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_TimeToShow(Windows::Foundation::DateTime * value) = 0;
    virtual HRESULT __stdcall get_Duration(Windows::Foundation::TimeSpan * value) = 0;
};

struct __declspec(uuid("ab14bee0-e760-440e-a91c-44796de3a92d")) __declspec(novtable) IBackgroundActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_TaskInstance(Windows::ApplicationModel::Background::IBackgroundTaskInstance ** value) = 0;
};

struct __declspec(uuid("d06eb1c7-3805-4ecb-b757-6cf15e26fef3")) __declspec(novtable) ICachedFileUpdaterActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CachedFileUpdaterUI(Windows::Storage::Provider::ICachedFileUpdaterUI ** value) = 0;
};

struct __declspec(uuid("fb67a508-2dad-490a-9170-dca036eb114b")) __declspec(novtable) ICameraSettingsActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_VideoDeviceController(Windows::IInspectable ** value) = 0;
    virtual HRESULT __stdcall get_VideoDeviceExtension(Windows::IInspectable ** value) = 0;
};

struct __declspec(uuid("d627a1c4-c025-4c41-9def-f1eafad075e7")) __declspec(novtable) IContactActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Verb(hstring * value) = 0;
};

struct __declspec(uuid("c2df14c7-30eb-41c6-b3bc-5b1694f9dab3")) __declspec(novtable) IContactCallActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServiceId(hstring * value) = 0;
    virtual HRESULT __stdcall get_ServiceUserId(hstring * value) = 0;
    virtual HRESULT __stdcall get_Contact(Windows::ApplicationModel::Contacts::IContact ** value) = 0;
};

struct __declspec(uuid("b32bf870-eee7-4ad2-aaf1-a87effcf00a4")) __declspec(novtable) IContactMapActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Address(Windows::ApplicationModel::Contacts::IContactAddress ** value) = 0;
    virtual HRESULT __stdcall get_Contact(Windows::ApplicationModel::Contacts::IContact ** value) = 0;
};

struct __declspec(uuid("de598db2-0e03-43b0-bf56-bcc40b3162df")) __declspec(novtable) IContactMessageActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServiceId(hstring * value) = 0;
    virtual HRESULT __stdcall get_ServiceUserId(hstring * value) = 0;
    virtual HRESULT __stdcall get_Contact(Windows::ApplicationModel::Contacts::IContact ** value) = 0;
};

struct __declspec(uuid("ce57aae7-6449-45a7-971f-d113be7a8936")) __declspec(novtable) IContactPickerActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ContactPickerUI(Windows::ApplicationModel::Contacts::Provider::IContactPickerUI ** value) = 0;
};

struct __declspec(uuid("b35a3c67-f1e7-4655-ad6e-4857588f552f")) __declspec(novtable) IContactPostActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServiceId(hstring * value) = 0;
    virtual HRESULT __stdcall get_ServiceUserId(hstring * value) = 0;
    virtual HRESULT __stdcall get_Contact(Windows::ApplicationModel::Contacts::IContact ** value) = 0;
};

struct __declspec(uuid("61079db8-e3e7-4b4f-858d-5c63a96ef684")) __declspec(novtable) IContactVideoCallActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServiceId(hstring * value) = 0;
    virtual HRESULT __stdcall get_ServiceUserId(hstring * value) = 0;
    virtual HRESULT __stdcall get_Contact(Windows::ApplicationModel::Contacts::IContact ** value) = 0;
};

struct __declspec(uuid("4580dca8-5750-4916-aa52-c0829521eb94")) __declspec(novtable) IContactsProviderActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Verb(hstring * value) = 0;
};

struct __declspec(uuid("e58106b5-155f-4a94-a742-c7e08f4e188c")) __declspec(novtable) IContinuationActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ContinuationData(Windows::Foundation::Collections::IPropertySet ** value) = 0;
};

struct __declspec(uuid("cd50b9a9-ce10-44d2-8234-c355a073ef33")) __declspec(novtable) IDeviceActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceInformationId(hstring * value) = 0;
    virtual HRESULT __stdcall get_Verb(hstring * value) = 0;
};

struct __declspec(uuid("eba0d1e4-ecc6-4148-94ed-f4b37ec05b3e")) __declspec(novtable) IDevicePairingActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceInformation(Windows::Devices::Enumeration::IDeviceInformation ** value) = 0;
};

struct __declspec(uuid("fb777ed7-85ee-456e-a44d-85d730e70aed")) __declspec(novtable) IDialReceiverActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AppName(hstring * value) = 0;
};

struct __declspec(uuid("bb2afc33-93b1-42ed-8b26-236dd9c78496")) __declspec(novtable) IFileActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Files(Windows::Foundation::Collections::IVectorView<Windows::Storage::IStorageItem> ** value) = 0;
    virtual HRESULT __stdcall get_Verb(hstring * value) = 0;
};

struct __declspec(uuid("2d60f06b-d25f-4d25-8653-e1c5e1108309")) __declspec(novtable) IFileActivatedEventArgsWithCallerPackageFamilyName : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CallerPackageFamilyName(hstring * value) = 0;
};

struct __declspec(uuid("433ba1a4-e1e2-48fd-b7fc-b5d6eee65033")) __declspec(novtable) IFileActivatedEventArgsWithNeighboringFiles : Windows::IInspectable
{
    virtual HRESULT __stdcall get_NeighboringFilesQuery(Windows::Storage::Search::IStorageFileQueryResult ** value) = 0;
};

struct __declspec(uuid("72827082-5525-4bf2-bc09-1f5095d4964d")) __declspec(novtable) IFileOpenPickerActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_FileOpenPickerUI(Windows::Storage::Pickers::Provider::IFileOpenPickerUI ** value) = 0;
};

struct __declspec(uuid("5e731f66-8d1f-45fb-af1d-73205c8fc7a1")) __declspec(novtable) IFileOpenPickerActivatedEventArgs2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CallerPackageFamilyName(hstring * value) = 0;
};

struct __declspec(uuid("f0fa3f3a-d4e8-4ad3-9c34-2308f32fcec9")) __declspec(novtable) IFileOpenPickerContinuationEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Files(Windows::Foundation::Collections::IVectorView<Windows::Storage::StorageFile> ** value) = 0;
};

struct __declspec(uuid("81c19cf1-74e6-4387-82eb-bb8fd64b4346")) __declspec(novtable) IFileSavePickerActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_FileSavePickerUI(Windows::Storage::Pickers::Provider::IFileSavePickerUI ** value) = 0;
};

struct __declspec(uuid("6b73fe13-2cf2-4d48-8cbc-af67d23f1ce7")) __declspec(novtable) IFileSavePickerActivatedEventArgs2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CallerPackageFamilyName(hstring * value) = 0;
    virtual HRESULT __stdcall get_EnterpriseId(hstring * value) = 0;
};

struct __declspec(uuid("2c846fe1-3bad-4f33-8c8b-e46fae824b4b")) __declspec(novtable) IFileSavePickerContinuationEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_File(Windows::Storage::IStorageFile ** value) = 0;
};

struct __declspec(uuid("51882366-9f4b-498f-beb0-42684f6e1c29")) __declspec(novtable) IFolderPickerContinuationEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Folder(Windows::Storage::IStorageFolder ** value) = 0;
};

struct __declspec(uuid("fbc93e26-a14a-4b4f-82b0-33bed920af52")) __declspec(novtable) ILaunchActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Arguments(hstring * value) = 0;
    virtual HRESULT __stdcall get_TileId(hstring * value) = 0;
};

struct __declspec(uuid("0fd37ebc-9dc9-46b5-9ace-bd95d4565345")) __declspec(novtable) ILaunchActivatedEventArgs2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_TileActivatedInfo(Windows::ApplicationModel::Activation::ITileActivatedInfo ** value) = 0;
};

struct __declspec(uuid("3ca77966-6108-4a41-8220-ee7d133c8532")) __declspec(novtable) ILockScreenActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Info(Windows::IInspectable ** value) = 0;
};

struct __declspec(uuid("06f37fbe-b5f2-448b-b13e-e328ac1c516a")) __declspec(novtable) ILockScreenCallActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CallUI(Windows::ApplicationModel::Calls::ILockScreenCallUI ** value) = 0;
};

struct __declspec(uuid("360defb9-a9d3-4984-a4ed-9ec734604921")) __declspec(novtable) IPickerReturnedActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_PickerOperationId(hstring * value) = 0;
};

struct __declspec(uuid("0c44717b-19f7-48d6-b046-cf22826eaa74")) __declspec(novtable) IPrelaunchActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_PrelaunchActivated(bool * value) = 0;
};

struct __declspec(uuid("3f57e78b-f2ac-4619-8302-ef855e1c9b90")) __declspec(novtable) IPrint3DWorkflowActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Workflow(Windows::Devices::Printers::Extensions::IPrint3DWorkflow ** value) = 0;
};

struct __declspec(uuid("ee30a0c9-ce56-4865-ba8e-8954ac271107")) __declspec(novtable) IPrintTaskSettingsActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Configuration(Windows::Devices::Printers::Extensions::IPrintTaskConfiguration ** value) = 0;
};

struct __declspec(uuid("6095f4dd-b7c0-46ab-81fe-d90f36d00d24")) __declspec(novtable) IProtocolActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Uri(Windows::Foundation::IUriRuntimeClass ** value) = 0;
};

struct __declspec(uuid("d84a0c12-5c8f-438c-83cb-c28fcc0b2fdb")) __declspec(novtable) IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CallerPackageFamilyName(hstring * value) = 0;
    virtual HRESULT __stdcall get_Data(Windows::Foundation::Collections::IPropertySet ** value) = 0;
};

struct __declspec(uuid("e75132c2-7ae7-4517-80ac-dbe8d7cc5b9c")) __declspec(novtable) IProtocolForResultsActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ProtocolForResultsOperation(Windows::System::IProtocolForResultsOperation ** value) = 0;
};

struct __declspec(uuid("e0b7ac81-bfc3-4344-a5da-19fd5a27baae")) __declspec(novtable) IRestrictedLaunchActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_SharedContext(Windows::IInspectable ** value) = 0;
};

struct __declspec(uuid("8cb36951-58c8-43e3-94bc-41d33f8b630e")) __declspec(novtable) ISearchActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_QueryText(hstring * value) = 0;
    virtual HRESULT __stdcall get_Language(hstring * value) = 0;
};

struct __declspec(uuid("c09f33da-08ab-4931-9b7c-451025f21f81")) __declspec(novtable) ISearchActivatedEventArgsWithLinguisticDetails : Windows::IInspectable
{
    virtual HRESULT __stdcall get_LinguisticDetails(Windows::ApplicationModel::Search::ISearchPaneQueryLinguisticDetails ** value) = 0;
};

struct __declspec(uuid("4bdaf9c8-cdb2-4acb-bfc3-6648563378ec")) __declspec(novtable) IShareTargetActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ShareOperation(Windows::ApplicationModel::DataTransfer::ShareTarget::IShareOperation ** value) = 0;
};

struct __declspec(uuid("ca4d975c-d4d6-43f0-97c0-0833c6391c24")) __declspec(novtable) ISplashScreen : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ImageLocation(Windows::Foundation::Rect * value) = 0;
    virtual HRESULT __stdcall add_Dismissed(Windows::Foundation::TypedEventHandler<Windows::ApplicationModel::Activation::SplashScreen, Windows::IInspectable> * handler, event_token * cookie) = 0;
    virtual HRESULT __stdcall remove_Dismissed(event_token cookie) = 0;
};

struct __declspec(uuid("80e4a3b1-3980-4f17-b738-89194e0b8f65")) __declspec(novtable) ITileActivatedInfo : Windows::IInspectable
{
    virtual HRESULT __stdcall get_RecentlyShownNotifications(Windows::Foundation::Collections::IVectorView<Windows::UI::Notifications::ShownTileNotification> ** value) = 0;
};

struct __declspec(uuid("92a86f82-5290-431d-be85-c4aaeeb8685f")) __declspec(novtable) IToastNotificationActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Argument(hstring * argument) = 0;
    virtual HRESULT __stdcall get_UserInput(Windows::Foundation::Collections::IPropertySet ** value) = 0;
};

struct __declspec(uuid("1bc9f723-8ef1-4a51-a63a-fe711eeab607")) __declspec(novtable) IUserDataAccountProviderActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Operation(Windows::ApplicationModel::UserDataAccounts::Provider::IUserDataAccountProviderOperation ** value) = 0;
};

struct __declspec(uuid("33f288a6-5c2c-4d27-bac7-7536088f1219")) __declspec(novtable) IViewSwitcherProvider : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ViewSwitcher(Windows::UI::ViewManagement::IActivationViewSwitcher ** value) = 0;
};

struct __declspec(uuid("ab92dcfd-8d43-4de6-9775-20704b581b00")) __declspec(novtable) IVoiceCommandActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Result(Windows::Media::SpeechRecognition::ISpeechRecognitionResult ** value) = 0;
};

struct __declspec(uuid("fcfc027b-1a1a-4d22-923f-ae6f45fa52d9")) __declspec(novtable) IWalletActionActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ItemId(hstring * value) = 0;
    virtual HRESULT __stdcall get_ActionKind(winrt::Windows::ApplicationModel::Wallet::WalletActionKind * value) = 0;
    virtual HRESULT __stdcall get_ActionId(hstring * value) = 0;
};

struct __declspec(uuid("72b71774-98ea-4ccf-9752-46d9051004f1")) __declspec(novtable) IWebAccountProviderActivatedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Operation(Windows::Security::Authentication::Web::Provider::IWebAccountProviderOperation ** value) = 0;
};

struct __declspec(uuid("75dda3d4-7714-453d-b7ff-b95e3a1709da")) __declspec(novtable) IWebAuthenticationBrokerContinuationEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_WebAuthenticationResult(Windows::Security::Authentication::Web::IWebAuthenticationResult ** result) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::BackgroundActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IBackgroundActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::DeviceActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::FileActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IFileActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::LaunchActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::SearchActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::ISearchActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::SplashScreen> { using default_interface = Windows::ApplicationModel::Activation::ISplashScreen; };
template <> struct traits<Windows::ApplicationModel::Activation::TileActivatedInfo> { using default_interface = Windows::ApplicationModel::Activation::ITileActivatedInfo; };
template <> struct traits<Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::UserDataAccountProviderActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IUserDataAccountProviderActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs; };
template <> struct traits<Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs> { using default_interface = Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs; };

}

namespace Windows::ApplicationModel::Activation {

template <typename T> struct impl_IActivatedEventArgs;
template <typename T> struct impl_IActivatedEventArgsWithUser;
template <typename T> struct impl_IApplicationViewActivatedEventArgs;
template <typename T> struct impl_IAppointmentsProviderActivatedEventArgs;
template <typename T> struct impl_IAppointmentsProviderAddAppointmentActivatedEventArgs;
template <typename T> struct impl_IAppointmentsProviderRemoveAppointmentActivatedEventArgs;
template <typename T> struct impl_IAppointmentsProviderReplaceAppointmentActivatedEventArgs;
template <typename T> struct impl_IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs;
template <typename T> struct impl_IAppointmentsProviderShowTimeFrameActivatedEventArgs;
template <typename T> struct impl_IBackgroundActivatedEventArgs;
template <typename T> struct impl_ICachedFileUpdaterActivatedEventArgs;
template <typename T> struct impl_ICameraSettingsActivatedEventArgs;
template <typename T> struct impl_IContactActivatedEventArgs;
template <typename T> struct impl_IContactCallActivatedEventArgs;
template <typename T> struct impl_IContactMapActivatedEventArgs;
template <typename T> struct impl_IContactMessageActivatedEventArgs;
template <typename T> struct impl_IContactPickerActivatedEventArgs;
template <typename T> struct impl_IContactPostActivatedEventArgs;
template <typename T> struct impl_IContactVideoCallActivatedEventArgs;
template <typename T> struct impl_IContactsProviderActivatedEventArgs;
template <typename T> struct impl_IContinuationActivatedEventArgs;
template <typename T> struct impl_IDeviceActivatedEventArgs;
template <typename T> struct impl_IDevicePairingActivatedEventArgs;
template <typename T> struct impl_IDialReceiverActivatedEventArgs;
template <typename T> struct impl_IFileActivatedEventArgs;
template <typename T> struct impl_IFileActivatedEventArgsWithCallerPackageFamilyName;
template <typename T> struct impl_IFileActivatedEventArgsWithNeighboringFiles;
template <typename T> struct impl_IFileOpenPickerActivatedEventArgs;
template <typename T> struct impl_IFileOpenPickerActivatedEventArgs2;
template <typename T> struct impl_IFileOpenPickerContinuationEventArgs;
template <typename T> struct impl_IFileSavePickerActivatedEventArgs;
template <typename T> struct impl_IFileSavePickerActivatedEventArgs2;
template <typename T> struct impl_IFileSavePickerContinuationEventArgs;
template <typename T> struct impl_IFolderPickerContinuationEventArgs;
template <typename T> struct impl_ILaunchActivatedEventArgs;
template <typename T> struct impl_ILaunchActivatedEventArgs2;
template <typename T> struct impl_ILockScreenActivatedEventArgs;
template <typename T> struct impl_ILockScreenCallActivatedEventArgs;
template <typename T> struct impl_IPickerReturnedActivatedEventArgs;
template <typename T> struct impl_IPrelaunchActivatedEventArgs;
template <typename T> struct impl_IPrint3DWorkflowActivatedEventArgs;
template <typename T> struct impl_IPrintTaskSettingsActivatedEventArgs;
template <typename T> struct impl_IProtocolActivatedEventArgs;
template <typename T> struct impl_IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData;
template <typename T> struct impl_IProtocolForResultsActivatedEventArgs;
template <typename T> struct impl_IRestrictedLaunchActivatedEventArgs;
template <typename T> struct impl_ISearchActivatedEventArgs;
template <typename T> struct impl_ISearchActivatedEventArgsWithLinguisticDetails;
template <typename T> struct impl_IShareTargetActivatedEventArgs;
template <typename T> struct impl_ISplashScreen;
template <typename T> struct impl_ITileActivatedInfo;
template <typename T> struct impl_IToastNotificationActivatedEventArgs;
template <typename T> struct impl_IUserDataAccountProviderActivatedEventArgs;
template <typename T> struct impl_IViewSwitcherProvider;
template <typename T> struct impl_IVoiceCommandActivatedEventArgs;
template <typename T> struct impl_IWalletActionActivatedEventArgs;
template <typename T> struct impl_IWebAccountProviderActivatedEventArgs;
template <typename T> struct impl_IWebAuthenticationBrokerContinuationEventArgs;

}

namespace impl {

template <> struct traits<Windows::ApplicationModel::Activation::IActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IActivatedEventArgsWithUser>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IActivatedEventArgsWithUser;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IActivatedEventArgsWithUser<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IApplicationViewActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IApplicationViewActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IAppointmentsProviderActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IAppointmentsProviderActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IAppointmentsProviderAddAppointmentActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IAppointmentsProviderAddAppointmentActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IAppointmentsProviderRemoveAppointmentActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IAppointmentsProviderRemoveAppointmentActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IAppointmentsProviderReplaceAppointmentActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IAppointmentsProviderReplaceAppointmentActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IAppointmentsProviderShowAppointmentDetailsActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IAppointmentsProviderShowTimeFrameActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IAppointmentsProviderShowTimeFrameActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IBackgroundActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IBackgroundActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IBackgroundActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ICachedFileUpdaterActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_ICachedFileUpdaterActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ICameraSettingsActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_ICameraSettingsActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IContactActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IContactActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IContactActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IContactCallActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IContactCallActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IContactMapActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IContactMapActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IContactMessageActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IContactMessageActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IContactPickerActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IContactPickerActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IContactPostActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IContactPostActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IContactVideoCallActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IContactVideoCallActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IContactsProviderActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IContactsProviderActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IContinuationActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IContinuationActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IDeviceActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IDeviceActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IDevicePairingActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IDevicePairingActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IDialReceiverActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IDialReceiverActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IFileActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IFileActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IFileActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithCallerPackageFamilyName;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IFileActivatedEventArgsWithCallerPackageFamilyName<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IFileActivatedEventArgsWithNeighboringFiles;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IFileActivatedEventArgsWithNeighboringFiles<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IFileOpenPickerActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IFileOpenPickerActivatedEventArgs2;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IFileOpenPickerActivatedEventArgs2<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IFileOpenPickerContinuationEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IFileOpenPickerContinuationEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IFileSavePickerActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IFileSavePickerActivatedEventArgs2;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IFileSavePickerActivatedEventArgs2<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IFileSavePickerContinuationEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IFileSavePickerContinuationEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IFolderPickerContinuationEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IFolderPickerContinuationEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_ILaunchActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs2>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ILaunchActivatedEventArgs2;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_ILaunchActivatedEventArgs2<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ILockScreenActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_ILockScreenActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ILockScreenCallActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_ILockScreenCallActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IPickerReturnedActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IPickerReturnedActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IPrelaunchActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IPrelaunchActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IPrint3DWorkflowActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IPrint3DWorkflowActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IPrintTaskSettingsActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IPrintTaskSettingsActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IProtocolActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IProtocolActivatedEventArgsWithCallerPackageFamilyNameAndData<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IProtocolForResultsActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IProtocolForResultsActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IRestrictedLaunchActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IRestrictedLaunchActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::ISearchActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ISearchActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_ISearchActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ISearchActivatedEventArgsWithLinguisticDetails;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_ISearchActivatedEventArgsWithLinguisticDetails<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IShareTargetActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IShareTargetActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::ISplashScreen>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ISplashScreen;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_ISplashScreen<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::ITileActivatedInfo>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ITileActivatedInfo;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_ITileActivatedInfo<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IToastNotificationActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IToastNotificationActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IUserDataAccountProviderActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IUserDataAccountProviderActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IUserDataAccountProviderActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IViewSwitcherProvider>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IViewSwitcherProvider;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IViewSwitcherProvider<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IVoiceCommandActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IVoiceCommandActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IWalletActionActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IWalletActionActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IWebAccountProviderActivatedEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IWebAccountProviderActivatedEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::IWebAuthenticationBrokerContinuationEventArgs;
    template <typename D> using consume = Windows::ApplicationModel::Activation::impl_IWebAuthenticationBrokerContinuationEventArgs<D>;
};

template <> struct traits<Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::AppointmentsProviderAddAppointmentActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.AppointmentsProviderAddAppointmentActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::AppointmentsProviderRemoveAppointmentActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.AppointmentsProviderRemoveAppointmentActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::AppointmentsProviderReplaceAppointmentActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.AppointmentsProviderReplaceAppointmentActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::AppointmentsProviderShowAppointmentDetailsActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.AppointmentsProviderShowAppointmentDetailsActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::AppointmentsProviderShowTimeFrameActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.AppointmentsProviderShowTimeFrameActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::BackgroundActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::BackgroundActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.BackgroundActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::CachedFileUpdaterActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.CachedFileUpdaterActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::CameraSettingsActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.CameraSettingsActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ContactCallActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.ContactCallActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ContactMapActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.ContactMapActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ContactMessageActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.ContactMessageActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ContactPickerActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.ContactPickerActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ContactPostActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.ContactPostActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ContactVideoCallActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.ContactVideoCallActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::DeviceActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::DeviceActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.DeviceActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::DevicePairingActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.DevicePairingActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::DialReceiverActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.DialReceiverActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::FileActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::FileActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.FileActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::FileOpenPickerActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.FileOpenPickerActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::FileOpenPickerContinuationEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.FileOpenPickerContinuationEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::FileSavePickerActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.FileSavePickerActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::FileSavePickerContinuationEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.FileSavePickerContinuationEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::FolderPickerContinuationEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.FolderPickerContinuationEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::LaunchActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::LaunchActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.LaunchActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::LockScreenActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.LockScreenActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::LockScreenCallActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.LockScreenCallActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::PickerReturnedActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.PickerReturnedActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::Print3DWorkflowActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.Print3DWorkflowActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::PrintTaskSettingsActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.PrintTaskSettingsActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ProtocolActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.ProtocolActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ProtocolForResultsActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.ProtocolForResultsActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::RestrictedLaunchActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.RestrictedLaunchActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::SearchActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::SearchActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.SearchActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ShareTargetActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.ShareTargetActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::SplashScreen>
{
    using abi = ABI::Windows::ApplicationModel::Activation::SplashScreen;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.SplashScreen"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::TileActivatedInfo>
{
    using abi = ABI::Windows::ApplicationModel::Activation::TileActivatedInfo;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.TileActivatedInfo"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::ToastNotificationActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.ToastNotificationActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::UserDataAccountProviderActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::UserDataAccountProviderActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.UserDataAccountProviderActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::VoiceCommandActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.VoiceCommandActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::WalletActionActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.WalletActionActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::WebAccountProviderActivatedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.WebAccountProviderActivatedEventArgs"; }
};

template <> struct traits<Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs>
{
    using abi = ABI::Windows::ApplicationModel::Activation::WebAuthenticationBrokerContinuationEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Activation.WebAuthenticationBrokerContinuationEventArgs"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Media.Core.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Media.MediaProperties.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Media.Protection.3.h"
#include "internal/Windows.Storage.FileProperties.3.h"
#include "internal/Windows.Storage.Streams.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Media.Capture.3.h"
#include "internal/Windows.Media.Devices.3.h"
#include "internal/Windows.Media.Streaming.Adaptive.3.h"
#include "internal/Windows.Storage.3.h"
#include "internal/Windows.UI.3.h"
#include "internal/Windows.Media.Playback.3.h"
#include "internal/Windows.Media.Core.3.h"
#include "Windows.Media.h"
#include "Windows.Foundation.h"
#include "Windows.Foundation.Collections.h"
#include "Windows.Media.Effects.h"
#include "Windows.Media.Playback.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Media::Core::IAudioStreamDescriptor> : produce_base<D, Windows::Media::Core::IAudioStreamDescriptor>
{
    HRESULT __stdcall get_EncodingProperties(abi_arg_out<Windows::Media::MediaProperties::IAudioEncodingProperties> encodingProperties) noexcept override
    {
        try
        {
            *encodingProperties = detach(this->shim().EncodingProperties());
            return S_OK;
        }
        catch (...)
        {
            *encodingProperties = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IAudioStreamDescriptor2> : produce_base<D, Windows::Media::Core::IAudioStreamDescriptor2>
{
    HRESULT __stdcall put_LeadingEncoderPadding(abi_arg_in<Windows::Foundation::IReference<uint32_t>> value) noexcept override
    {
        try
        {
            this->shim().LeadingEncoderPadding(*reinterpret_cast<const Windows::Foundation::IReference<uint32_t> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LeadingEncoderPadding(abi_arg_out<Windows::Foundation::IReference<uint32_t>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LeadingEncoderPadding());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_TrailingEncoderPadding(abi_arg_in<Windows::Foundation::IReference<uint32_t>> value) noexcept override
    {
        try
        {
            this->shim().TrailingEncoderPadding(*reinterpret_cast<const Windows::Foundation::IReference<uint32_t> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TrailingEncoderPadding(abi_arg_out<Windows::Foundation::IReference<uint32_t>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TrailingEncoderPadding());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IAudioStreamDescriptorFactory> : produce_base<D, Windows::Media::Core::IAudioStreamDescriptorFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<Windows::Media::MediaProperties::IAudioEncodingProperties> encodingProperties, abi_arg_out<Windows::Media::Core::IAudioStreamDescriptor> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().Create(*reinterpret_cast<const Windows::Media::MediaProperties::AudioEncodingProperties *>(&encodingProperties)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IAudioTrack> : produce_base<D, Windows::Media::Core::IAudioTrack>
{
    HRESULT __stdcall add_OpenFailed(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::AudioTrack, Windows::Media::Core::AudioTrackOpenFailedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().OpenFailed(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::AudioTrack, Windows::Media::Core::AudioTrackOpenFailedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_OpenFailed(event_token token) noexcept override
    {
        try
        {
            this->shim().OpenFailed(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetEncodingProperties(abi_arg_out<Windows::Media::MediaProperties::IAudioEncodingProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetEncodingProperties());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PlaybackItem(abi_arg_out<Windows::Media::Playback::IMediaPlaybackItem> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PlaybackItem());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SupportInfo(abi_arg_out<Windows::Media::Core::IAudioTrackSupportInfo> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportInfo());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IAudioTrackOpenFailedEventArgs> : produce_base<D, Windows::Media::Core::IAudioTrackOpenFailedEventArgs>
{
    HRESULT __stdcall get_ExtendedError(HRESULT * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExtendedError());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IAudioTrackSupportInfo> : produce_base<D, Windows::Media::Core::IAudioTrackSupportInfo>
{
    HRESULT __stdcall get_DecoderStatus(Windows::Media::Core::MediaDecoderStatus * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DecoderStatus());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Degradation(Windows::Media::Core::AudioDecoderDegradation * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Degradation());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DegradationReason(Windows::Media::Core::AudioDecoderDegradationReason * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DegradationReason());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MediaSourceStatus(Windows::Media::Core::MediaSourceStatus * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MediaSourceStatus());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IDataCue> : produce_base<D, Windows::Media::Core::IDataCue>
{
    HRESULT __stdcall put_Data(abi_arg_in<Windows::Storage::Streams::IBuffer> value) noexcept override
    {
        try
        {
            this->shim().Data(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Data(abi_arg_out<Windows::Storage::Streams::IBuffer> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Data());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IFaceDetectedEventArgs> : produce_base<D, Windows::Media::Core::IFaceDetectedEventArgs>
{
    HRESULT __stdcall get_ResultFrame(abi_arg_out<Windows::Media::Core::IFaceDetectionEffectFrame> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ResultFrame());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IFaceDetectionEffect> : produce_base<D, Windows::Media::Core::IFaceDetectionEffect>
{
    HRESULT __stdcall put_Enabled(bool value) noexcept override
    {
        try
        {
            this->shim().Enabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Enabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Enabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DesiredDetectionInterval(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().DesiredDetectionInterval(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DesiredDetectionInterval(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DesiredDetectionInterval());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_FaceDetected(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::FaceDetectionEffect, Windows::Media::Core::FaceDetectedEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().FaceDetected(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::FaceDetectionEffect, Windows::Media::Core::FaceDetectedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_FaceDetected(event_token cookie) noexcept override
    {
        try
        {
            this->shim().FaceDetected(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IFaceDetectionEffectDefinition> : produce_base<D, Windows::Media::Core::IFaceDetectionEffectDefinition>
{
    HRESULT __stdcall put_DetectionMode(Windows::Media::Core::FaceDetectionMode value) noexcept override
    {
        try
        {
            this->shim().DetectionMode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DetectionMode(Windows::Media::Core::FaceDetectionMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DetectionMode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SynchronousDetectionEnabled(bool value) noexcept override
    {
        try
        {
            this->shim().SynchronousDetectionEnabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SynchronousDetectionEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SynchronousDetectionEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IFaceDetectionEffectFrame> : produce_base<D, Windows::Media::Core::IFaceDetectionEffectFrame>
{
    HRESULT __stdcall get_DetectedFaces(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Media::FaceAnalysis::DetectedFace>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DetectedFaces());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IHighDynamicRangeControl> : produce_base<D, Windows::Media::Core::IHighDynamicRangeControl>
{
    HRESULT __stdcall put_Enabled(bool value) noexcept override
    {
        try
        {
            this->shim().Enabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Enabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Enabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IHighDynamicRangeOutput> : produce_base<D, Windows::Media::Core::IHighDynamicRangeOutput>
{
    HRESULT __stdcall get_Certainty(double * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Certainty());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FrameControllers(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Media::Devices::Core::FrameController>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FrameControllers());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaBinder> : produce_base<D, Windows::Media::Core::IMediaBinder>
{
    HRESULT __stdcall add_Binding(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBinder, Windows::Media::Core::MediaBindingEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Binding(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBinder, Windows::Media::Core::MediaBindingEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Binding(event_token token) noexcept override
    {
        try
        {
            this->shim().Binding(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Token(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Token());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Token(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Token(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Source(abi_arg_out<Windows::Media::Core::IMediaSource2> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Source());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaBindingEventArgs> : produce_base<D, Windows::Media::Core::IMediaBindingEventArgs>
{
    HRESULT __stdcall add_Canceled(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBindingEventArgs, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Canceled(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBindingEventArgs, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Canceled(event_token token) noexcept override
    {
        try
        {
            this->shim().Canceled(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MediaBinder(abi_arg_out<Windows::Media::Core::IMediaBinder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MediaBinder());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> deferral) noexcept override
    {
        try
        {
            *deferral = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *deferral = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetUri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri) noexcept override
    {
        try
        {
            this->shim().SetUri(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetStream(abi_arg_in<Windows::Storage::Streams::IRandomAccessStream> stream, abi_arg_in<hstring> contentType) noexcept override
    {
        try
        {
            this->shim().SetStream(*reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStream *>(&stream), *reinterpret_cast<const hstring *>(&contentType));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetStreamReference(abi_arg_in<Windows::Storage::Streams::IRandomAccessStreamReference> stream, abi_arg_in<hstring> contentType) noexcept override
    {
        try
        {
            this->shim().SetStreamReference(*reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStreamReference *>(&stream), *reinterpret_cast<const hstring *>(&contentType));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaCue> : produce_base<D, Windows::Media::Core::IMediaCue>
{
    HRESULT __stdcall put_StartTime(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().StartTime(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_StartTime(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().StartTime());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Duration(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().Duration(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Duration(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Duration());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Id(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Id(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Id(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Id());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaCueEventArgs> : produce_base<D, Windows::Media::Core::IMediaCueEventArgs>
{
    HRESULT __stdcall get_Cue(abi_arg_out<Windows::Media::Core::IMediaCue> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Cue());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaSource> : produce_base<D, Windows::Media::Core::IMediaSource>
{};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaSource2> : produce_base<D, Windows::Media::Core::IMediaSource2>
{
    HRESULT __stdcall add_OpenOperationCompleted(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceOpenOperationCompletedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().OpenOperationCompleted(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceOpenOperationCompletedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_OpenOperationCompleted(event_token token) noexcept override
    {
        try
        {
            this->shim().OpenOperationCompleted(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CustomProperties(abi_arg_out<Windows::Foundation::Collections::IPropertySet> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CustomProperties());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Duration(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Duration());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsOpen(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsOpen());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExternalTimedTextSources(abi_arg_out<Windows::Foundation::Collections::IObservableVector<Windows::Media::Core::TimedTextSource>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExternalTimedTextSources());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExternalTimedMetadataTracks(abi_arg_out<Windows::Foundation::Collections::IObservableVector<Windows::Media::Core::TimedMetadataTrack>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExternalTimedMetadataTracks());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaSource3> : produce_base<D, Windows::Media::Core::IMediaSource3>
{
    HRESULT __stdcall add_StateChanged(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceStateChangedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().StateChanged(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceStateChangedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_StateChanged(event_token token) noexcept override
    {
        try
        {
            this->shim().StateChanged(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_State(Windows::Media::Core::MediaSourceState * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().State());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Reset() noexcept override
    {
        try
        {
            this->shim().Reset();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaSourceError> : produce_base<D, Windows::Media::Core::IMediaSourceError>
{
    HRESULT __stdcall get_ExtendedError(HRESULT * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExtendedError());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaSourceOpenOperationCompletedEventArgs> : produce_base<D, Windows::Media::Core::IMediaSourceOpenOperationCompletedEventArgs>
{
    HRESULT __stdcall get_Error(abi_arg_out<Windows::Media::Core::IMediaSourceError> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Error());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaSourceStateChangedEventArgs> : produce_base<D, Windows::Media::Core::IMediaSourceStateChangedEventArgs>
{
    HRESULT __stdcall get_OldState(Windows::Media::Core::MediaSourceState * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OldState());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NewState(Windows::Media::Core::MediaSourceState * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NewState());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaSourceStatics> : produce_base<D, Windows::Media::Core::IMediaSourceStatics>
{
    HRESULT __stdcall abi_CreateFromAdaptiveMediaSource(abi_arg_in<Windows::Media::Streaming::Adaptive::IAdaptiveMediaSource> mediaSource, abi_arg_out<Windows::Media::Core::IMediaSource2> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateFromAdaptiveMediaSource(*reinterpret_cast<const Windows::Media::Streaming::Adaptive::AdaptiveMediaSource *>(&mediaSource)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromMediaStreamSource(abi_arg_in<Windows::Media::Core::IMediaStreamSource> mediaSource, abi_arg_out<Windows::Media::Core::IMediaSource2> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateFromMediaStreamSource(*reinterpret_cast<const Windows::Media::Core::MediaStreamSource *>(&mediaSource)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromMseStreamSource(abi_arg_in<Windows::Media::Core::IMseStreamSource> mediaSource, abi_arg_out<Windows::Media::Core::IMediaSource2> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateFromMseStreamSource(*reinterpret_cast<const Windows::Media::Core::MseStreamSource *>(&mediaSource)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromIMediaSource(abi_arg_in<Windows::Media::Core::IMediaSource> mediaSource, abi_arg_out<Windows::Media::Core::IMediaSource2> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateFromIMediaSource(*reinterpret_cast<const Windows::Media::Core::IMediaSource *>(&mediaSource)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromStorageFile(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_out<Windows::Media::Core::IMediaSource2> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateFromStorageFile(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromStream(abi_arg_in<Windows::Storage::Streams::IRandomAccessStream> stream, abi_arg_in<hstring> contentType, abi_arg_out<Windows::Media::Core::IMediaSource2> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateFromStream(*reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStream *>(&stream), *reinterpret_cast<const hstring *>(&contentType)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromStreamReference(abi_arg_in<Windows::Storage::Streams::IRandomAccessStreamReference> stream, abi_arg_in<hstring> contentType, abi_arg_out<Windows::Media::Core::IMediaSource2> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateFromStreamReference(*reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStreamReference *>(&stream), *reinterpret_cast<const hstring *>(&contentType)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromUri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Media::Core::IMediaSource2> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateFromUri(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaSourceStatics2> : produce_base<D, Windows::Media::Core::IMediaSourceStatics2>
{
    HRESULT __stdcall abi_CreateFromMediaBinder(abi_arg_in<Windows::Media::Core::IMediaBinder> binder, abi_arg_out<Windows::Media::Core::IMediaSource2> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateFromMediaBinder(*reinterpret_cast<const Windows::Media::Core::MediaBinder *>(&binder)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamDescriptor> : produce_base<D, Windows::Media::Core::IMediaStreamDescriptor>
{
    HRESULT __stdcall get_IsSelected(bool * selected) noexcept override
    {
        try
        {
            *selected = detach(this->shim().IsSelected());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Name(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Name(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Language(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Language(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Language(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Language());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSample> : produce_base<D, Windows::Media::Core::IMediaStreamSample>
{
    HRESULT __stdcall add_Processed(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSample, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Processed(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSample, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Processed(event_token token) noexcept override
    {
        try
        {
            this->shim().Processed(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Buffer(abi_arg_out<Windows::Storage::Streams::IBuffer> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Buffer());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Timestamp(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Timestamp());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExtendedProperties(abi_arg_out<Windows::Foundation::Collections::IMap<GUID, Windows::IInspectable>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExtendedProperties());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Protection(abi_arg_out<Windows::Media::Core::IMediaStreamSampleProtectionProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Protection());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DecodeTimestamp(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().DecodeTimestamp(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DecodeTimestamp(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DecodeTimestamp());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Duration(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().Duration(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Duration(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Duration());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_KeyFrame(bool value) noexcept override
    {
        try
        {
            this->shim().KeyFrame(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_KeyFrame(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().KeyFrame());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Discontinuous(bool value) noexcept override
    {
        try
        {
            this->shim().Discontinuous(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Discontinuous(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Discontinuous());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSampleProtectionProperties> : produce_base<D, Windows::Media::Core::IMediaStreamSampleProtectionProperties>
{
    HRESULT __stdcall abi_SetKeyIdentifier(uint32_t __valueSize, abi_arg_in<uint8_t> * value) noexcept override
    {
        try
        {
            this->shim().SetKeyIdentifier(array_ref<const uint8_t>(value, value + __valueSize));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetKeyIdentifier(uint32_t * __valueSize, abi_arg_out<uint8_t> * value) noexcept override
    {
        try
        {
            this->shim().GetKeyIdentifier(detach<uint8_t>(__valueSize, value));
            return S_OK;
        }
        catch (...)
        {
            *__valueSize = 0;
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetInitializationVector(uint32_t __valueSize, abi_arg_in<uint8_t> * value) noexcept override
    {
        try
        {
            this->shim().SetInitializationVector(array_ref<const uint8_t>(value, value + __valueSize));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetInitializationVector(uint32_t * __valueSize, abi_arg_out<uint8_t> * value) noexcept override
    {
        try
        {
            this->shim().GetInitializationVector(detach<uint8_t>(__valueSize, value));
            return S_OK;
        }
        catch (...)
        {
            *__valueSize = 0;
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetSubSampleMapping(uint32_t __valueSize, abi_arg_in<uint8_t> * value) noexcept override
    {
        try
        {
            this->shim().SetSubSampleMapping(array_ref<const uint8_t>(value, value + __valueSize));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetSubSampleMapping(uint32_t * __valueSize, abi_arg_out<uint8_t> * value) noexcept override
    {
        try
        {
            this->shim().GetSubSampleMapping(detach<uint8_t>(__valueSize, value));
            return S_OK;
        }
        catch (...)
        {
            *__valueSize = 0;
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSampleStatics> : produce_base<D, Windows::Media::Core::IMediaStreamSampleStatics>
{
    HRESULT __stdcall abi_CreateFromBuffer(abi_arg_in<Windows::Storage::Streams::IBuffer> buffer, abi_arg_in<Windows::Foundation::TimeSpan> timestamp, abi_arg_out<Windows::Media::Core::IMediaStreamSample> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateFromBuffer(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&buffer), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&timestamp)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromStreamAsync(abi_arg_in<Windows::Storage::Streams::IInputStream> stream, uint32_t count, abi_arg_in<Windows::Foundation::TimeSpan> timestamp, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Media::Core::MediaStreamSample>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateFromStreamAsync(*reinterpret_cast<const Windows::Storage::Streams::IInputStream *>(&stream), count, *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&timestamp)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSource> : produce_base<D, Windows::Media::Core::IMediaStreamSource>
{
    HRESULT __stdcall add_Closed(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceClosedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Closed(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceClosedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Closed(event_token token) noexcept override
    {
        try
        {
            this->shim().Closed(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_Starting(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceStartingEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Starting(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceStartingEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Starting(event_token token) noexcept override
    {
        try
        {
            this->shim().Starting(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_Paused(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Paused(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Paused(event_token token) noexcept override
    {
        try
        {
            this->shim().Paused(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_SampleRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRequestedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().SampleRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRequestedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_SampleRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().SampleRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_SwitchStreamsRequested(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSwitchStreamsRequestedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().SwitchStreamsRequested(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSwitchStreamsRequestedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_SwitchStreamsRequested(event_token token) noexcept override
    {
        try
        {
            this->shim().SwitchStreamsRequested(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_NotifyError(Windows::Media::Core::MediaStreamSourceErrorStatus errorStatus) noexcept override
    {
        try
        {
            this->shim().NotifyError(errorStatus);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddStreamDescriptor(abi_arg_in<Windows::Media::Core::IMediaStreamDescriptor> descriptor) noexcept override
    {
        try
        {
            this->shim().AddStreamDescriptor(*reinterpret_cast<const Windows::Media::Core::IMediaStreamDescriptor *>(&descriptor));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_MediaProtectionManager(abi_arg_in<Windows::Media::Protection::IMediaProtectionManager> value) noexcept override
    {
        try
        {
            this->shim().MediaProtectionManager(*reinterpret_cast<const Windows::Media::Protection::MediaProtectionManager *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MediaProtectionManager(abi_arg_out<Windows::Media::Protection::IMediaProtectionManager> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MediaProtectionManager());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Duration(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().Duration(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Duration(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Duration());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CanSeek(bool value) noexcept override
    {
        try
        {
            this->shim().CanSeek(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CanSeek(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CanSeek());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_BufferTime(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().BufferTime(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BufferTime(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BufferTime());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetBufferedRange(abi_arg_in<Windows::Foundation::TimeSpan> startOffset, abi_arg_in<Windows::Foundation::TimeSpan> endOffset) noexcept override
    {
        try
        {
            this->shim().SetBufferedRange(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&startOffset), *reinterpret_cast<const Windows::Foundation::TimeSpan *>(&endOffset));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MusicProperties(abi_arg_out<Windows::Storage::FileProperties::IMusicProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MusicProperties());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_VideoProperties(abi_arg_out<Windows::Storage::FileProperties::IVideoProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().VideoProperties());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Thumbnail(abi_arg_in<Windows::Storage::Streams::IRandomAccessStreamReference> value) noexcept override
    {
        try
        {
            this->shim().Thumbnail(*reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStreamReference *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Thumbnail(abi_arg_out<Windows::Storage::Streams::IRandomAccessStreamReference> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Thumbnail());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddProtectionKey(abi_arg_in<Windows::Media::Core::IMediaStreamDescriptor> streamDescriptor, uint32_t __keyIdentifierSize, abi_arg_in<uint8_t> * keyIdentifier, uint32_t __licenseDataSize, abi_arg_in<uint8_t> * licenseData) noexcept override
    {
        try
        {
            this->shim().AddProtectionKey(*reinterpret_cast<const Windows::Media::Core::IMediaStreamDescriptor *>(&streamDescriptor), array_ref<const uint8_t>(keyIdentifier, keyIdentifier + __keyIdentifierSize), array_ref<const uint8_t>(licenseData, licenseData + __licenseDataSize));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSource2> : produce_base<D, Windows::Media::Core::IMediaStreamSource2>
{
    HRESULT __stdcall add_SampleRendered(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRenderedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().SampleRendered(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRenderedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_SampleRendered(event_token token) noexcept override
    {
        try
        {
            this->shim().SampleRendered(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceClosedEventArgs> : produce_base<D, Windows::Media::Core::IMediaStreamSourceClosedEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::Media::Core::IMediaStreamSourceClosedRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceClosedRequest> : produce_base<D, Windows::Media::Core::IMediaStreamSourceClosedRequest>
{
    HRESULT __stdcall get_Reason(Windows::Media::Core::MediaStreamSourceClosedReason * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Reason());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceFactory> : produce_base<D, Windows::Media::Core::IMediaStreamSourceFactory>
{
    HRESULT __stdcall abi_CreateFromDescriptor(abi_arg_in<Windows::Media::Core::IMediaStreamDescriptor> descriptor, abi_arg_out<Windows::Media::Core::IMediaStreamSource> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateFromDescriptor(*reinterpret_cast<const Windows::Media::Core::IMediaStreamDescriptor *>(&descriptor)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromDescriptors(abi_arg_in<Windows::Media::Core::IMediaStreamDescriptor> descriptor, abi_arg_in<Windows::Media::Core::IMediaStreamDescriptor> descriptor2, abi_arg_out<Windows::Media::Core::IMediaStreamSource> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().CreateFromDescriptors(*reinterpret_cast<const Windows::Media::Core::IMediaStreamDescriptor *>(&descriptor), *reinterpret_cast<const Windows::Media::Core::IMediaStreamDescriptor *>(&descriptor2)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceSampleRenderedEventArgs> : produce_base<D, Windows::Media::Core::IMediaStreamSourceSampleRenderedEventArgs>
{
    HRESULT __stdcall get_SampleLag(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SampleLag());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceSampleRequest> : produce_base<D, Windows::Media::Core::IMediaStreamSourceSampleRequest>
{
    HRESULT __stdcall get_StreamDescriptor(abi_arg_out<Windows::Media::Core::IMediaStreamDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().StreamDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Media::Core::IMediaStreamSourceSampleRequestDeferral> deferral) noexcept override
    {
        try
        {
            *deferral = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *deferral = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Sample(abi_arg_in<Windows::Media::Core::IMediaStreamSample> value) noexcept override
    {
        try
        {
            this->shim().Sample(*reinterpret_cast<const Windows::Media::Core::MediaStreamSample *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Sample(abi_arg_out<Windows::Media::Core::IMediaStreamSample> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Sample());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReportSampleProgress(uint32_t progress) noexcept override
    {
        try
        {
            this->shim().ReportSampleProgress(progress);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceSampleRequestDeferral> : produce_base<D, Windows::Media::Core::IMediaStreamSourceSampleRequestDeferral>
{
    HRESULT __stdcall abi_Complete() noexcept override
    {
        try
        {
            this->shim().Complete();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceSampleRequestedEventArgs> : produce_base<D, Windows::Media::Core::IMediaStreamSourceSampleRequestedEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::Media::Core::IMediaStreamSourceSampleRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceStartingEventArgs> : produce_base<D, Windows::Media::Core::IMediaStreamSourceStartingEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::Media::Core::IMediaStreamSourceStartingRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceStartingRequest> : produce_base<D, Windows::Media::Core::IMediaStreamSourceStartingRequest>
{
    HRESULT __stdcall get_StartPosition(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().StartPosition());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Media::Core::IMediaStreamSourceStartingRequestDeferral> deferral) noexcept override
    {
        try
        {
            *deferral = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *deferral = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetActualStartPosition(abi_arg_in<Windows::Foundation::TimeSpan> position) noexcept override
    {
        try
        {
            this->shim().SetActualStartPosition(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&position));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceStartingRequestDeferral> : produce_base<D, Windows::Media::Core::IMediaStreamSourceStartingRequestDeferral>
{
    HRESULT __stdcall abi_Complete() noexcept override
    {
        try
        {
            this->shim().Complete();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceSwitchStreamsRequest> : produce_base<D, Windows::Media::Core::IMediaStreamSourceSwitchStreamsRequest>
{
    HRESULT __stdcall get_OldStreamDescriptor(abi_arg_out<Windows::Media::Core::IMediaStreamDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OldStreamDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NewStreamDescriptor(abi_arg_out<Windows::Media::Core::IMediaStreamDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NewStreamDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Media::Core::IMediaStreamSourceSwitchStreamsRequestDeferral> deferral) noexcept override
    {
        try
        {
            *deferral = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *deferral = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceSwitchStreamsRequestDeferral> : produce_base<D, Windows::Media::Core::IMediaStreamSourceSwitchStreamsRequestDeferral>
{
    HRESULT __stdcall abi_Complete() noexcept override
    {
        try
        {
            this->shim().Complete();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaStreamSourceSwitchStreamsRequestedEventArgs> : produce_base<D, Windows::Media::Core::IMediaStreamSourceSwitchStreamsRequestedEventArgs>
{
    HRESULT __stdcall get_Request(abi_arg_out<Windows::Media::Core::IMediaStreamSourceSwitchStreamsRequest> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMediaTrack> : produce_base<D, Windows::Media::Core::IMediaTrack>
{
    HRESULT __stdcall get_Id(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Id());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Language(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Language());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TrackKind(Windows::Media::Core::MediaTrackKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TrackKind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Label(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Label(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Label(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Label());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMseSourceBuffer> : produce_base<D, Windows::Media::Core::IMseSourceBuffer>
{
    HRESULT __stdcall add_UpdateStarting(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().UpdateStarting(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_UpdateStarting(event_token token) noexcept override
    {
        try
        {
            this->shim().UpdateStarting(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_Updated(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Updated(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Updated(event_token token) noexcept override
    {
        try
        {
            this->shim().Updated(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_UpdateEnded(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().UpdateEnded(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_UpdateEnded(event_token token) noexcept override
    {
        try
        {
            this->shim().UpdateEnded(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_ErrorOccurred(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().ErrorOccurred(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_ErrorOccurred(event_token token) noexcept override
    {
        try
        {
            this->shim().ErrorOccurred(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_Aborted(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Aborted(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Aborted(event_token token) noexcept override
    {
        try
        {
            this->shim().Aborted(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Mode(Windows::Media::Core::MseAppendMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Mode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Mode(Windows::Media::Core::MseAppendMode value) noexcept override
    {
        try
        {
            this->shim().Mode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsUpdating(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsUpdating());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Buffered(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Media::Core::MseTimeRange>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Buffered());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TimestampOffset(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TimestampOffset());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_TimestampOffset(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().TimestampOffset(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AppendWindowStart(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AppendWindowStart());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AppendWindowStart(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().AppendWindowStart(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AppendWindowEnd(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AppendWindowEnd());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AppendWindowEnd(abi_arg_in<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> value) noexcept override
    {
        try
        {
            this->shim().AppendWindowEnd(*reinterpret_cast<const Windows::Foundation::IReference<Windows::Foundation::TimeSpan> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendBuffer(abi_arg_in<Windows::Storage::Streams::IBuffer> buffer) noexcept override
    {
        try
        {
            this->shim().AppendBuffer(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&buffer));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendStream(abi_arg_in<Windows::Storage::Streams::IInputStream> stream) noexcept override
    {
        try
        {
            this->shim().AppendStream(*reinterpret_cast<const Windows::Storage::Streams::IInputStream *>(&stream));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendStreamMaxSize(abi_arg_in<Windows::Storage::Streams::IInputStream> stream, uint64_t maxSize) noexcept override
    {
        try
        {
            this->shim().AppendStream(*reinterpret_cast<const Windows::Storage::Streams::IInputStream *>(&stream), maxSize);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Abort() noexcept override
    {
        try
        {
            this->shim().Abort();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Remove(abi_arg_in<Windows::Foundation::TimeSpan> start, abi_arg_in<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> end) noexcept override
    {
        try
        {
            this->shim().Remove(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&start), *reinterpret_cast<const Windows::Foundation::IReference<Windows::Foundation::TimeSpan> *>(&end));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMseSourceBufferList> : produce_base<D, Windows::Media::Core::IMseSourceBufferList>
{
    HRESULT __stdcall add_SourceBufferAdded(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().SourceBufferAdded(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_SourceBufferAdded(event_token token) noexcept override
    {
        try
        {
            this->shim().SourceBufferAdded(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_SourceBufferRemoved(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().SourceBufferRemoved(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_SourceBufferRemoved(event_token token) noexcept override
    {
        try
        {
            this->shim().SourceBufferRemoved(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Buffers(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Media::Core::MseSourceBuffer>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Buffers());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMseStreamSource> : produce_base<D, Windows::Media::Core::IMseStreamSource>
{
    HRESULT __stdcall add_Opened(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Opened(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Opened(event_token token) noexcept override
    {
        try
        {
            this->shim().Opened(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_Ended(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Ended(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Ended(event_token token) noexcept override
    {
        try
        {
            this->shim().Ended(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_Closed(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Closed(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Closed(event_token token) noexcept override
    {
        try
        {
            this->shim().Closed(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SourceBuffers(abi_arg_out<Windows::Media::Core::IMseSourceBufferList> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SourceBuffers());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ActiveSourceBuffers(abi_arg_out<Windows::Media::Core::IMseSourceBufferList> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ActiveSourceBuffers());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ReadyState(Windows::Media::Core::MseReadyState * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ReadyState());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Duration(abi_arg_out<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Duration());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Duration(abi_arg_in<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> value) noexcept override
    {
        try
        {
            this->shim().Duration(*reinterpret_cast<const Windows::Foundation::IReference<Windows::Foundation::TimeSpan> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddSourceBuffer(abi_arg_in<hstring> mimeType, abi_arg_out<Windows::Media::Core::IMseSourceBuffer> buffer) noexcept override
    {
        try
        {
            *buffer = detach(this->shim().AddSourceBuffer(*reinterpret_cast<const hstring *>(&mimeType)));
            return S_OK;
        }
        catch (...)
        {
            *buffer = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RemoveSourceBuffer(abi_arg_in<Windows::Media::Core::IMseSourceBuffer> buffer) noexcept override
    {
        try
        {
            this->shim().RemoveSourceBuffer(*reinterpret_cast<const Windows::Media::Core::MseSourceBuffer *>(&buffer));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_EndOfStream(Windows::Media::Core::MseEndOfStreamStatus status) noexcept override
    {
        try
        {
            this->shim().EndOfStream(status);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IMseStreamSourceStatics> : produce_base<D, Windows::Media::Core::IMseStreamSourceStatics>
{
    HRESULT __stdcall abi_IsContentTypeSupported(abi_arg_in<hstring> contentType, bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsContentTypeSupported(*reinterpret_cast<const hstring *>(&contentType)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ISceneAnalysisEffect> : produce_base<D, Windows::Media::Core::ISceneAnalysisEffect>
{
    HRESULT __stdcall get_HighDynamicRangeAnalyzer(abi_arg_out<Windows::Media::Core::IHighDynamicRangeControl> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HighDynamicRangeAnalyzer());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DesiredAnalysisInterval(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().DesiredAnalysisInterval(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DesiredAnalysisInterval(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DesiredAnalysisInterval());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_SceneAnalyzed(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::SceneAnalysisEffect, Windows::Media::Core::SceneAnalyzedEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().SceneAnalyzed(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::SceneAnalysisEffect, Windows::Media::Core::SceneAnalyzedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_SceneAnalyzed(event_token cookie) noexcept override
    {
        try
        {
            this->shim().SceneAnalyzed(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ISceneAnalysisEffectFrame> : produce_base<D, Windows::Media::Core::ISceneAnalysisEffectFrame>
{
    HRESULT __stdcall get_FrameControlValues(abi_arg_out<Windows::Media::Capture::ICapturedFrameControlValues> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FrameControlValues());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HighDynamicRange(abi_arg_out<Windows::Media::Core::IHighDynamicRangeOutput> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HighDynamicRange());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ISceneAnalyzedEventArgs> : produce_base<D, Windows::Media::Core::ISceneAnalyzedEventArgs>
{
    HRESULT __stdcall get_ResultFrame(abi_arg_out<Windows::Media::Core::ISceneAnalysisEffectFrame> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ResultFrame());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ISingleSelectMediaTrackList> : produce_base<D, Windows::Media::Core::ISingleSelectMediaTrackList>
{
    HRESULT __stdcall add_SelectedIndexChanged(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::ISingleSelectMediaTrackList, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().SelectedIndexChanged(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::ISingleSelectMediaTrackList, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_SelectedIndexChanged(event_token token) noexcept override
    {
        try
        {
            this->shim().SelectedIndexChanged(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SelectedIndex(int32_t value) noexcept override
    {
        try
        {
            this->shim().SelectedIndex(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SelectedIndex(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SelectedIndex());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedMetadataTrack> : produce_base<D, Windows::Media::Core::ITimedMetadataTrack>
{
    HRESULT __stdcall add_CueEntered(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().CueEntered(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_CueEntered(event_token token) noexcept override
    {
        try
        {
            this->shim().CueEntered(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_CueExited(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().CueExited(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_CueExited(event_token token) noexcept override
    {
        try
        {
            this->shim().CueExited(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_TrackFailed(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::TimedMetadataTrackFailedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().TrackFailed(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::TimedMetadataTrackFailedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_TrackFailed(event_token token) noexcept override
    {
        try
        {
            this->shim().TrackFailed(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Cues(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Media::Core::IMediaCue>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Cues());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ActiveCues(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Media::Core::IMediaCue>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ActiveCues());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TimedMetadataKind(Windows::Media::Core::TimedMetadataKind * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TimedMetadataKind());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DispatchType(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DispatchType());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AddCue(abi_arg_in<Windows::Media::Core::IMediaCue> cue) noexcept override
    {
        try
        {
            this->shim().AddCue(*reinterpret_cast<const Windows::Media::Core::IMediaCue *>(&cue));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RemoveCue(abi_arg_in<Windows::Media::Core::IMediaCue> cue) noexcept override
    {
        try
        {
            this->shim().RemoveCue(*reinterpret_cast<const Windows::Media::Core::IMediaCue *>(&cue));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedMetadataTrack2> : produce_base<D, Windows::Media::Core::ITimedMetadataTrack2>
{
    HRESULT __stdcall get_PlaybackItem(abi_arg_out<Windows::Media::Playback::IMediaPlaybackItem> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PlaybackItem());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedMetadataTrackError> : produce_base<D, Windows::Media::Core::ITimedMetadataTrackError>
{
    HRESULT __stdcall get_ErrorCode(Windows::Media::Core::TimedMetadataTrackErrorCode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ErrorCode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ExtendedError(HRESULT * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExtendedError());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedMetadataTrackFactory> : produce_base<D, Windows::Media::Core::ITimedMetadataTrackFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<hstring> id, abi_arg_in<hstring> language, Windows::Media::Core::TimedMetadataKind kind, abi_arg_out<Windows::Media::Core::ITimedMetadataTrack> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Create(*reinterpret_cast<const hstring *>(&id), *reinterpret_cast<const hstring *>(&language), kind));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedMetadataTrackFailedEventArgs> : produce_base<D, Windows::Media::Core::ITimedMetadataTrackFailedEventArgs>
{
    HRESULT __stdcall get_Error(abi_arg_out<Windows::Media::Core::ITimedMetadataTrackError> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Error());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedTextCue> : produce_base<D, Windows::Media::Core::ITimedTextCue>
{
    HRESULT __stdcall get_CueRegion(abi_arg_out<Windows::Media::Core::ITimedTextRegion> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CueRegion());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CueRegion(abi_arg_in<Windows::Media::Core::ITimedTextRegion> value) noexcept override
    {
        try
        {
            this->shim().CueRegion(*reinterpret_cast<const Windows::Media::Core::TimedTextRegion *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CueStyle(abi_arg_out<Windows::Media::Core::ITimedTextStyle> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CueStyle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_CueStyle(abi_arg_in<Windows::Media::Core::ITimedTextStyle> value) noexcept override
    {
        try
        {
            this->shim().CueStyle(*reinterpret_cast<const Windows::Media::Core::TimedTextStyle *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Lines(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Media::Core::TimedTextLine>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Lines());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedTextLine> : produce_base<D, Windows::Media::Core::ITimedTextLine>
{
    HRESULT __stdcall get_Text(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Text());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Text(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Text(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Subformats(abi_arg_out<Windows::Foundation::Collections::IVector<Windows::Media::Core::TimedTextSubformat>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Subformats());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedTextRegion> : produce_base<D, Windows::Media::Core::ITimedTextRegion>
{
    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Name(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Name(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Position(abi_arg_out<Windows::Media::Core::TimedTextPoint> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Position());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Position(abi_arg_in<Windows::Media::Core::TimedTextPoint> value) noexcept override
    {
        try
        {
            this->shim().Position(*reinterpret_cast<const Windows::Media::Core::TimedTextPoint *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Extent(abi_arg_out<Windows::Media::Core::TimedTextSize> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Extent());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Extent(abi_arg_in<Windows::Media::Core::TimedTextSize> value) noexcept override
    {
        try
        {
            this->shim().Extent(*reinterpret_cast<const Windows::Media::Core::TimedTextSize *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Background(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Background());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Background(abi_arg_in<Windows::UI::Color> value) noexcept override
    {
        try
        {
            this->shim().Background(*reinterpret_cast<const Windows::UI::Color *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WritingMode(Windows::Media::Core::TimedTextWritingMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WritingMode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_WritingMode(Windows::Media::Core::TimedTextWritingMode value) noexcept override
    {
        try
        {
            this->shim().WritingMode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DisplayAlignment(Windows::Media::Core::TimedTextDisplayAlignment * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DisplayAlignment());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DisplayAlignment(Windows::Media::Core::TimedTextDisplayAlignment value) noexcept override
    {
        try
        {
            this->shim().DisplayAlignment(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LineHeight(abi_arg_out<Windows::Media::Core::TimedTextDouble> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LineHeight());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_LineHeight(abi_arg_in<Windows::Media::Core::TimedTextDouble> value) noexcept override
    {
        try
        {
            this->shim().LineHeight(*reinterpret_cast<const Windows::Media::Core::TimedTextDouble *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsOverflowClipped(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsOverflowClipped());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IsOverflowClipped(bool value) noexcept override
    {
        try
        {
            this->shim().IsOverflowClipped(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Padding(abi_arg_out<Windows::Media::Core::TimedTextPadding> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Padding());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Padding(abi_arg_in<Windows::Media::Core::TimedTextPadding> value) noexcept override
    {
        try
        {
            this->shim().Padding(*reinterpret_cast<const Windows::Media::Core::TimedTextPadding *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TextWrapping(Windows::Media::Core::TimedTextWrapping * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TextWrapping());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_TextWrapping(Windows::Media::Core::TimedTextWrapping value) noexcept override
    {
        try
        {
            this->shim().TextWrapping(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ZIndex(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ZIndex());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ZIndex(int32_t value) noexcept override
    {
        try
        {
            this->shim().ZIndex(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ScrollMode(Windows::Media::Core::TimedTextScrollMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ScrollMode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ScrollMode(Windows::Media::Core::TimedTextScrollMode value) noexcept override
    {
        try
        {
            this->shim().ScrollMode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedTextSource> : produce_base<D, Windows::Media::Core::ITimedTextSource>
{
    HRESULT __stdcall add_Resolved(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedTextSource, Windows::Media::Core::TimedTextSourceResolveResultEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().Resolved(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedTextSource, Windows::Media::Core::TimedTextSourceResolveResultEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_Resolved(event_token token) noexcept override
    {
        try
        {
            this->shim().Resolved(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedTextSourceResolveResultEventArgs> : produce_base<D, Windows::Media::Core::ITimedTextSourceResolveResultEventArgs>
{
    HRESULT __stdcall get_Error(abi_arg_out<Windows::Media::Core::ITimedMetadataTrackError> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Error());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Tracks(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Media::Core::TimedMetadataTrack>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Tracks());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedTextSourceStatics> : produce_base<D, Windows::Media::Core::ITimedTextSourceStatics>
{
    HRESULT __stdcall abi_CreateFromStream(abi_arg_in<Windows::Storage::Streams::IRandomAccessStream> stream, abi_arg_out<Windows::Media::Core::ITimedTextSource> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateFromStream(*reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStream *>(&stream)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromUri(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Media::Core::ITimedTextSource> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateFromUri(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromStreamWithLanguage(abi_arg_in<Windows::Storage::Streams::IRandomAccessStream> stream, abi_arg_in<hstring> defaultLanguage, abi_arg_out<Windows::Media::Core::ITimedTextSource> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateFromStream(*reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStream *>(&stream), *reinterpret_cast<const hstring *>(&defaultLanguage)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFromUriWithLanguage(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_in<hstring> defaultLanguage, abi_arg_out<Windows::Media::Core::ITimedTextSource> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateFromUri(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri), *reinterpret_cast<const hstring *>(&defaultLanguage)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedTextStyle> : produce_base<D, Windows::Media::Core::ITimedTextStyle>
{
    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Name(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Name(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FontFamily(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FontFamily());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FontFamily(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().FontFamily(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FontSize(abi_arg_out<Windows::Media::Core::TimedTextDouble> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FontSize());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FontSize(abi_arg_in<Windows::Media::Core::TimedTextDouble> value) noexcept override
    {
        try
        {
            this->shim().FontSize(*reinterpret_cast<const Windows::Media::Core::TimedTextDouble *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FontWeight(Windows::Media::Core::TimedTextWeight * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FontWeight());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FontWeight(Windows::Media::Core::TimedTextWeight value) noexcept override
    {
        try
        {
            this->shim().FontWeight(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Foreground(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Foreground());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Foreground(abi_arg_in<Windows::UI::Color> value) noexcept override
    {
        try
        {
            this->shim().Foreground(*reinterpret_cast<const Windows::UI::Color *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Background(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Background());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Background(abi_arg_in<Windows::UI::Color> value) noexcept override
    {
        try
        {
            this->shim().Background(*reinterpret_cast<const Windows::UI::Color *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_IsBackgroundAlwaysShown(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsBackgroundAlwaysShown());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_IsBackgroundAlwaysShown(bool value) noexcept override
    {
        try
        {
            this->shim().IsBackgroundAlwaysShown(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FlowDirection(Windows::Media::Core::TimedTextFlowDirection * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FlowDirection());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FlowDirection(Windows::Media::Core::TimedTextFlowDirection value) noexcept override
    {
        try
        {
            this->shim().FlowDirection(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LineAlignment(Windows::Media::Core::TimedTextLineAlignment * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LineAlignment());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_LineAlignment(Windows::Media::Core::TimedTextLineAlignment value) noexcept override
    {
        try
        {
            this->shim().LineAlignment(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OutlineColor(abi_arg_out<Windows::UI::Color> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OutlineColor());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_OutlineColor(abi_arg_in<Windows::UI::Color> value) noexcept override
    {
        try
        {
            this->shim().OutlineColor(*reinterpret_cast<const Windows::UI::Color *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OutlineThickness(abi_arg_out<Windows::Media::Core::TimedTextDouble> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OutlineThickness());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_OutlineThickness(abi_arg_in<Windows::Media::Core::TimedTextDouble> value) noexcept override
    {
        try
        {
            this->shim().OutlineThickness(*reinterpret_cast<const Windows::Media::Core::TimedTextDouble *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OutlineRadius(abi_arg_out<Windows::Media::Core::TimedTextDouble> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OutlineRadius());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_OutlineRadius(abi_arg_in<Windows::Media::Core::TimedTextDouble> value) noexcept override
    {
        try
        {
            this->shim().OutlineRadius(*reinterpret_cast<const Windows::Media::Core::TimedTextDouble *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::ITimedTextSubformat> : produce_base<D, Windows::Media::Core::ITimedTextSubformat>
{
    HRESULT __stdcall get_StartIndex(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().StartIndex());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_StartIndex(int32_t value) noexcept override
    {
        try
        {
            this->shim().StartIndex(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Length(int32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Length());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Length(int32_t value) noexcept override
    {
        try
        {
            this->shim().Length(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SubformatStyle(abi_arg_out<Windows::Media::Core::ITimedTextStyle> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SubformatStyle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SubformatStyle(abi_arg_in<Windows::Media::Core::ITimedTextStyle> value) noexcept override
    {
        try
        {
            this->shim().SubformatStyle(*reinterpret_cast<const Windows::Media::Core::TimedTextStyle *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IVideoStabilizationEffect> : produce_base<D, Windows::Media::Core::IVideoStabilizationEffect>
{
    HRESULT __stdcall put_Enabled(bool value) noexcept override
    {
        try
        {
            this->shim().Enabled(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Enabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Enabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_EnabledChanged(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoStabilizationEffect, Windows::Media::Core::VideoStabilizationEffectEnabledChangedEventArgs>> handler, event_token * cookie) noexcept override
    {
        try
        {
            *cookie = detach(this->shim().EnabledChanged(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoStabilizationEffect, Windows::Media::Core::VideoStabilizationEffectEnabledChangedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_EnabledChanged(event_token cookie) noexcept override
    {
        try
        {
            this->shim().EnabledChanged(cookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetRecommendedStreamConfiguration(abi_arg_in<Windows::Media::Devices::IVideoDeviceController> controller, abi_arg_in<Windows::Media::MediaProperties::IVideoEncodingProperties> desiredProperties, abi_arg_out<Windows::Media::Capture::IVideoStreamConfiguration> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetRecommendedStreamConfiguration(*reinterpret_cast<const Windows::Media::Devices::VideoDeviceController *>(&controller), *reinterpret_cast<const Windows::Media::MediaProperties::VideoEncodingProperties *>(&desiredProperties)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IVideoStabilizationEffectEnabledChangedEventArgs> : produce_base<D, Windows::Media::Core::IVideoStabilizationEffectEnabledChangedEventArgs>
{
    HRESULT __stdcall get_Reason(Windows::Media::Core::VideoStabilizationEffectEnabledChangedReason * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Reason());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IVideoStreamDescriptor> : produce_base<D, Windows::Media::Core::IVideoStreamDescriptor>
{
    HRESULT __stdcall get_EncodingProperties(abi_arg_out<Windows::Media::MediaProperties::IVideoEncodingProperties> encodingProperties) noexcept override
    {
        try
        {
            *encodingProperties = detach(this->shim().EncodingProperties());
            return S_OK;
        }
        catch (...)
        {
            *encodingProperties = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IVideoStreamDescriptorFactory> : produce_base<D, Windows::Media::Core::IVideoStreamDescriptorFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<Windows::Media::MediaProperties::IVideoEncodingProperties> encodingProperties, abi_arg_out<Windows::Media::Core::IVideoStreamDescriptor> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().Create(*reinterpret_cast<const Windows::Media::MediaProperties::VideoEncodingProperties *>(&encodingProperties)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IVideoTrack> : produce_base<D, Windows::Media::Core::IVideoTrack>
{
    HRESULT __stdcall add_OpenFailed(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoTrack, Windows::Media::Core::VideoTrackOpenFailedEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().OpenFailed(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoTrack, Windows::Media::Core::VideoTrackOpenFailedEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_OpenFailed(event_token token) noexcept override
    {
        try
        {
            this->shim().OpenFailed(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetEncodingProperties(abi_arg_out<Windows::Media::MediaProperties::IVideoEncodingProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetEncodingProperties());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PlaybackItem(abi_arg_out<Windows::Media::Playback::IMediaPlaybackItem> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PlaybackItem());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SupportInfo(abi_arg_out<Windows::Media::Core::IVideoTrackSupportInfo> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SupportInfo());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IVideoTrackOpenFailedEventArgs> : produce_base<D, Windows::Media::Core::IVideoTrackOpenFailedEventArgs>
{
    HRESULT __stdcall get_ExtendedError(HRESULT * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ExtendedError());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Media::Core::IVideoTrackSupportInfo> : produce_base<D, Windows::Media::Core::IVideoTrackSupportInfo>
{
    HRESULT __stdcall get_DecoderStatus(Windows::Media::Core::MediaDecoderStatus * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DecoderStatus());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MediaSourceStatus(Windows::Media::Core::MediaSourceStatus * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MediaSourceStatus());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Media::Core {

template <typename D> bool impl_IMediaStreamDescriptor<D>::IsSelected() const
{
    bool selected {};
    check_hresult(static_cast<const IMediaStreamDescriptor &>(static_cast<const D &>(*this))->get_IsSelected(&selected));
    return selected;
}

template <typename D> void impl_IMediaStreamDescriptor<D>::Name(hstring_ref value) const
{
    check_hresult(static_cast<const IMediaStreamDescriptor &>(static_cast<const D &>(*this))->put_Name(get(value)));
}

template <typename D> hstring impl_IMediaStreamDescriptor<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const IMediaStreamDescriptor &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamDescriptor<D>::Language(hstring_ref value) const
{
    check_hresult(static_cast<const IMediaStreamDescriptor &>(static_cast<const D &>(*this))->put_Language(get(value)));
}

template <typename D> hstring impl_IMediaStreamDescriptor<D>::Language() const
{
    hstring value;
    check_hresult(static_cast<const IMediaStreamDescriptor &>(static_cast<const D &>(*this))->get_Language(put(value)));
    return value;
}

template <typename D> Windows::Media::MediaProperties::AudioEncodingProperties impl_IAudioStreamDescriptor<D>::EncodingProperties() const
{
    Windows::Media::MediaProperties::AudioEncodingProperties encodingProperties { nullptr };
    check_hresult(static_cast<const IAudioStreamDescriptor &>(static_cast<const D &>(*this))->get_EncodingProperties(put(encodingProperties)));
    return encodingProperties;
}

template <typename D> void impl_IAudioStreamDescriptor2<D>::LeadingEncoderPadding(const Windows::Foundation::IReference<uint32_t> & value) const
{
    check_hresult(static_cast<const IAudioStreamDescriptor2 &>(static_cast<const D &>(*this))->put_LeadingEncoderPadding(get(value)));
}

template <typename D> Windows::Foundation::IReference<uint32_t> impl_IAudioStreamDescriptor2<D>::LeadingEncoderPadding() const
{
    Windows::Foundation::IReference<uint32_t> value;
    check_hresult(static_cast<const IAudioStreamDescriptor2 &>(static_cast<const D &>(*this))->get_LeadingEncoderPadding(put(value)));
    return value;
}

template <typename D> void impl_IAudioStreamDescriptor2<D>::TrailingEncoderPadding(const Windows::Foundation::IReference<uint32_t> & value) const
{
    check_hresult(static_cast<const IAudioStreamDescriptor2 &>(static_cast<const D &>(*this))->put_TrailingEncoderPadding(get(value)));
}

template <typename D> Windows::Foundation::IReference<uint32_t> impl_IAudioStreamDescriptor2<D>::TrailingEncoderPadding() const
{
    Windows::Foundation::IReference<uint32_t> value;
    check_hresult(static_cast<const IAudioStreamDescriptor2 &>(static_cast<const D &>(*this))->get_TrailingEncoderPadding(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::AudioStreamDescriptor impl_IAudioStreamDescriptorFactory<D>::Create(const Windows::Media::MediaProperties::AudioEncodingProperties & encodingProperties) const
{
    Windows::Media::Core::AudioStreamDescriptor result { nullptr };
    check_hresult(static_cast<const IAudioStreamDescriptorFactory &>(static_cast<const D &>(*this))->abi_Create(get(encodingProperties), put(result)));
    return result;
}

template <typename D> Windows::Media::MediaProperties::VideoEncodingProperties impl_IVideoStreamDescriptor<D>::EncodingProperties() const
{
    Windows::Media::MediaProperties::VideoEncodingProperties encodingProperties { nullptr };
    check_hresult(static_cast<const IVideoStreamDescriptor &>(static_cast<const D &>(*this))->get_EncodingProperties(put(encodingProperties)));
    return encodingProperties;
}

template <typename D> Windows::Media::Core::VideoStreamDescriptor impl_IVideoStreamDescriptorFactory<D>::Create(const Windows::Media::MediaProperties::VideoEncodingProperties & encodingProperties) const
{
    Windows::Media::Core::VideoStreamDescriptor result { nullptr };
    check_hresult(static_cast<const IVideoStreamDescriptorFactory &>(static_cast<const D &>(*this))->abi_Create(get(encodingProperties), put(result)));
    return result;
}

template <typename D> event_token impl_IMediaStreamSource<D>::Closed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceClosedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->add_Closed(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMediaStreamSource> impl_IMediaStreamSource<D>::Closed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceClosedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IMediaStreamSource>(this, &ABI::Windows::Media::Core::IMediaStreamSource::remove_Closed, Closed(handler));
}

template <typename D> void impl_IMediaStreamSource<D>::Closed(event_token token) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->remove_Closed(token));
}

template <typename D> event_token impl_IMediaStreamSource<D>::Starting(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceStartingEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->add_Starting(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMediaStreamSource> impl_IMediaStreamSource<D>::Starting(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceStartingEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IMediaStreamSource>(this, &ABI::Windows::Media::Core::IMediaStreamSource::remove_Starting, Starting(handler));
}

template <typename D> void impl_IMediaStreamSource<D>::Starting(event_token token) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->remove_Starting(token));
}

template <typename D> event_token impl_IMediaStreamSource<D>::Paused(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->add_Paused(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMediaStreamSource> impl_IMediaStreamSource<D>::Paused(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMediaStreamSource>(this, &ABI::Windows::Media::Core::IMediaStreamSource::remove_Paused, Paused(handler));
}

template <typename D> void impl_IMediaStreamSource<D>::Paused(event_token token) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->remove_Paused(token));
}

template <typename D> event_token impl_IMediaStreamSource<D>::SampleRequested(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRequestedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->add_SampleRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMediaStreamSource> impl_IMediaStreamSource<D>::SampleRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRequestedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IMediaStreamSource>(this, &ABI::Windows::Media::Core::IMediaStreamSource::remove_SampleRequested, SampleRequested(handler));
}

template <typename D> void impl_IMediaStreamSource<D>::SampleRequested(event_token token) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->remove_SampleRequested(token));
}

template <typename D> event_token impl_IMediaStreamSource<D>::SwitchStreamsRequested(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSwitchStreamsRequestedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->add_SwitchStreamsRequested(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMediaStreamSource> impl_IMediaStreamSource<D>::SwitchStreamsRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSwitchStreamsRequestedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IMediaStreamSource>(this, &ABI::Windows::Media::Core::IMediaStreamSource::remove_SwitchStreamsRequested, SwitchStreamsRequested(handler));
}

template <typename D> void impl_IMediaStreamSource<D>::SwitchStreamsRequested(event_token token) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->remove_SwitchStreamsRequested(token));
}

template <typename D> void impl_IMediaStreamSource<D>::NotifyError(Windows::Media::Core::MediaStreamSourceErrorStatus errorStatus) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->abi_NotifyError(errorStatus));
}

template <typename D> void impl_IMediaStreamSource<D>::AddStreamDescriptor(const Windows::Media::Core::IMediaStreamDescriptor & descriptor) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->abi_AddStreamDescriptor(get(descriptor)));
}

template <typename D> void impl_IMediaStreamSource<D>::MediaProtectionManager(const Windows::Media::Protection::MediaProtectionManager & value) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->put_MediaProtectionManager(get(value)));
}

template <typename D> Windows::Media::Protection::MediaProtectionManager impl_IMediaStreamSource<D>::MediaProtectionManager() const
{
    Windows::Media::Protection::MediaProtectionManager value { nullptr };
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->get_MediaProtectionManager(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSource<D>::Duration(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->put_Duration(get(value)));
}

template <typename D> Windows::Foundation::TimeSpan impl_IMediaStreamSource<D>::Duration() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->get_Duration(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSource<D>::CanSeek(bool value) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->put_CanSeek(value));
}

template <typename D> bool impl_IMediaStreamSource<D>::CanSeek() const
{
    bool value {};
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->get_CanSeek(&value));
    return value;
}

template <typename D> void impl_IMediaStreamSource<D>::BufferTime(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->put_BufferTime(get(value)));
}

template <typename D> Windows::Foundation::TimeSpan impl_IMediaStreamSource<D>::BufferTime() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->get_BufferTime(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSource<D>::SetBufferedRange(const Windows::Foundation::TimeSpan & startOffset, const Windows::Foundation::TimeSpan & endOffset) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->abi_SetBufferedRange(get(startOffset), get(endOffset)));
}

template <typename D> Windows::Storage::FileProperties::MusicProperties impl_IMediaStreamSource<D>::MusicProperties() const
{
    Windows::Storage::FileProperties::MusicProperties value { nullptr };
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->get_MusicProperties(put(value)));
    return value;
}

template <typename D> Windows::Storage::FileProperties::VideoProperties impl_IMediaStreamSource<D>::VideoProperties() const
{
    Windows::Storage::FileProperties::VideoProperties value { nullptr };
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->get_VideoProperties(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSource<D>::Thumbnail(const Windows::Storage::Streams::IRandomAccessStreamReference & value) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->put_Thumbnail(get(value)));
}

template <typename D> Windows::Storage::Streams::IRandomAccessStreamReference impl_IMediaStreamSource<D>::Thumbnail() const
{
    Windows::Storage::Streams::IRandomAccessStreamReference value;
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->get_Thumbnail(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSource<D>::AddProtectionKey(const Windows::Media::Core::IMediaStreamDescriptor & streamDescriptor, array_ref<const uint8_t> keyIdentifier, array_ref<const uint8_t> licenseData) const
{
    check_hresult(static_cast<const IMediaStreamSource &>(static_cast<const D &>(*this))->abi_AddProtectionKey(get(streamDescriptor), keyIdentifier.size(), get(keyIdentifier), licenseData.size(), get(licenseData)));
}

template <typename D> event_token impl_IMediaStreamSource2<D>::SampleRendered(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRenderedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMediaStreamSource2 &>(static_cast<const D &>(*this))->add_SampleRendered(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMediaStreamSource2> impl_IMediaStreamSource2<D>::SampleRendered(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRenderedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IMediaStreamSource2>(this, &ABI::Windows::Media::Core::IMediaStreamSource2::remove_SampleRendered, SampleRendered(handler));
}

template <typename D> void impl_IMediaStreamSource2<D>::SampleRendered(event_token token) const
{
    check_hresult(static_cast<const IMediaStreamSource2 &>(static_cast<const D &>(*this))->remove_SampleRendered(token));
}

template <typename D> Windows::Media::Core::MediaStreamSource impl_IMediaStreamSourceFactory<D>::CreateFromDescriptor(const Windows::Media::Core::IMediaStreamDescriptor & descriptor) const
{
    Windows::Media::Core::MediaStreamSource result { nullptr };
    check_hresult(static_cast<const IMediaStreamSourceFactory &>(static_cast<const D &>(*this))->abi_CreateFromDescriptor(get(descriptor), put(result)));
    return result;
}

template <typename D> Windows::Media::Core::MediaStreamSource impl_IMediaStreamSourceFactory<D>::CreateFromDescriptors(const Windows::Media::Core::IMediaStreamDescriptor & descriptor, const Windows::Media::Core::IMediaStreamDescriptor & descriptor2) const
{
    Windows::Media::Core::MediaStreamSource result { nullptr };
    check_hresult(static_cast<const IMediaStreamSourceFactory &>(static_cast<const D &>(*this))->abi_CreateFromDescriptors(get(descriptor), get(descriptor2), put(result)));
    return result;
}

template <typename D> event_token impl_IMediaStreamSample<D>::Processed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSample, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->add_Processed(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMediaStreamSample> impl_IMediaStreamSample<D>::Processed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSample, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMediaStreamSample>(this, &ABI::Windows::Media::Core::IMediaStreamSample::remove_Processed, Processed(handler));
}

template <typename D> void impl_IMediaStreamSample<D>::Processed(event_token token) const
{
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->remove_Processed(token));
}

template <typename D> Windows::Storage::Streams::Buffer impl_IMediaStreamSample<D>::Buffer() const
{
    Windows::Storage::Streams::Buffer value { nullptr };
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->get_Buffer(put(value)));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_IMediaStreamSample<D>::Timestamp() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->get_Timestamp(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::MediaStreamSamplePropertySet impl_IMediaStreamSample<D>::ExtendedProperties() const
{
    Windows::Media::Core::MediaStreamSamplePropertySet value { nullptr };
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->get_ExtendedProperties(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::MediaStreamSampleProtectionProperties impl_IMediaStreamSample<D>::Protection() const
{
    Windows::Media::Core::MediaStreamSampleProtectionProperties value { nullptr };
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->get_Protection(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSample<D>::DecodeTimestamp(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->put_DecodeTimestamp(get(value)));
}

template <typename D> Windows::Foundation::TimeSpan impl_IMediaStreamSample<D>::DecodeTimestamp() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->get_DecodeTimestamp(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSample<D>::Duration(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->put_Duration(get(value)));
}

template <typename D> Windows::Foundation::TimeSpan impl_IMediaStreamSample<D>::Duration() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->get_Duration(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSample<D>::KeyFrame(bool value) const
{
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->put_KeyFrame(value));
}

template <typename D> bool impl_IMediaStreamSample<D>::KeyFrame() const
{
    bool value {};
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->get_KeyFrame(&value));
    return value;
}

template <typename D> void impl_IMediaStreamSample<D>::Discontinuous(bool value) const
{
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->put_Discontinuous(value));
}

template <typename D> bool impl_IMediaStreamSample<D>::Discontinuous() const
{
    bool value {};
    check_hresult(static_cast<const IMediaStreamSample &>(static_cast<const D &>(*this))->get_Discontinuous(&value));
    return value;
}

template <typename D> Windows::Media::Core::MediaStreamSample impl_IMediaStreamSampleStatics<D>::CreateFromBuffer(const Windows::Storage::Streams::IBuffer & buffer, const Windows::Foundation::TimeSpan & timestamp) const
{
    Windows::Media::Core::MediaStreamSample value { nullptr };
    check_hresult(static_cast<const IMediaStreamSampleStatics &>(static_cast<const D &>(*this))->abi_CreateFromBuffer(get(buffer), get(timestamp), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Media::Core::MediaStreamSample> impl_IMediaStreamSampleStatics<D>::CreateFromStreamAsync(const Windows::Storage::Streams::IInputStream & stream, uint32_t count, const Windows::Foundation::TimeSpan & timestamp) const
{
    Windows::Foundation::IAsyncOperation<Windows::Media::Core::MediaStreamSample> value;
    check_hresult(static_cast<const IMediaStreamSampleStatics &>(static_cast<const D &>(*this))->abi_CreateFromStreamAsync(get(stream), count, get(timestamp), put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSampleProtectionProperties<D>::SetKeyIdentifier(array_ref<const uint8_t> value) const
{
    check_hresult(static_cast<const IMediaStreamSampleProtectionProperties &>(static_cast<const D &>(*this))->abi_SetKeyIdentifier(value.size(), get(value)));
}

template <typename D> void impl_IMediaStreamSampleProtectionProperties<D>::GetKeyIdentifier(com_array<uint8_t> & value) const
{
    check_hresult(static_cast<const IMediaStreamSampleProtectionProperties &>(static_cast<const D &>(*this))->abi_GetKeyIdentifier(put_size(value), put(value)));
}

template <typename D> void impl_IMediaStreamSampleProtectionProperties<D>::SetInitializationVector(array_ref<const uint8_t> value) const
{
    check_hresult(static_cast<const IMediaStreamSampleProtectionProperties &>(static_cast<const D &>(*this))->abi_SetInitializationVector(value.size(), get(value)));
}

template <typename D> void impl_IMediaStreamSampleProtectionProperties<D>::GetInitializationVector(com_array<uint8_t> & value) const
{
    check_hresult(static_cast<const IMediaStreamSampleProtectionProperties &>(static_cast<const D &>(*this))->abi_GetInitializationVector(put_size(value), put(value)));
}

template <typename D> void impl_IMediaStreamSampleProtectionProperties<D>::SetSubSampleMapping(array_ref<const uint8_t> value) const
{
    check_hresult(static_cast<const IMediaStreamSampleProtectionProperties &>(static_cast<const D &>(*this))->abi_SetSubSampleMapping(value.size(), get(value)));
}

template <typename D> void impl_IMediaStreamSampleProtectionProperties<D>::GetSubSampleMapping(com_array<uint8_t> & value) const
{
    check_hresult(static_cast<const IMediaStreamSampleProtectionProperties &>(static_cast<const D &>(*this))->abi_GetSubSampleMapping(put_size(value), put(value)));
}

template <typename D> Windows::Media::Core::MediaStreamSourceClosedReason impl_IMediaStreamSourceClosedRequest<D>::Reason() const
{
    Windows::Media::Core::MediaStreamSourceClosedReason value {};
    check_hresult(static_cast<const IMediaStreamSourceClosedRequest &>(static_cast<const D &>(*this))->get_Reason(&value));
    return value;
}

template <typename D> Windows::Media::Core::MediaStreamSourceClosedRequest impl_IMediaStreamSourceClosedEventArgs<D>::Request() const
{
    Windows::Media::Core::MediaStreamSourceClosedRequest value { nullptr };
    check_hresult(static_cast<const IMediaStreamSourceClosedEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSourceStartingRequestDeferral<D>::Complete() const
{
    check_hresult(static_cast<const IMediaStreamSourceStartingRequestDeferral &>(static_cast<const D &>(*this))->abi_Complete());
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::TimeSpan> impl_IMediaStreamSourceStartingRequest<D>::StartPosition() const
{
    Windows::Foundation::IReference<Windows::Foundation::TimeSpan> value;
    check_hresult(static_cast<const IMediaStreamSourceStartingRequest &>(static_cast<const D &>(*this))->get_StartPosition(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::MediaStreamSourceStartingRequestDeferral impl_IMediaStreamSourceStartingRequest<D>::GetDeferral() const
{
    Windows::Media::Core::MediaStreamSourceStartingRequestDeferral deferral { nullptr };
    check_hresult(static_cast<const IMediaStreamSourceStartingRequest &>(static_cast<const D &>(*this))->abi_GetDeferral(put(deferral)));
    return deferral;
}

template <typename D> void impl_IMediaStreamSourceStartingRequest<D>::SetActualStartPosition(const Windows::Foundation::TimeSpan & position) const
{
    check_hresult(static_cast<const IMediaStreamSourceStartingRequest &>(static_cast<const D &>(*this))->abi_SetActualStartPosition(get(position)));
}

template <typename D> Windows::Media::Core::MediaStreamSourceStartingRequest impl_IMediaStreamSourceStartingEventArgs<D>::Request() const
{
    Windows::Media::Core::MediaStreamSourceStartingRequest value { nullptr };
    check_hresult(static_cast<const IMediaStreamSourceStartingEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSourceSampleRequestDeferral<D>::Complete() const
{
    check_hresult(static_cast<const IMediaStreamSourceSampleRequestDeferral &>(static_cast<const D &>(*this))->abi_Complete());
}

template <typename D> Windows::Media::Core::IMediaStreamDescriptor impl_IMediaStreamSourceSampleRequest<D>::StreamDescriptor() const
{
    Windows::Media::Core::IMediaStreamDescriptor value;
    check_hresult(static_cast<const IMediaStreamSourceSampleRequest &>(static_cast<const D &>(*this))->get_StreamDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::MediaStreamSourceSampleRequestDeferral impl_IMediaStreamSourceSampleRequest<D>::GetDeferral() const
{
    Windows::Media::Core::MediaStreamSourceSampleRequestDeferral deferral { nullptr };
    check_hresult(static_cast<const IMediaStreamSourceSampleRequest &>(static_cast<const D &>(*this))->abi_GetDeferral(put(deferral)));
    return deferral;
}

template <typename D> void impl_IMediaStreamSourceSampleRequest<D>::Sample(const Windows::Media::Core::MediaStreamSample & value) const
{
    check_hresult(static_cast<const IMediaStreamSourceSampleRequest &>(static_cast<const D &>(*this))->put_Sample(get(value)));
}

template <typename D> Windows::Media::Core::MediaStreamSample impl_IMediaStreamSourceSampleRequest<D>::Sample() const
{
    Windows::Media::Core::MediaStreamSample value { nullptr };
    check_hresult(static_cast<const IMediaStreamSourceSampleRequest &>(static_cast<const D &>(*this))->get_Sample(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSourceSampleRequest<D>::ReportSampleProgress(uint32_t progress) const
{
    check_hresult(static_cast<const IMediaStreamSourceSampleRequest &>(static_cast<const D &>(*this))->abi_ReportSampleProgress(progress));
}

template <typename D> Windows::Media::Core::MediaStreamSourceSampleRequest impl_IMediaStreamSourceSampleRequestedEventArgs<D>::Request() const
{
    Windows::Media::Core::MediaStreamSourceSampleRequest value { nullptr };
    check_hresult(static_cast<const IMediaStreamSourceSampleRequestedEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> void impl_IMediaStreamSourceSwitchStreamsRequestDeferral<D>::Complete() const
{
    check_hresult(static_cast<const IMediaStreamSourceSwitchStreamsRequestDeferral &>(static_cast<const D &>(*this))->abi_Complete());
}

template <typename D> Windows::Media::Core::IMediaStreamDescriptor impl_IMediaStreamSourceSwitchStreamsRequest<D>::OldStreamDescriptor() const
{
    Windows::Media::Core::IMediaStreamDescriptor value;
    check_hresult(static_cast<const IMediaStreamSourceSwitchStreamsRequest &>(static_cast<const D &>(*this))->get_OldStreamDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::IMediaStreamDescriptor impl_IMediaStreamSourceSwitchStreamsRequest<D>::NewStreamDescriptor() const
{
    Windows::Media::Core::IMediaStreamDescriptor value;
    check_hresult(static_cast<const IMediaStreamSourceSwitchStreamsRequest &>(static_cast<const D &>(*this))->get_NewStreamDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::MediaStreamSourceSwitchStreamsRequestDeferral impl_IMediaStreamSourceSwitchStreamsRequest<D>::GetDeferral() const
{
    Windows::Media::Core::MediaStreamSourceSwitchStreamsRequestDeferral deferral { nullptr };
    check_hresult(static_cast<const IMediaStreamSourceSwitchStreamsRequest &>(static_cast<const D &>(*this))->abi_GetDeferral(put(deferral)));
    return deferral;
}

template <typename D> Windows::Media::Core::MediaStreamSourceSwitchStreamsRequest impl_IMediaStreamSourceSwitchStreamsRequestedEventArgs<D>::Request() const
{
    Windows::Media::Core::MediaStreamSourceSwitchStreamsRequest value { nullptr };
    check_hresult(static_cast<const IMediaStreamSourceSwitchStreamsRequestedEventArgs &>(static_cast<const D &>(*this))->get_Request(put(value)));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_IMediaStreamSourceSampleRenderedEventArgs<D>::SampleLag() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IMediaStreamSourceSampleRenderedEventArgs &>(static_cast<const D &>(*this))->get_SampleLag(put(value)));
    return value;
}

template <typename D> bool impl_IMseStreamSourceStatics<D>::IsContentTypeSupported(hstring_ref contentType) const
{
    bool value {};
    check_hresult(static_cast<const IMseStreamSourceStatics &>(static_cast<const D &>(*this))->abi_IsContentTypeSupported(get(contentType), &value));
    return value;
}

template <typename D> event_token impl_IMseStreamSource<D>::Opened(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->add_Opened(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMseStreamSource> impl_IMseStreamSource<D>::Opened(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMseStreamSource>(this, &ABI::Windows::Media::Core::IMseStreamSource::remove_Opened, Opened(handler));
}

template <typename D> void impl_IMseStreamSource<D>::Opened(event_token token) const
{
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->remove_Opened(token));
}

template <typename D> event_token impl_IMseStreamSource<D>::Ended(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->add_Ended(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMseStreamSource> impl_IMseStreamSource<D>::Ended(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMseStreamSource>(this, &ABI::Windows::Media::Core::IMseStreamSource::remove_Ended, Ended(handler));
}

template <typename D> void impl_IMseStreamSource<D>::Ended(event_token token) const
{
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->remove_Ended(token));
}

template <typename D> event_token impl_IMseStreamSource<D>::Closed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->add_Closed(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMseStreamSource> impl_IMseStreamSource<D>::Closed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMseStreamSource>(this, &ABI::Windows::Media::Core::IMseStreamSource::remove_Closed, Closed(handler));
}

template <typename D> void impl_IMseStreamSource<D>::Closed(event_token token) const
{
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->remove_Closed(token));
}

template <typename D> Windows::Media::Core::MseSourceBufferList impl_IMseStreamSource<D>::SourceBuffers() const
{
    Windows::Media::Core::MseSourceBufferList value { nullptr };
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->get_SourceBuffers(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::MseSourceBufferList impl_IMseStreamSource<D>::ActiveSourceBuffers() const
{
    Windows::Media::Core::MseSourceBufferList value { nullptr };
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->get_ActiveSourceBuffers(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::MseReadyState impl_IMseStreamSource<D>::ReadyState() const
{
    Windows::Media::Core::MseReadyState value {};
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->get_ReadyState(&value));
    return value;
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::TimeSpan> impl_IMseStreamSource<D>::Duration() const
{
    Windows::Foundation::IReference<Windows::Foundation::TimeSpan> value;
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->get_Duration(put(value)));
    return value;
}

template <typename D> void impl_IMseStreamSource<D>::Duration(const Windows::Foundation::IReference<Windows::Foundation::TimeSpan> & value) const
{
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->put_Duration(get(value)));
}

template <typename D> Windows::Media::Core::MseSourceBuffer impl_IMseStreamSource<D>::AddSourceBuffer(hstring_ref mimeType) const
{
    Windows::Media::Core::MseSourceBuffer buffer { nullptr };
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->abi_AddSourceBuffer(get(mimeType), put(buffer)));
    return buffer;
}

template <typename D> void impl_IMseStreamSource<D>::RemoveSourceBuffer(const Windows::Media::Core::MseSourceBuffer & buffer) const
{
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->abi_RemoveSourceBuffer(get(buffer)));
}

template <typename D> void impl_IMseStreamSource<D>::EndOfStream(Windows::Media::Core::MseEndOfStreamStatus status) const
{
    check_hresult(static_cast<const IMseStreamSource &>(static_cast<const D &>(*this))->abi_EndOfStream(status));
}

template <typename D> event_token impl_IMseSourceBuffer<D>::UpdateStarting(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->add_UpdateStarting(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMseSourceBuffer> impl_IMseSourceBuffer<D>::UpdateStarting(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMseSourceBuffer>(this, &ABI::Windows::Media::Core::IMseSourceBuffer::remove_UpdateStarting, UpdateStarting(handler));
}

template <typename D> void impl_IMseSourceBuffer<D>::UpdateStarting(event_token token) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->remove_UpdateStarting(token));
}

template <typename D> event_token impl_IMseSourceBuffer<D>::Updated(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->add_Updated(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMseSourceBuffer> impl_IMseSourceBuffer<D>::Updated(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMseSourceBuffer>(this, &ABI::Windows::Media::Core::IMseSourceBuffer::remove_Updated, Updated(handler));
}

template <typename D> void impl_IMseSourceBuffer<D>::Updated(event_token token) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->remove_Updated(token));
}

template <typename D> event_token impl_IMseSourceBuffer<D>::UpdateEnded(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->add_UpdateEnded(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMseSourceBuffer> impl_IMseSourceBuffer<D>::UpdateEnded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMseSourceBuffer>(this, &ABI::Windows::Media::Core::IMseSourceBuffer::remove_UpdateEnded, UpdateEnded(handler));
}

template <typename D> void impl_IMseSourceBuffer<D>::UpdateEnded(event_token token) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->remove_UpdateEnded(token));
}

template <typename D> event_token impl_IMseSourceBuffer<D>::ErrorOccurred(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->add_ErrorOccurred(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMseSourceBuffer> impl_IMseSourceBuffer<D>::ErrorOccurred(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMseSourceBuffer>(this, &ABI::Windows::Media::Core::IMseSourceBuffer::remove_ErrorOccurred, ErrorOccurred(handler));
}

template <typename D> void impl_IMseSourceBuffer<D>::ErrorOccurred(event_token token) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->remove_ErrorOccurred(token));
}

template <typename D> event_token impl_IMseSourceBuffer<D>::Aborted(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->add_Aborted(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMseSourceBuffer> impl_IMseSourceBuffer<D>::Aborted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMseSourceBuffer>(this, &ABI::Windows::Media::Core::IMseSourceBuffer::remove_Aborted, Aborted(handler));
}

template <typename D> void impl_IMseSourceBuffer<D>::Aborted(event_token token) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->remove_Aborted(token));
}

template <typename D> Windows::Media::Core::MseAppendMode impl_IMseSourceBuffer<D>::Mode() const
{
    Windows::Media::Core::MseAppendMode value {};
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->get_Mode(&value));
    return value;
}

template <typename D> void impl_IMseSourceBuffer<D>::Mode(Windows::Media::Core::MseAppendMode value) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->put_Mode(value));
}

template <typename D> bool impl_IMseSourceBuffer<D>::IsUpdating() const
{
    bool value {};
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->get_IsUpdating(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Media::Core::MseTimeRange> impl_IMseSourceBuffer<D>::Buffered() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Media::Core::MseTimeRange> value;
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->get_Buffered(put(value)));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_IMseSourceBuffer<D>::TimestampOffset() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->get_TimestampOffset(put(value)));
    return value;
}

template <typename D> void impl_IMseSourceBuffer<D>::TimestampOffset(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->put_TimestampOffset(get(value)));
}

template <typename D> Windows::Foundation::TimeSpan impl_IMseSourceBuffer<D>::AppendWindowStart() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->get_AppendWindowStart(put(value)));
    return value;
}

template <typename D> void impl_IMseSourceBuffer<D>::AppendWindowStart(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->put_AppendWindowStart(get(value)));
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::TimeSpan> impl_IMseSourceBuffer<D>::AppendWindowEnd() const
{
    Windows::Foundation::IReference<Windows::Foundation::TimeSpan> value;
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->get_AppendWindowEnd(put(value)));
    return value;
}

template <typename D> void impl_IMseSourceBuffer<D>::AppendWindowEnd(const Windows::Foundation::IReference<Windows::Foundation::TimeSpan> & value) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->put_AppendWindowEnd(get(value)));
}

template <typename D> void impl_IMseSourceBuffer<D>::AppendBuffer(const Windows::Storage::Streams::IBuffer & buffer) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->abi_AppendBuffer(get(buffer)));
}

template <typename D> void impl_IMseSourceBuffer<D>::AppendStream(const Windows::Storage::Streams::IInputStream & stream) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->abi_AppendStream(get(stream)));
}

template <typename D> void impl_IMseSourceBuffer<D>::AppendStream(const Windows::Storage::Streams::IInputStream & stream, uint64_t maxSize) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->abi_AppendStreamMaxSize(get(stream), maxSize));
}

template <typename D> void impl_IMseSourceBuffer<D>::Abort() const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->abi_Abort());
}

template <typename D> void impl_IMseSourceBuffer<D>::Remove(const Windows::Foundation::TimeSpan & start, const Windows::Foundation::IReference<Windows::Foundation::TimeSpan> & end) const
{
    check_hresult(static_cast<const IMseSourceBuffer &>(static_cast<const D &>(*this))->abi_Remove(get(start), get(end)));
}

template <typename D> event_token impl_IMseSourceBufferList<D>::SourceBufferAdded(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMseSourceBufferList &>(static_cast<const D &>(*this))->add_SourceBufferAdded(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMseSourceBufferList> impl_IMseSourceBufferList<D>::SourceBufferAdded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMseSourceBufferList>(this, &ABI::Windows::Media::Core::IMseSourceBufferList::remove_SourceBufferAdded, SourceBufferAdded(handler));
}

template <typename D> void impl_IMseSourceBufferList<D>::SourceBufferAdded(event_token token) const
{
    check_hresult(static_cast<const IMseSourceBufferList &>(static_cast<const D &>(*this))->remove_SourceBufferAdded(token));
}

template <typename D> event_token impl_IMseSourceBufferList<D>::SourceBufferRemoved(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMseSourceBufferList &>(static_cast<const D &>(*this))->add_SourceBufferRemoved(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMseSourceBufferList> impl_IMseSourceBufferList<D>::SourceBufferRemoved(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMseSourceBufferList>(this, &ABI::Windows::Media::Core::IMseSourceBufferList::remove_SourceBufferRemoved, SourceBufferRemoved(handler));
}

template <typename D> void impl_IMseSourceBufferList<D>::SourceBufferRemoved(event_token token) const
{
    check_hresult(static_cast<const IMseSourceBufferList &>(static_cast<const D &>(*this))->remove_SourceBufferRemoved(token));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Media::Core::MseSourceBuffer> impl_IMseSourceBufferList<D>::Buffers() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Media::Core::MseSourceBuffer> value;
    check_hresult(static_cast<const IMseSourceBufferList &>(static_cast<const D &>(*this))->get_Buffers(put(value)));
    return value;
}

template <typename D> void impl_IHighDynamicRangeControl<D>::Enabled(bool value) const
{
    check_hresult(static_cast<const IHighDynamicRangeControl &>(static_cast<const D &>(*this))->put_Enabled(value));
}

template <typename D> bool impl_IHighDynamicRangeControl<D>::Enabled() const
{
    bool value {};
    check_hresult(static_cast<const IHighDynamicRangeControl &>(static_cast<const D &>(*this))->get_Enabled(&value));
    return value;
}

template <typename D> Windows::Media::Core::HighDynamicRangeControl impl_ISceneAnalysisEffect<D>::HighDynamicRangeAnalyzer() const
{
    Windows::Media::Core::HighDynamicRangeControl value { nullptr };
    check_hresult(static_cast<const ISceneAnalysisEffect &>(static_cast<const D &>(*this))->get_HighDynamicRangeAnalyzer(put(value)));
    return value;
}

template <typename D> void impl_ISceneAnalysisEffect<D>::DesiredAnalysisInterval(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const ISceneAnalysisEffect &>(static_cast<const D &>(*this))->put_DesiredAnalysisInterval(get(value)));
}

template <typename D> Windows::Foundation::TimeSpan impl_ISceneAnalysisEffect<D>::DesiredAnalysisInterval() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const ISceneAnalysisEffect &>(static_cast<const D &>(*this))->get_DesiredAnalysisInterval(put(value)));
    return value;
}

template <typename D> event_token impl_ISceneAnalysisEffect<D>::SceneAnalyzed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::SceneAnalysisEffect, Windows::Media::Core::SceneAnalyzedEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const ISceneAnalysisEffect &>(static_cast<const D &>(*this))->add_SceneAnalyzed(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<ISceneAnalysisEffect> impl_ISceneAnalysisEffect<D>::SceneAnalyzed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::SceneAnalysisEffect, Windows::Media::Core::SceneAnalyzedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, ISceneAnalysisEffect>(this, &ABI::Windows::Media::Core::ISceneAnalysisEffect::remove_SceneAnalyzed, SceneAnalyzed(handler));
}

template <typename D> void impl_ISceneAnalysisEffect<D>::SceneAnalyzed(event_token cookie) const
{
    check_hresult(static_cast<const ISceneAnalysisEffect &>(static_cast<const D &>(*this))->remove_SceneAnalyzed(cookie));
}

template <typename D> double impl_IHighDynamicRangeOutput<D>::Certainty() const
{
    double value {};
    check_hresult(static_cast<const IHighDynamicRangeOutput &>(static_cast<const D &>(*this))->get_Certainty(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Media::Devices::Core::FrameController> impl_IHighDynamicRangeOutput<D>::FrameControllers() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Media::Devices::Core::FrameController> value;
    check_hresult(static_cast<const IHighDynamicRangeOutput &>(static_cast<const D &>(*this))->get_FrameControllers(put(value)));
    return value;
}

template <typename D> Windows::Media::Capture::CapturedFrameControlValues impl_ISceneAnalysisEffectFrame<D>::FrameControlValues() const
{
    Windows::Media::Capture::CapturedFrameControlValues value { nullptr };
    check_hresult(static_cast<const ISceneAnalysisEffectFrame &>(static_cast<const D &>(*this))->get_FrameControlValues(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::HighDynamicRangeOutput impl_ISceneAnalysisEffectFrame<D>::HighDynamicRange() const
{
    Windows::Media::Core::HighDynamicRangeOutput value { nullptr };
    check_hresult(static_cast<const ISceneAnalysisEffectFrame &>(static_cast<const D &>(*this))->get_HighDynamicRange(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::SceneAnalysisEffectFrame impl_ISceneAnalyzedEventArgs<D>::ResultFrame() const
{
    Windows::Media::Core::SceneAnalysisEffectFrame value { nullptr };
    check_hresult(static_cast<const ISceneAnalyzedEventArgs &>(static_cast<const D &>(*this))->get_ResultFrame(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Media::FaceAnalysis::DetectedFace> impl_IFaceDetectionEffectFrame<D>::DetectedFaces() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Media::FaceAnalysis::DetectedFace> value;
    check_hresult(static_cast<const IFaceDetectionEffectFrame &>(static_cast<const D &>(*this))->get_DetectedFaces(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::FaceDetectionEffectFrame impl_IFaceDetectedEventArgs<D>::ResultFrame() const
{
    Windows::Media::Core::FaceDetectionEffectFrame value { nullptr };
    check_hresult(static_cast<const IFaceDetectedEventArgs &>(static_cast<const D &>(*this))->get_ResultFrame(put(value)));
    return value;
}

template <typename D> void impl_IFaceDetectionEffect<D>::Enabled(bool value) const
{
    check_hresult(static_cast<const IFaceDetectionEffect &>(static_cast<const D &>(*this))->put_Enabled(value));
}

template <typename D> bool impl_IFaceDetectionEffect<D>::Enabled() const
{
    bool value {};
    check_hresult(static_cast<const IFaceDetectionEffect &>(static_cast<const D &>(*this))->get_Enabled(&value));
    return value;
}

template <typename D> void impl_IFaceDetectionEffect<D>::DesiredDetectionInterval(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const IFaceDetectionEffect &>(static_cast<const D &>(*this))->put_DesiredDetectionInterval(get(value)));
}

template <typename D> Windows::Foundation::TimeSpan impl_IFaceDetectionEffect<D>::DesiredDetectionInterval() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IFaceDetectionEffect &>(static_cast<const D &>(*this))->get_DesiredDetectionInterval(put(value)));
    return value;
}

template <typename D> event_token impl_IFaceDetectionEffect<D>::FaceDetected(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::FaceDetectionEffect, Windows::Media::Core::FaceDetectedEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IFaceDetectionEffect &>(static_cast<const D &>(*this))->add_FaceDetected(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IFaceDetectionEffect> impl_IFaceDetectionEffect<D>::FaceDetected(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::FaceDetectionEffect, Windows::Media::Core::FaceDetectedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IFaceDetectionEffect>(this, &ABI::Windows::Media::Core::IFaceDetectionEffect::remove_FaceDetected, FaceDetected(handler));
}

template <typename D> void impl_IFaceDetectionEffect<D>::FaceDetected(event_token cookie) const
{
    check_hresult(static_cast<const IFaceDetectionEffect &>(static_cast<const D &>(*this))->remove_FaceDetected(cookie));
}

template <typename D> void impl_IFaceDetectionEffectDefinition<D>::DetectionMode(Windows::Media::Core::FaceDetectionMode value) const
{
    check_hresult(static_cast<const IFaceDetectionEffectDefinition &>(static_cast<const D &>(*this))->put_DetectionMode(value));
}

template <typename D> Windows::Media::Core::FaceDetectionMode impl_IFaceDetectionEffectDefinition<D>::DetectionMode() const
{
    Windows::Media::Core::FaceDetectionMode value {};
    check_hresult(static_cast<const IFaceDetectionEffectDefinition &>(static_cast<const D &>(*this))->get_DetectionMode(&value));
    return value;
}

template <typename D> void impl_IFaceDetectionEffectDefinition<D>::SynchronousDetectionEnabled(bool value) const
{
    check_hresult(static_cast<const IFaceDetectionEffectDefinition &>(static_cast<const D &>(*this))->put_SynchronousDetectionEnabled(value));
}

template <typename D> bool impl_IFaceDetectionEffectDefinition<D>::SynchronousDetectionEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IFaceDetectionEffectDefinition &>(static_cast<const D &>(*this))->get_SynchronousDetectionEnabled(&value));
    return value;
}

template <typename D> Windows::Media::Core::VideoStabilizationEffectEnabledChangedReason impl_IVideoStabilizationEffectEnabledChangedEventArgs<D>::Reason() const
{
    Windows::Media::Core::VideoStabilizationEffectEnabledChangedReason value {};
    check_hresult(static_cast<const IVideoStabilizationEffectEnabledChangedEventArgs &>(static_cast<const D &>(*this))->get_Reason(&value));
    return value;
}

template <typename D> void impl_IVideoStabilizationEffect<D>::Enabled(bool value) const
{
    check_hresult(static_cast<const IVideoStabilizationEffect &>(static_cast<const D &>(*this))->put_Enabled(value));
}

template <typename D> bool impl_IVideoStabilizationEffect<D>::Enabled() const
{
    bool value {};
    check_hresult(static_cast<const IVideoStabilizationEffect &>(static_cast<const D &>(*this))->get_Enabled(&value));
    return value;
}

template <typename D> event_token impl_IVideoStabilizationEffect<D>::EnabledChanged(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoStabilizationEffect, Windows::Media::Core::VideoStabilizationEffectEnabledChangedEventArgs> & handler) const
{
    event_token cookie {};
    check_hresult(static_cast<const IVideoStabilizationEffect &>(static_cast<const D &>(*this))->add_EnabledChanged(get(handler), &cookie));
    return cookie;
}

template <typename D> event_revoker<IVideoStabilizationEffect> impl_IVideoStabilizationEffect<D>::EnabledChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoStabilizationEffect, Windows::Media::Core::VideoStabilizationEffectEnabledChangedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IVideoStabilizationEffect>(this, &ABI::Windows::Media::Core::IVideoStabilizationEffect::remove_EnabledChanged, EnabledChanged(handler));
}

template <typename D> void impl_IVideoStabilizationEffect<D>::EnabledChanged(event_token cookie) const
{
    check_hresult(static_cast<const IVideoStabilizationEffect &>(static_cast<const D &>(*this))->remove_EnabledChanged(cookie));
}

template <typename D> Windows::Media::Capture::VideoStreamConfiguration impl_IVideoStabilizationEffect<D>::GetRecommendedStreamConfiguration(const Windows::Media::Devices::VideoDeviceController & controller, const Windows::Media::MediaProperties::VideoEncodingProperties & desiredProperties) const
{
    Windows::Media::Capture::VideoStreamConfiguration value { nullptr };
    check_hresult(static_cast<const IVideoStabilizationEffect &>(static_cast<const D &>(*this))->abi_GetRecommendedStreamConfiguration(get(controller), get(desiredProperties), put(value)));
    return value;
}

template <typename D> HRESULT impl_IMediaSourceError<D>::ExtendedError() const
{
    HRESULT value {};
    check_hresult(static_cast<const IMediaSourceError &>(static_cast<const D &>(*this))->get_ExtendedError(&value));
    return value;
}

template <typename D> Windows::Media::Core::MediaSourceError impl_IMediaSourceOpenOperationCompletedEventArgs<D>::Error() const
{
    Windows::Media::Core::MediaSourceError value { nullptr };
    check_hresult(static_cast<const IMediaSourceOpenOperationCompletedEventArgs &>(static_cast<const D &>(*this))->get_Error(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::MediaSourceState impl_IMediaSourceStateChangedEventArgs<D>::OldState() const
{
    Windows::Media::Core::MediaSourceState value {};
    check_hresult(static_cast<const IMediaSourceStateChangedEventArgs &>(static_cast<const D &>(*this))->get_OldState(&value));
    return value;
}

template <typename D> Windows::Media::Core::MediaSourceState impl_IMediaSourceStateChangedEventArgs<D>::NewState() const
{
    Windows::Media::Core::MediaSourceState value {};
    check_hresult(static_cast<const IMediaSourceStateChangedEventArgs &>(static_cast<const D &>(*this))->get_NewState(&value));
    return value;
}

template <typename D> Windows::Media::Core::MediaSource impl_IMediaSourceStatics<D>::CreateFromAdaptiveMediaSource(const Windows::Media::Streaming::Adaptive::AdaptiveMediaSource & mediaSource) const
{
    Windows::Media::Core::MediaSource result { nullptr };
    check_hresult(static_cast<const IMediaSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromAdaptiveMediaSource(get(mediaSource), put(result)));
    return result;
}

template <typename D> Windows::Media::Core::MediaSource impl_IMediaSourceStatics<D>::CreateFromMediaStreamSource(const Windows::Media::Core::MediaStreamSource & mediaSource) const
{
    Windows::Media::Core::MediaSource result { nullptr };
    check_hresult(static_cast<const IMediaSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromMediaStreamSource(get(mediaSource), put(result)));
    return result;
}

template <typename D> Windows::Media::Core::MediaSource impl_IMediaSourceStatics<D>::CreateFromMseStreamSource(const Windows::Media::Core::MseStreamSource & mediaSource) const
{
    Windows::Media::Core::MediaSource result { nullptr };
    check_hresult(static_cast<const IMediaSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromMseStreamSource(get(mediaSource), put(result)));
    return result;
}

template <typename D> Windows::Media::Core::MediaSource impl_IMediaSourceStatics<D>::CreateFromIMediaSource(const Windows::Media::Core::IMediaSource & mediaSource) const
{
    Windows::Media::Core::MediaSource result { nullptr };
    check_hresult(static_cast<const IMediaSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromIMediaSource(get(mediaSource), put(result)));
    return result;
}

template <typename D> Windows::Media::Core::MediaSource impl_IMediaSourceStatics<D>::CreateFromStorageFile(const Windows::Storage::IStorageFile & file) const
{
    Windows::Media::Core::MediaSource result { nullptr };
    check_hresult(static_cast<const IMediaSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromStorageFile(get(file), put(result)));
    return result;
}

template <typename D> Windows::Media::Core::MediaSource impl_IMediaSourceStatics<D>::CreateFromStream(const Windows::Storage::Streams::IRandomAccessStream & stream, hstring_ref contentType) const
{
    Windows::Media::Core::MediaSource result { nullptr };
    check_hresult(static_cast<const IMediaSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromStream(get(stream), get(contentType), put(result)));
    return result;
}

template <typename D> Windows::Media::Core::MediaSource impl_IMediaSourceStatics<D>::CreateFromStreamReference(const Windows::Storage::Streams::IRandomAccessStreamReference & stream, hstring_ref contentType) const
{
    Windows::Media::Core::MediaSource result { nullptr };
    check_hresult(static_cast<const IMediaSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromStreamReference(get(stream), get(contentType), put(result)));
    return result;
}

template <typename D> Windows::Media::Core::MediaSource impl_IMediaSourceStatics<D>::CreateFromUri(const Windows::Foundation::Uri & uri) const
{
    Windows::Media::Core::MediaSource result { nullptr };
    check_hresult(static_cast<const IMediaSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromUri(get(uri), put(result)));
    return result;
}

template <typename D> Windows::Media::Core::MediaSource impl_IMediaSourceStatics2<D>::CreateFromMediaBinder(const Windows::Media::Core::MediaBinder & binder) const
{
    Windows::Media::Core::MediaSource result { nullptr };
    check_hresult(static_cast<const IMediaSourceStatics2 &>(static_cast<const D &>(*this))->abi_CreateFromMediaBinder(get(binder), put(result)));
    return result;
}

template <typename D> event_token impl_IMediaBinder<D>::Binding(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBinder, Windows::Media::Core::MediaBindingEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMediaBinder &>(static_cast<const D &>(*this))->add_Binding(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMediaBinder> impl_IMediaBinder<D>::Binding(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBinder, Windows::Media::Core::MediaBindingEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IMediaBinder>(this, &ABI::Windows::Media::Core::IMediaBinder::remove_Binding, Binding(handler));
}

template <typename D> void impl_IMediaBinder<D>::Binding(event_token token) const
{
    check_hresult(static_cast<const IMediaBinder &>(static_cast<const D &>(*this))->remove_Binding(token));
}

template <typename D> hstring impl_IMediaBinder<D>::Token() const
{
    hstring value;
    check_hresult(static_cast<const IMediaBinder &>(static_cast<const D &>(*this))->get_Token(put(value)));
    return value;
}

template <typename D> void impl_IMediaBinder<D>::Token(hstring_ref value) const
{
    check_hresult(static_cast<const IMediaBinder &>(static_cast<const D &>(*this))->put_Token(get(value)));
}

template <typename D> Windows::Media::Core::MediaSource impl_IMediaBinder<D>::Source() const
{
    Windows::Media::Core::MediaSource value { nullptr };
    check_hresult(static_cast<const IMediaBinder &>(static_cast<const D &>(*this))->get_Source(put(value)));
    return value;
}

template <typename D> event_token impl_IMediaBindingEventArgs<D>::Canceled(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBindingEventArgs, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMediaBindingEventArgs &>(static_cast<const D &>(*this))->add_Canceled(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMediaBindingEventArgs> impl_IMediaBindingEventArgs<D>::Canceled(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBindingEventArgs, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IMediaBindingEventArgs>(this, &ABI::Windows::Media::Core::IMediaBindingEventArgs::remove_Canceled, Canceled(handler));
}

template <typename D> void impl_IMediaBindingEventArgs<D>::Canceled(event_token token) const
{
    check_hresult(static_cast<const IMediaBindingEventArgs &>(static_cast<const D &>(*this))->remove_Canceled(token));
}

template <typename D> Windows::Media::Core::MediaBinder impl_IMediaBindingEventArgs<D>::MediaBinder() const
{
    Windows::Media::Core::MediaBinder value { nullptr };
    check_hresult(static_cast<const IMediaBindingEventArgs &>(static_cast<const D &>(*this))->get_MediaBinder(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Deferral impl_IMediaBindingEventArgs<D>::GetDeferral() const
{
    Windows::Foundation::Deferral deferral { nullptr };
    check_hresult(static_cast<const IMediaBindingEventArgs &>(static_cast<const D &>(*this))->abi_GetDeferral(put(deferral)));
    return deferral;
}

template <typename D> void impl_IMediaBindingEventArgs<D>::SetUri(const Windows::Foundation::Uri & uri) const
{
    check_hresult(static_cast<const IMediaBindingEventArgs &>(static_cast<const D &>(*this))->abi_SetUri(get(uri)));
}

template <typename D> void impl_IMediaBindingEventArgs<D>::SetStream(const Windows::Storage::Streams::IRandomAccessStream & stream, hstring_ref contentType) const
{
    check_hresult(static_cast<const IMediaBindingEventArgs &>(static_cast<const D &>(*this))->abi_SetStream(get(stream), get(contentType)));
}

template <typename D> void impl_IMediaBindingEventArgs<D>::SetStreamReference(const Windows::Storage::Streams::IRandomAccessStreamReference & stream, hstring_ref contentType) const
{
    check_hresult(static_cast<const IMediaBindingEventArgs &>(static_cast<const D &>(*this))->abi_SetStreamReference(get(stream), get(contentType)));
}

template <typename D> event_token impl_IMediaSource2<D>::OpenOperationCompleted(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceOpenOperationCompletedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMediaSource2 &>(static_cast<const D &>(*this))->add_OpenOperationCompleted(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMediaSource2> impl_IMediaSource2<D>::OpenOperationCompleted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceOpenOperationCompletedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IMediaSource2>(this, &ABI::Windows::Media::Core::IMediaSource2::remove_OpenOperationCompleted, OpenOperationCompleted(handler));
}

template <typename D> void impl_IMediaSource2<D>::OpenOperationCompleted(event_token token) const
{
    check_hresult(static_cast<const IMediaSource2 &>(static_cast<const D &>(*this))->remove_OpenOperationCompleted(token));
}

template <typename D> Windows::Foundation::Collections::ValueSet impl_IMediaSource2<D>::CustomProperties() const
{
    Windows::Foundation::Collections::ValueSet value { nullptr };
    check_hresult(static_cast<const IMediaSource2 &>(static_cast<const D &>(*this))->get_CustomProperties(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IReference<Windows::Foundation::TimeSpan> impl_IMediaSource2<D>::Duration() const
{
    Windows::Foundation::IReference<Windows::Foundation::TimeSpan> value;
    check_hresult(static_cast<const IMediaSource2 &>(static_cast<const D &>(*this))->get_Duration(put(value)));
    return value;
}

template <typename D> bool impl_IMediaSource2<D>::IsOpen() const
{
    bool value {};
    check_hresult(static_cast<const IMediaSource2 &>(static_cast<const D &>(*this))->get_IsOpen(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IObservableVector<Windows::Media::Core::TimedTextSource> impl_IMediaSource2<D>::ExternalTimedTextSources() const
{
    Windows::Foundation::Collections::IObservableVector<Windows::Media::Core::TimedTextSource> value;
    check_hresult(static_cast<const IMediaSource2 &>(static_cast<const D &>(*this))->get_ExternalTimedTextSources(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IObservableVector<Windows::Media::Core::TimedMetadataTrack> impl_IMediaSource2<D>::ExternalTimedMetadataTracks() const
{
    Windows::Foundation::Collections::IObservableVector<Windows::Media::Core::TimedMetadataTrack> value;
    check_hresult(static_cast<const IMediaSource2 &>(static_cast<const D &>(*this))->get_ExternalTimedMetadataTracks(put(value)));
    return value;
}

template <typename D> event_token impl_IMediaSource3<D>::StateChanged(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceStateChangedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IMediaSource3 &>(static_cast<const D &>(*this))->add_StateChanged(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IMediaSource3> impl_IMediaSource3<D>::StateChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceStateChangedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IMediaSource3>(this, &ABI::Windows::Media::Core::IMediaSource3::remove_StateChanged, StateChanged(handler));
}

template <typename D> void impl_IMediaSource3<D>::StateChanged(event_token token) const
{
    check_hresult(static_cast<const IMediaSource3 &>(static_cast<const D &>(*this))->remove_StateChanged(token));
}

template <typename D> Windows::Media::Core::MediaSourceState impl_IMediaSource3<D>::State() const
{
    Windows::Media::Core::MediaSourceState value {};
    check_hresult(static_cast<const IMediaSource3 &>(static_cast<const D &>(*this))->get_State(&value));
    return value;
}

template <typename D> void impl_IMediaSource3<D>::Reset() const
{
    check_hresult(static_cast<const IMediaSource3 &>(static_cast<const D &>(*this))->abi_Reset());
}

template <typename D> void impl_IMediaCue<D>::StartTime(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const IMediaCue &>(static_cast<const D &>(*this))->put_StartTime(get(value)));
}

template <typename D> Windows::Foundation::TimeSpan impl_IMediaCue<D>::StartTime() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IMediaCue &>(static_cast<const D &>(*this))->get_StartTime(put(value)));
    return value;
}

template <typename D> void impl_IMediaCue<D>::Duration(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const IMediaCue &>(static_cast<const D &>(*this))->put_Duration(get(value)));
}

template <typename D> Windows::Foundation::TimeSpan impl_IMediaCue<D>::Duration() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IMediaCue &>(static_cast<const D &>(*this))->get_Duration(put(value)));
    return value;
}

template <typename D> void impl_IMediaCue<D>::Id(hstring_ref value) const
{
    check_hresult(static_cast<const IMediaCue &>(static_cast<const D &>(*this))->put_Id(get(value)));
}

template <typename D> hstring impl_IMediaCue<D>::Id() const
{
    hstring value;
    check_hresult(static_cast<const IMediaCue &>(static_cast<const D &>(*this))->get_Id(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::TimedTextRegion impl_ITimedTextCue<D>::CueRegion() const
{
    Windows::Media::Core::TimedTextRegion value { nullptr };
    check_hresult(static_cast<const ITimedTextCue &>(static_cast<const D &>(*this))->get_CueRegion(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextCue<D>::CueRegion(const Windows::Media::Core::TimedTextRegion & value) const
{
    check_hresult(static_cast<const ITimedTextCue &>(static_cast<const D &>(*this))->put_CueRegion(get(value)));
}

template <typename D> Windows::Media::Core::TimedTextStyle impl_ITimedTextCue<D>::CueStyle() const
{
    Windows::Media::Core::TimedTextStyle value { nullptr };
    check_hresult(static_cast<const ITimedTextCue &>(static_cast<const D &>(*this))->get_CueStyle(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextCue<D>::CueStyle(const Windows::Media::Core::TimedTextStyle & value) const
{
    check_hresult(static_cast<const ITimedTextCue &>(static_cast<const D &>(*this))->put_CueStyle(get(value)));
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Media::Core::TimedTextLine> impl_ITimedTextCue<D>::Lines() const
{
    Windows::Foundation::Collections::IVector<Windows::Media::Core::TimedTextLine> value;
    check_hresult(static_cast<const ITimedTextCue &>(static_cast<const D &>(*this))->get_Lines(put(value)));
    return value;
}

template <typename D> hstring impl_ITimedTextRegion<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::Name(hstring_ref value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_Name(get(value)));
}

template <typename D> Windows::Media::Core::TimedTextPoint impl_ITimedTextRegion<D>::Position() const
{
    Windows::Media::Core::TimedTextPoint value {};
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_Position(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::Position(const Windows::Media::Core::TimedTextPoint & value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_Position(get(value)));
}

template <typename D> Windows::Media::Core::TimedTextSize impl_ITimedTextRegion<D>::Extent() const
{
    Windows::Media::Core::TimedTextSize value {};
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_Extent(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::Extent(const Windows::Media::Core::TimedTextSize & value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_Extent(get(value)));
}

template <typename D> Windows::UI::Color impl_ITimedTextRegion<D>::Background() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_Background(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::Background(const Windows::UI::Color & value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_Background(get(value)));
}

template <typename D> Windows::Media::Core::TimedTextWritingMode impl_ITimedTextRegion<D>::WritingMode() const
{
    Windows::Media::Core::TimedTextWritingMode value {};
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_WritingMode(&value));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::WritingMode(Windows::Media::Core::TimedTextWritingMode value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_WritingMode(value));
}

template <typename D> Windows::Media::Core::TimedTextDisplayAlignment impl_ITimedTextRegion<D>::DisplayAlignment() const
{
    Windows::Media::Core::TimedTextDisplayAlignment value {};
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_DisplayAlignment(&value));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::DisplayAlignment(Windows::Media::Core::TimedTextDisplayAlignment value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_DisplayAlignment(value));
}

template <typename D> Windows::Media::Core::TimedTextDouble impl_ITimedTextRegion<D>::LineHeight() const
{
    Windows::Media::Core::TimedTextDouble value {};
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_LineHeight(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::LineHeight(const Windows::Media::Core::TimedTextDouble & value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_LineHeight(get(value)));
}

template <typename D> bool impl_ITimedTextRegion<D>::IsOverflowClipped() const
{
    bool value {};
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_IsOverflowClipped(&value));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::IsOverflowClipped(bool value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_IsOverflowClipped(value));
}

template <typename D> Windows::Media::Core::TimedTextPadding impl_ITimedTextRegion<D>::Padding() const
{
    Windows::Media::Core::TimedTextPadding value {};
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_Padding(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::Padding(const Windows::Media::Core::TimedTextPadding & value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_Padding(get(value)));
}

template <typename D> Windows::Media::Core::TimedTextWrapping impl_ITimedTextRegion<D>::TextWrapping() const
{
    Windows::Media::Core::TimedTextWrapping value {};
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_TextWrapping(&value));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::TextWrapping(Windows::Media::Core::TimedTextWrapping value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_TextWrapping(value));
}

template <typename D> int32_t impl_ITimedTextRegion<D>::ZIndex() const
{
    int32_t value {};
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_ZIndex(&value));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::ZIndex(int32_t value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_ZIndex(value));
}

template <typename D> Windows::Media::Core::TimedTextScrollMode impl_ITimedTextRegion<D>::ScrollMode() const
{
    Windows::Media::Core::TimedTextScrollMode value {};
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->get_ScrollMode(&value));
    return value;
}

template <typename D> void impl_ITimedTextRegion<D>::ScrollMode(Windows::Media::Core::TimedTextScrollMode value) const
{
    check_hresult(static_cast<const ITimedTextRegion &>(static_cast<const D &>(*this))->put_ScrollMode(value));
}

template <typename D> hstring impl_ITimedTextStyle<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::Name(hstring_ref value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_Name(get(value)));
}

template <typename D> hstring impl_ITimedTextStyle<D>::FontFamily() const
{
    hstring value;
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_FontFamily(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::FontFamily(hstring_ref value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_FontFamily(get(value)));
}

template <typename D> Windows::Media::Core::TimedTextDouble impl_ITimedTextStyle<D>::FontSize() const
{
    Windows::Media::Core::TimedTextDouble value {};
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_FontSize(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::FontSize(const Windows::Media::Core::TimedTextDouble & value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_FontSize(get(value)));
}

template <typename D> Windows::Media::Core::TimedTextWeight impl_ITimedTextStyle<D>::FontWeight() const
{
    Windows::Media::Core::TimedTextWeight value {};
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_FontWeight(&value));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::FontWeight(Windows::Media::Core::TimedTextWeight value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_FontWeight(value));
}

template <typename D> Windows::UI::Color impl_ITimedTextStyle<D>::Foreground() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_Foreground(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::Foreground(const Windows::UI::Color & value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_Foreground(get(value)));
}

template <typename D> Windows::UI::Color impl_ITimedTextStyle<D>::Background() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_Background(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::Background(const Windows::UI::Color & value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_Background(get(value)));
}

template <typename D> bool impl_ITimedTextStyle<D>::IsBackgroundAlwaysShown() const
{
    bool value {};
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_IsBackgroundAlwaysShown(&value));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::IsBackgroundAlwaysShown(bool value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_IsBackgroundAlwaysShown(value));
}

template <typename D> Windows::Media::Core::TimedTextFlowDirection impl_ITimedTextStyle<D>::FlowDirection() const
{
    Windows::Media::Core::TimedTextFlowDirection value {};
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_FlowDirection(&value));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::FlowDirection(Windows::Media::Core::TimedTextFlowDirection value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_FlowDirection(value));
}

template <typename D> Windows::Media::Core::TimedTextLineAlignment impl_ITimedTextStyle<D>::LineAlignment() const
{
    Windows::Media::Core::TimedTextLineAlignment value {};
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_LineAlignment(&value));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::LineAlignment(Windows::Media::Core::TimedTextLineAlignment value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_LineAlignment(value));
}

template <typename D> Windows::UI::Color impl_ITimedTextStyle<D>::OutlineColor() const
{
    Windows::UI::Color value {};
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_OutlineColor(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::OutlineColor(const Windows::UI::Color & value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_OutlineColor(get(value)));
}

template <typename D> Windows::Media::Core::TimedTextDouble impl_ITimedTextStyle<D>::OutlineThickness() const
{
    Windows::Media::Core::TimedTextDouble value {};
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_OutlineThickness(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::OutlineThickness(const Windows::Media::Core::TimedTextDouble & value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_OutlineThickness(get(value)));
}

template <typename D> Windows::Media::Core::TimedTextDouble impl_ITimedTextStyle<D>::OutlineRadius() const
{
    Windows::Media::Core::TimedTextDouble value {};
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->get_OutlineRadius(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextStyle<D>::OutlineRadius(const Windows::Media::Core::TimedTextDouble & value) const
{
    check_hresult(static_cast<const ITimedTextStyle &>(static_cast<const D &>(*this))->put_OutlineRadius(get(value)));
}

template <typename D> int32_t impl_ITimedTextSubformat<D>::StartIndex() const
{
    int32_t value {};
    check_hresult(static_cast<const ITimedTextSubformat &>(static_cast<const D &>(*this))->get_StartIndex(&value));
    return value;
}

template <typename D> void impl_ITimedTextSubformat<D>::StartIndex(int32_t value) const
{
    check_hresult(static_cast<const ITimedTextSubformat &>(static_cast<const D &>(*this))->put_StartIndex(value));
}

template <typename D> int32_t impl_ITimedTextSubformat<D>::Length() const
{
    int32_t value {};
    check_hresult(static_cast<const ITimedTextSubformat &>(static_cast<const D &>(*this))->get_Length(&value));
    return value;
}

template <typename D> void impl_ITimedTextSubformat<D>::Length(int32_t value) const
{
    check_hresult(static_cast<const ITimedTextSubformat &>(static_cast<const D &>(*this))->put_Length(value));
}

template <typename D> Windows::Media::Core::TimedTextStyle impl_ITimedTextSubformat<D>::SubformatStyle() const
{
    Windows::Media::Core::TimedTextStyle value { nullptr };
    check_hresult(static_cast<const ITimedTextSubformat &>(static_cast<const D &>(*this))->get_SubformatStyle(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextSubformat<D>::SubformatStyle(const Windows::Media::Core::TimedTextStyle & value) const
{
    check_hresult(static_cast<const ITimedTextSubformat &>(static_cast<const D &>(*this))->put_SubformatStyle(get(value)));
}

template <typename D> hstring impl_ITimedTextLine<D>::Text() const
{
    hstring value;
    check_hresult(static_cast<const ITimedTextLine &>(static_cast<const D &>(*this))->get_Text(put(value)));
    return value;
}

template <typename D> void impl_ITimedTextLine<D>::Text(hstring_ref value) const
{
    check_hresult(static_cast<const ITimedTextLine &>(static_cast<const D &>(*this))->put_Text(get(value)));
}

template <typename D> Windows::Foundation::Collections::IVector<Windows::Media::Core::TimedTextSubformat> impl_ITimedTextLine<D>::Subformats() const
{
    Windows::Foundation::Collections::IVector<Windows::Media::Core::TimedTextSubformat> value;
    check_hresult(static_cast<const ITimedTextLine &>(static_cast<const D &>(*this))->get_Subformats(put(value)));
    return value;
}

template <typename D> event_token impl_ISingleSelectMediaTrackList<D>::SelectedIndexChanged(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::ISingleSelectMediaTrackList, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ISingleSelectMediaTrackList &>(static_cast<const D &>(*this))->add_SelectedIndexChanged(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ISingleSelectMediaTrackList> impl_ISingleSelectMediaTrackList<D>::SelectedIndexChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::ISingleSelectMediaTrackList, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, ISingleSelectMediaTrackList>(this, &ABI::Windows::Media::Core::ISingleSelectMediaTrackList::remove_SelectedIndexChanged, SelectedIndexChanged(handler));
}

template <typename D> void impl_ISingleSelectMediaTrackList<D>::SelectedIndexChanged(event_token token) const
{
    check_hresult(static_cast<const ISingleSelectMediaTrackList &>(static_cast<const D &>(*this))->remove_SelectedIndexChanged(token));
}

template <typename D> void impl_ISingleSelectMediaTrackList<D>::SelectedIndex(int32_t value) const
{
    check_hresult(static_cast<const ISingleSelectMediaTrackList &>(static_cast<const D &>(*this))->put_SelectedIndex(value));
}

template <typename D> int32_t impl_ISingleSelectMediaTrackList<D>::SelectedIndex() const
{
    int32_t value {};
    check_hresult(static_cast<const ISingleSelectMediaTrackList &>(static_cast<const D &>(*this))->get_SelectedIndex(&value));
    return value;
}

template <typename D> hstring impl_IMediaTrack<D>::Id() const
{
    hstring value;
    check_hresult(static_cast<const IMediaTrack &>(static_cast<const D &>(*this))->get_Id(put(value)));
    return value;
}

template <typename D> hstring impl_IMediaTrack<D>::Language() const
{
    hstring value;
    check_hresult(static_cast<const IMediaTrack &>(static_cast<const D &>(*this))->get_Language(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::MediaTrackKind impl_IMediaTrack<D>::TrackKind() const
{
    Windows::Media::Core::MediaTrackKind value {};
    check_hresult(static_cast<const IMediaTrack &>(static_cast<const D &>(*this))->get_TrackKind(&value));
    return value;
}

template <typename D> void impl_IMediaTrack<D>::Label(hstring_ref value) const
{
    check_hresult(static_cast<const IMediaTrack &>(static_cast<const D &>(*this))->put_Label(get(value)));
}

template <typename D> hstring impl_IMediaTrack<D>::Label() const
{
    hstring value;
    check_hresult(static_cast<const IMediaTrack &>(static_cast<const D &>(*this))->get_Label(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::TimedMetadataTrackErrorCode impl_ITimedMetadataTrackError<D>::ErrorCode() const
{
    Windows::Media::Core::TimedMetadataTrackErrorCode value {};
    check_hresult(static_cast<const ITimedMetadataTrackError &>(static_cast<const D &>(*this))->get_ErrorCode(&value));
    return value;
}

template <typename D> HRESULT impl_ITimedMetadataTrackError<D>::ExtendedError() const
{
    HRESULT value {};
    check_hresult(static_cast<const ITimedMetadataTrackError &>(static_cast<const D &>(*this))->get_ExtendedError(&value));
    return value;
}

template <typename D> Windows::Media::Core::IMediaCue impl_IMediaCueEventArgs<D>::Cue() const
{
    Windows::Media::Core::IMediaCue value;
    check_hresult(static_cast<const IMediaCueEventArgs &>(static_cast<const D &>(*this))->get_Cue(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::TimedMetadataTrackError impl_ITimedMetadataTrackFailedEventArgs<D>::Error() const
{
    Windows::Media::Core::TimedMetadataTrackError value { nullptr };
    check_hresult(static_cast<const ITimedMetadataTrackFailedEventArgs &>(static_cast<const D &>(*this))->get_Error(put(value)));
    return value;
}

template <typename D> void impl_IDataCue<D>::Data(const Windows::Storage::Streams::IBuffer & value) const
{
    check_hresult(static_cast<const IDataCue &>(static_cast<const D &>(*this))->put_Data(get(value)));
}

template <typename D> Windows::Storage::Streams::IBuffer impl_IDataCue<D>::Data() const
{
    Windows::Storage::Streams::IBuffer value;
    check_hresult(static_cast<const IDataCue &>(static_cast<const D &>(*this))->get_Data(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::TimedMetadataTrack impl_ITimedMetadataTrackFactory<D>::Create(hstring_ref id, hstring_ref language, Windows::Media::Core::TimedMetadataKind kind) const
{
    Windows::Media::Core::TimedMetadataTrack value { nullptr };
    check_hresult(static_cast<const ITimedMetadataTrackFactory &>(static_cast<const D &>(*this))->abi_Create(get(id), get(language), kind, put(value)));
    return value;
}

template <typename D> event_token impl_ITimedMetadataTrack<D>::CueEntered(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->add_CueEntered(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ITimedMetadataTrack> impl_ITimedMetadataTrack<D>::CueEntered(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> & handler) const
{
    return impl::make_event_revoker<D, ITimedMetadataTrack>(this, &ABI::Windows::Media::Core::ITimedMetadataTrack::remove_CueEntered, CueEntered(handler));
}

template <typename D> void impl_ITimedMetadataTrack<D>::CueEntered(event_token token) const
{
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->remove_CueEntered(token));
}

template <typename D> event_token impl_ITimedMetadataTrack<D>::CueExited(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->add_CueExited(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ITimedMetadataTrack> impl_ITimedMetadataTrack<D>::CueExited(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> & handler) const
{
    return impl::make_event_revoker<D, ITimedMetadataTrack>(this, &ABI::Windows::Media::Core::ITimedMetadataTrack::remove_CueExited, CueExited(handler));
}

template <typename D> void impl_ITimedMetadataTrack<D>::CueExited(event_token token) const
{
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->remove_CueExited(token));
}

template <typename D> event_token impl_ITimedMetadataTrack<D>::TrackFailed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::TimedMetadataTrackFailedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->add_TrackFailed(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ITimedMetadataTrack> impl_ITimedMetadataTrack<D>::TrackFailed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::TimedMetadataTrackFailedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, ITimedMetadataTrack>(this, &ABI::Windows::Media::Core::ITimedMetadataTrack::remove_TrackFailed, TrackFailed(handler));
}

template <typename D> void impl_ITimedMetadataTrack<D>::TrackFailed(event_token token) const
{
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->remove_TrackFailed(token));
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Media::Core::IMediaCue> impl_ITimedMetadataTrack<D>::Cues() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Media::Core::IMediaCue> value;
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->get_Cues(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Media::Core::IMediaCue> impl_ITimedMetadataTrack<D>::ActiveCues() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Media::Core::IMediaCue> value;
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->get_ActiveCues(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::TimedMetadataKind impl_ITimedMetadataTrack<D>::TimedMetadataKind() const
{
    Windows::Media::Core::TimedMetadataKind value {};
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->get_TimedMetadataKind(&value));
    return value;
}

template <typename D> hstring impl_ITimedMetadataTrack<D>::DispatchType() const
{
    hstring value;
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->get_DispatchType(put(value)));
    return value;
}

template <typename D> void impl_ITimedMetadataTrack<D>::AddCue(const Windows::Media::Core::IMediaCue & cue) const
{
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->abi_AddCue(get(cue)));
}

template <typename D> void impl_ITimedMetadataTrack<D>::RemoveCue(const Windows::Media::Core::IMediaCue & cue) const
{
    check_hresult(static_cast<const ITimedMetadataTrack &>(static_cast<const D &>(*this))->abi_RemoveCue(get(cue)));
}

template <typename D> Windows::Media::Core::TimedMetadataTrackError impl_ITimedTextSourceResolveResultEventArgs<D>::Error() const
{
    Windows::Media::Core::TimedMetadataTrackError value { nullptr };
    check_hresult(static_cast<const ITimedTextSourceResolveResultEventArgs &>(static_cast<const D &>(*this))->get_Error(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Media::Core::TimedMetadataTrack> impl_ITimedTextSourceResolveResultEventArgs<D>::Tracks() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Media::Core::TimedMetadataTrack> value;
    check_hresult(static_cast<const ITimedTextSourceResolveResultEventArgs &>(static_cast<const D &>(*this))->get_Tracks(put(value)));
    return value;
}

template <typename D> event_token impl_ITimedTextSource<D>::Resolved(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedTextSource, Windows::Media::Core::TimedTextSourceResolveResultEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const ITimedTextSource &>(static_cast<const D &>(*this))->add_Resolved(get(handler), &token));
    return token;
}

template <typename D> event_revoker<ITimedTextSource> impl_ITimedTextSource<D>::Resolved(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedTextSource, Windows::Media::Core::TimedTextSourceResolveResultEventArgs> & handler) const
{
    return impl::make_event_revoker<D, ITimedTextSource>(this, &ABI::Windows::Media::Core::ITimedTextSource::remove_Resolved, Resolved(handler));
}

template <typename D> void impl_ITimedTextSource<D>::Resolved(event_token token) const
{
    check_hresult(static_cast<const ITimedTextSource &>(static_cast<const D &>(*this))->remove_Resolved(token));
}

template <typename D> Windows::Media::Core::TimedTextSource impl_ITimedTextSourceStatics<D>::CreateFromStream(const Windows::Storage::Streams::IRandomAccessStream & stream) const
{
    Windows::Media::Core::TimedTextSource value { nullptr };
    check_hresult(static_cast<const ITimedTextSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromStream(get(stream), put(value)));
    return value;
}

template <typename D> Windows::Media::Core::TimedTextSource impl_ITimedTextSourceStatics<D>::CreateFromUri(const Windows::Foundation::Uri & uri) const
{
    Windows::Media::Core::TimedTextSource value { nullptr };
    check_hresult(static_cast<const ITimedTextSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromUri(get(uri), put(value)));
    return value;
}

template <typename D> Windows::Media::Core::TimedTextSource impl_ITimedTextSourceStatics<D>::CreateFromStream(const Windows::Storage::Streams::IRandomAccessStream & stream, hstring_ref defaultLanguage) const
{
    Windows::Media::Core::TimedTextSource value { nullptr };
    check_hresult(static_cast<const ITimedTextSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromStreamWithLanguage(get(stream), get(defaultLanguage), put(value)));
    return value;
}

template <typename D> Windows::Media::Core::TimedTextSource impl_ITimedTextSourceStatics<D>::CreateFromUri(const Windows::Foundation::Uri & uri, hstring_ref defaultLanguage) const
{
    Windows::Media::Core::TimedTextSource value { nullptr };
    check_hresult(static_cast<const ITimedTextSourceStatics &>(static_cast<const D &>(*this))->abi_CreateFromUriWithLanguage(get(uri), get(defaultLanguage), put(value)));
    return value;
}

template <typename D> Windows::Media::Core::MediaDecoderStatus impl_IVideoTrackSupportInfo<D>::DecoderStatus() const
{
    Windows::Media::Core::MediaDecoderStatus value {};
    check_hresult(static_cast<const IVideoTrackSupportInfo &>(static_cast<const D &>(*this))->get_DecoderStatus(&value));
    return value;
}

template <typename D> Windows::Media::Core::MediaSourceStatus impl_IVideoTrackSupportInfo<D>::MediaSourceStatus() const
{
    Windows::Media::Core::MediaSourceStatus value {};
    check_hresult(static_cast<const IVideoTrackSupportInfo &>(static_cast<const D &>(*this))->get_MediaSourceStatus(&value));
    return value;
}

template <typename D> Windows::Media::Core::MediaDecoderStatus impl_IAudioTrackSupportInfo<D>::DecoderStatus() const
{
    Windows::Media::Core::MediaDecoderStatus value {};
    check_hresult(static_cast<const IAudioTrackSupportInfo &>(static_cast<const D &>(*this))->get_DecoderStatus(&value));
    return value;
}

template <typename D> Windows::Media::Core::AudioDecoderDegradation impl_IAudioTrackSupportInfo<D>::Degradation() const
{
    Windows::Media::Core::AudioDecoderDegradation value {};
    check_hresult(static_cast<const IAudioTrackSupportInfo &>(static_cast<const D &>(*this))->get_Degradation(&value));
    return value;
}

template <typename D> Windows::Media::Core::AudioDecoderDegradationReason impl_IAudioTrackSupportInfo<D>::DegradationReason() const
{
    Windows::Media::Core::AudioDecoderDegradationReason value {};
    check_hresult(static_cast<const IAudioTrackSupportInfo &>(static_cast<const D &>(*this))->get_DegradationReason(&value));
    return value;
}

template <typename D> Windows::Media::Core::MediaSourceStatus impl_IAudioTrackSupportInfo<D>::MediaSourceStatus() const
{
    Windows::Media::Core::MediaSourceStatus value {};
    check_hresult(static_cast<const IAudioTrackSupportInfo &>(static_cast<const D &>(*this))->get_MediaSourceStatus(&value));
    return value;
}

template <typename D> HRESULT impl_IVideoTrackOpenFailedEventArgs<D>::ExtendedError() const
{
    HRESULT value {};
    check_hresult(static_cast<const IVideoTrackOpenFailedEventArgs &>(static_cast<const D &>(*this))->get_ExtendedError(&value));
    return value;
}

template <typename D> HRESULT impl_IAudioTrackOpenFailedEventArgs<D>::ExtendedError() const
{
    HRESULT value {};
    check_hresult(static_cast<const IAudioTrackOpenFailedEventArgs &>(static_cast<const D &>(*this))->get_ExtendedError(&value));
    return value;
}

template <typename D> event_token impl_IVideoTrack<D>::OpenFailed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoTrack, Windows::Media::Core::VideoTrackOpenFailedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IVideoTrack &>(static_cast<const D &>(*this))->add_OpenFailed(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IVideoTrack> impl_IVideoTrack<D>::OpenFailed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoTrack, Windows::Media::Core::VideoTrackOpenFailedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IVideoTrack>(this, &ABI::Windows::Media::Core::IVideoTrack::remove_OpenFailed, OpenFailed(handler));
}

template <typename D> void impl_IVideoTrack<D>::OpenFailed(event_token token) const
{
    check_hresult(static_cast<const IVideoTrack &>(static_cast<const D &>(*this))->remove_OpenFailed(token));
}

template <typename D> Windows::Media::MediaProperties::VideoEncodingProperties impl_IVideoTrack<D>::GetEncodingProperties() const
{
    Windows::Media::MediaProperties::VideoEncodingProperties value { nullptr };
    check_hresult(static_cast<const IVideoTrack &>(static_cast<const D &>(*this))->abi_GetEncodingProperties(put(value)));
    return value;
}

template <typename D> Windows::Media::Playback::MediaPlaybackItem impl_IVideoTrack<D>::PlaybackItem() const
{
    Windows::Media::Playback::MediaPlaybackItem value { nullptr };
    check_hresult(static_cast<const IVideoTrack &>(static_cast<const D &>(*this))->get_PlaybackItem(put(value)));
    return value;
}

template <typename D> hstring impl_IVideoTrack<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const IVideoTrack &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::VideoTrackSupportInfo impl_IVideoTrack<D>::SupportInfo() const
{
    Windows::Media::Core::VideoTrackSupportInfo value { nullptr };
    check_hresult(static_cast<const IVideoTrack &>(static_cast<const D &>(*this))->get_SupportInfo(put(value)));
    return value;
}

template <typename D> event_token impl_IAudioTrack<D>::OpenFailed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::AudioTrack, Windows::Media::Core::AudioTrackOpenFailedEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IAudioTrack &>(static_cast<const D &>(*this))->add_OpenFailed(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IAudioTrack> impl_IAudioTrack<D>::OpenFailed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::AudioTrack, Windows::Media::Core::AudioTrackOpenFailedEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IAudioTrack>(this, &ABI::Windows::Media::Core::IAudioTrack::remove_OpenFailed, OpenFailed(handler));
}

template <typename D> void impl_IAudioTrack<D>::OpenFailed(event_token token) const
{
    check_hresult(static_cast<const IAudioTrack &>(static_cast<const D &>(*this))->remove_OpenFailed(token));
}

template <typename D> Windows::Media::MediaProperties::AudioEncodingProperties impl_IAudioTrack<D>::GetEncodingProperties() const
{
    Windows::Media::MediaProperties::AudioEncodingProperties value { nullptr };
    check_hresult(static_cast<const IAudioTrack &>(static_cast<const D &>(*this))->abi_GetEncodingProperties(put(value)));
    return value;
}

template <typename D> Windows::Media::Playback::MediaPlaybackItem impl_IAudioTrack<D>::PlaybackItem() const
{
    Windows::Media::Playback::MediaPlaybackItem value { nullptr };
    check_hresult(static_cast<const IAudioTrack &>(static_cast<const D &>(*this))->get_PlaybackItem(put(value)));
    return value;
}

template <typename D> hstring impl_IAudioTrack<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const IAudioTrack &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> Windows::Media::Core::AudioTrackSupportInfo impl_IAudioTrack<D>::SupportInfo() const
{
    Windows::Media::Core::AudioTrackSupportInfo value { nullptr };
    check_hresult(static_cast<const IAudioTrack &>(static_cast<const D &>(*this))->get_SupportInfo(put(value)));
    return value;
}

template <typename D> Windows::Media::Playback::MediaPlaybackItem impl_ITimedMetadataTrack2<D>::PlaybackItem() const
{
    Windows::Media::Playback::MediaPlaybackItem value { nullptr };
    check_hresult(static_cast<const ITimedMetadataTrack2 &>(static_cast<const D &>(*this))->get_PlaybackItem(put(value)));
    return value;
}

template <typename D> hstring impl_ITimedMetadataTrack2<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const ITimedMetadataTrack2 &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

inline AudioStreamDescriptor::AudioStreamDescriptor(const Windows::Media::MediaProperties::AudioEncodingProperties & encodingProperties) :
    AudioStreamDescriptor(get_activation_factory<AudioStreamDescriptor, IAudioStreamDescriptorFactory>().Create(encodingProperties))
{}

inline DataCue::DataCue() :
    DataCue(activate_instance<DataCue>())
{}

inline FaceDetectionEffectDefinition::FaceDetectionEffectDefinition() :
    FaceDetectionEffectDefinition(activate_instance<FaceDetectionEffectDefinition>())
{}

inline MediaBinder::MediaBinder() :
    MediaBinder(activate_instance<MediaBinder>())
{}

inline Windows::Media::Core::MediaSource MediaSource::CreateFromAdaptiveMediaSource(const Windows::Media::Streaming::Adaptive::AdaptiveMediaSource & mediaSource)
{
    return get_activation_factory<MediaSource, IMediaSourceStatics>().CreateFromAdaptiveMediaSource(mediaSource);
}

inline Windows::Media::Core::MediaSource MediaSource::CreateFromMediaStreamSource(const Windows::Media::Core::MediaStreamSource & mediaSource)
{
    return get_activation_factory<MediaSource, IMediaSourceStatics>().CreateFromMediaStreamSource(mediaSource);
}

inline Windows::Media::Core::MediaSource MediaSource::CreateFromMseStreamSource(const Windows::Media::Core::MseStreamSource & mediaSource)
{
    return get_activation_factory<MediaSource, IMediaSourceStatics>().CreateFromMseStreamSource(mediaSource);
}

inline Windows::Media::Core::MediaSource MediaSource::CreateFromIMediaSource(const Windows::Media::Core::IMediaSource & mediaSource)
{
    return get_activation_factory<MediaSource, IMediaSourceStatics>().CreateFromIMediaSource(mediaSource);
}

inline Windows::Media::Core::MediaSource MediaSource::CreateFromStorageFile(const Windows::Storage::IStorageFile & file)
{
    return get_activation_factory<MediaSource, IMediaSourceStatics>().CreateFromStorageFile(file);
}

inline Windows::Media::Core::MediaSource MediaSource::CreateFromStream(const Windows::Storage::Streams::IRandomAccessStream & stream, hstring_ref contentType)
{
    return get_activation_factory<MediaSource, IMediaSourceStatics>().CreateFromStream(stream, contentType);
}

inline Windows::Media::Core::MediaSource MediaSource::CreateFromStreamReference(const Windows::Storage::Streams::IRandomAccessStreamReference & stream, hstring_ref contentType)
{
    return get_activation_factory<MediaSource, IMediaSourceStatics>().CreateFromStreamReference(stream, contentType);
}

inline Windows::Media::Core::MediaSource MediaSource::CreateFromUri(const Windows::Foundation::Uri & uri)
{
    return get_activation_factory<MediaSource, IMediaSourceStatics>().CreateFromUri(uri);
}

inline Windows::Media::Core::MediaSource MediaSource::CreateFromMediaBinder(const Windows::Media::Core::MediaBinder & binder)
{
    return get_activation_factory<MediaSource, IMediaSourceStatics2>().CreateFromMediaBinder(binder);
}

inline Windows::Media::Core::MediaStreamSample MediaStreamSample::CreateFromBuffer(const Windows::Storage::Streams::IBuffer & buffer, const Windows::Foundation::TimeSpan & timestamp)
{
    return get_activation_factory<MediaStreamSample, IMediaStreamSampleStatics>().CreateFromBuffer(buffer, timestamp);
}

inline Windows::Foundation::IAsyncOperation<Windows::Media::Core::MediaStreamSample> MediaStreamSample::CreateFromStreamAsync(const Windows::Storage::Streams::IInputStream & stream, uint32_t count, const Windows::Foundation::TimeSpan & timestamp)
{
    return get_activation_factory<MediaStreamSample, IMediaStreamSampleStatics>().CreateFromStreamAsync(stream, count, timestamp);
}

inline MediaStreamSource::MediaStreamSource(const Windows::Media::Core::IMediaStreamDescriptor & descriptor) :
    MediaStreamSource(get_activation_factory<MediaStreamSource, IMediaStreamSourceFactory>().CreateFromDescriptor(descriptor))
{}

inline MediaStreamSource::MediaStreamSource(const Windows::Media::Core::IMediaStreamDescriptor & descriptor, const Windows::Media::Core::IMediaStreamDescriptor & descriptor2) :
    MediaStreamSource(get_activation_factory<MediaStreamSource, IMediaStreamSourceFactory>().CreateFromDescriptors(descriptor, descriptor2))
{}

inline MseStreamSource::MseStreamSource() :
    MseStreamSource(activate_instance<MseStreamSource>())
{}

inline bool MseStreamSource::IsContentTypeSupported(hstring_ref contentType)
{
    return get_activation_factory<MseStreamSource, IMseStreamSourceStatics>().IsContentTypeSupported(contentType);
}

inline SceneAnalysisEffectDefinition::SceneAnalysisEffectDefinition() :
    SceneAnalysisEffectDefinition(activate_instance<SceneAnalysisEffectDefinition>())
{}

inline TimedMetadataTrack::TimedMetadataTrack(hstring_ref id, hstring_ref language, Windows::Media::Core::TimedMetadataKind kind) :
    TimedMetadataTrack(get_activation_factory<TimedMetadataTrack, ITimedMetadataTrackFactory>().Create(id, language, kind))
{}

inline TimedTextCue::TimedTextCue() :
    TimedTextCue(activate_instance<TimedTextCue>())
{}

inline TimedTextLine::TimedTextLine() :
    TimedTextLine(activate_instance<TimedTextLine>())
{}

inline TimedTextRegion::TimedTextRegion() :
    TimedTextRegion(activate_instance<TimedTextRegion>())
{}

inline Windows::Media::Core::TimedTextSource TimedTextSource::CreateFromStream(const Windows::Storage::Streams::IRandomAccessStream & stream)
{
    return get_activation_factory<TimedTextSource, ITimedTextSourceStatics>().CreateFromStream(stream);
}

inline Windows::Media::Core::TimedTextSource TimedTextSource::CreateFromUri(const Windows::Foundation::Uri & uri)
{
    return get_activation_factory<TimedTextSource, ITimedTextSourceStatics>().CreateFromUri(uri);
}

inline Windows::Media::Core::TimedTextSource TimedTextSource::CreateFromStream(const Windows::Storage::Streams::IRandomAccessStream & stream, hstring_ref defaultLanguage)
{
    return get_activation_factory<TimedTextSource, ITimedTextSourceStatics>().CreateFromStream(stream, defaultLanguage);
}

inline Windows::Media::Core::TimedTextSource TimedTextSource::CreateFromUri(const Windows::Foundation::Uri & uri, hstring_ref defaultLanguage)
{
    return get_activation_factory<TimedTextSource, ITimedTextSourceStatics>().CreateFromUri(uri, defaultLanguage);
}

inline TimedTextStyle::TimedTextStyle() :
    TimedTextStyle(activate_instance<TimedTextStyle>())
{}

inline TimedTextSubformat::TimedTextSubformat() :
    TimedTextSubformat(activate_instance<TimedTextSubformat>())
{}

inline VideoStabilizationEffectDefinition::VideoStabilizationEffectDefinition() :
    VideoStabilizationEffectDefinition(activate_instance<VideoStabilizationEffectDefinition>())
{}

inline VideoStreamDescriptor::VideoStreamDescriptor(const Windows::Media::MediaProperties::VideoEncodingProperties & encodingProperties) :
    VideoStreamDescriptor(get_activation_factory<VideoStreamDescriptor, IVideoStreamDescriptorFactory>().Create(encodingProperties))
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Web.Http.Diagnostics.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Web.Http.Diagnostics.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_5541d8a7_497c_5aa4_86fc_7713adbf2a2c
#define WINRT_GENERIC_5541d8a7_497c_5aa4_86fc_7713adbf2a2c
template <> struct __declspec(uuid("5541d8a7-497c-5aa4-86fc-7713adbf2a2c")) __declspec(novtable) IReference<Windows::Foundation::DateTime> : impl_IReference<Windows::Foundation::DateTime> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_e9af27d3_80e8_5aff_a7e5_1b221787f096
#define WINRT_GENERIC_e9af27d3_80e8_5aff_a7e5_1b221787f096
template <> struct __declspec(uuid("e9af27d3-80e8-5aff-a7e5-1b221787f096")) __declspec(novtable) IVectorView<Windows::Web::Http::Diagnostics::HttpDiagnosticSourceLocation> : impl_IVectorView<Windows::Web::Http::Diagnostics::HttpDiagnosticSourceLocation> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_f8e10321_47bd_526a_a9b2_3bf12f725f8b
#define WINRT_GENERIC_f8e10321_47bd_526a_a9b2_3bf12f725f8b
template <> struct __declspec(uuid("f8e10321-47bd-526a-a9b2-3bf12f725f8b")) __declspec(novtable) TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderRequestSentEventArgs> : impl_TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderRequestSentEventArgs> {};
#endif

#ifndef WINRT_GENERIC_2eef1846_8176_52af_8d2b_e0c932512e9f
#define WINRT_GENERIC_2eef1846_8176_52af_8d2b_e0c932512e9f
template <> struct __declspec(uuid("2eef1846-8176-52af-8d2b-e0c932512e9f")) __declspec(novtable) TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderResponseReceivedEventArgs> : impl_TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderResponseReceivedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_2281ad23_9c8d_5d82_9b20_bcf157b04fd9
#define WINRT_GENERIC_2281ad23_9c8d_5d82_9b20_bcf157b04fd9
template <> struct __declspec(uuid("2281ad23-9c8d-5d82-9b20-bcf157b04fd9")) __declspec(novtable) TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderRequestResponseCompletedEventArgs> : impl_TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderRequestResponseCompletedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_807b6ed4_5f42_5199_b231_60cce2c76940
#define WINRT_GENERIC_807b6ed4_5f42_5199_b231_60cce2c76940
template <> struct __declspec(uuid("807b6ed4-5f42-5199-b231-60cce2c76940")) __declspec(novtable) IIterator<Windows::Web::Http::Diagnostics::HttpDiagnosticSourceLocation> : impl_IIterator<Windows::Web::Http::Diagnostics::HttpDiagnosticSourceLocation> {};
#endif

#ifndef WINRT_GENERIC_4286ca1a_a4c5_5ae8_9da9_5bfa24768e22
#define WINRT_GENERIC_4286ca1a_a4c5_5ae8_9da9_5bfa24768e22
template <> struct __declspec(uuid("4286ca1a-a4c5-5ae8-9da9-5bfa24768e22")) __declspec(novtable) IIterable<Windows::Web::Http::Diagnostics::HttpDiagnosticSourceLocation> : impl_IIterable<Windows::Web::Http::Diagnostics::HttpDiagnosticSourceLocation> {};
#endif


}

namespace Windows::Web::Http::Diagnostics {

template <typename D>
struct WINRT_EBO impl_IHttpDiagnosticProvider
{
    void Start() const;
    void Stop() const;
    event_token RequestSent(const Windows::Foundation::TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderRequestSentEventArgs> & handler) const;
    using RequestSent_revoker = event_revoker<IHttpDiagnosticProvider>;
    RequestSent_revoker RequestSent(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderRequestSentEventArgs> & handler) const;
    void RequestSent(event_token token) const;
    event_token ResponseReceived(const Windows::Foundation::TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderResponseReceivedEventArgs> & handler) const;
    using ResponseReceived_revoker = event_revoker<IHttpDiagnosticProvider>;
    ResponseReceived_revoker ResponseReceived(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderResponseReceivedEventArgs> & handler) const;
    void ResponseReceived(event_token token) const;
    event_token RequestResponseCompleted(const Windows::Foundation::TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderRequestResponseCompletedEventArgs> & handler) const;
    using RequestResponseCompleted_revoker = event_revoker<IHttpDiagnosticProvider>;
    RequestResponseCompleted_revoker RequestResponseCompleted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Web::Http::Diagnostics::HttpDiagnosticProvider, Windows::Web::Http::Diagnostics::HttpDiagnosticProviderRequestResponseCompletedEventArgs> & handler) const;
    void RequestResponseCompleted(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IHttpDiagnosticProviderRequestResponseCompletedEventArgs
{
    GUID ActivityId() const;
    Windows::Web::Http::Diagnostics::HttpDiagnosticProviderRequestResponseTimestamps Timestamps() const;
    Windows::Foundation::Uri RequestedUri() const;
    uint32_t ProcessId() const;
    uint32_t ThreadId() const;
    Windows::Web::Http::Diagnostics::HttpDiagnosticRequestInitiator Initiator() const;
    Windows::Foundation::Collections::IVectorView<Windows::Web::Http::Diagnostics::HttpDiagnosticSourceLocation> SourceLocations() const;
};

template <typename D>
struct WINRT_EBO impl_IHttpDiagnosticProviderRequestResponseTimestamps
{
    Windows::Foundation::IReference<Windows::Foundation::DateTime> CacheCheckedTimestamp() const;
    Windows::Foundation::IReference<Windows::Foundation::DateTime> ConnectionInitiatedTimestamp() const;
    Windows::Foundation::IReference<Windows::Foundation::DateTime> NameResolvedTimestamp() const;
    Windows::Foundation::IReference<Windows::Foundation::DateTime> SslNegotiatedTimestamp() const;
    Windows::Foundation::IReference<Windows::Foundation::DateTime> ConnectionCompletedTimestamp() const;
    Windows::Foundation::IReference<Windows::Foundation::DateTime> RequestSentTimestamp() const;
    Windows::Foundation::IReference<Windows::Foundation::DateTime> RequestCompletedTimestamp() const;
    Windows::Foundation::IReference<Windows::Foundation::DateTime> ResponseReceivedTimestamp() const;
    Windows::Foundation::IReference<Windows::Foundation::DateTime> ResponseCompletedTimestamp() const;
};

template <typename D>
struct WINRT_EBO impl_IHttpDiagnosticProviderRequestSentEventArgs
{
    Windows::Foundation::DateTime Timestamp() const;
    GUID ActivityId() const;
    Windows::Web::Http::HttpRequestMessage Message() const;
    uint32_t ProcessId() const;
    uint32_t ThreadId() const;
    Windows::Web::Http::Diagnostics::HttpDiagnosticRequestInitiator Initiator() const;
    Windows::Foundation::Collections::IVectorView<Windows::Web::Http::Diagnostics::HttpDiagnosticSourceLocation> SourceLocations() const;
};

template <typename D>
struct WINRT_EBO impl_IHttpDiagnosticProviderResponseReceivedEventArgs
{
    Windows::Foundation::DateTime Timestamp() const;
    GUID ActivityId() const;
    Windows::Web::Http::HttpResponseMessage Message() const;
};

template <typename D>
struct WINRT_EBO impl_IHttpDiagnosticProviderStatics
{
    Windows::Web::Http::Diagnostics::HttpDiagnosticProvider CreateFromProcessDiagnosticInfo(const Windows::System::Diagnostics::ProcessDiagnosticInfo & processDiagnosticInfo) const;
};

template <typename D>
struct WINRT_EBO impl_IHttpDiagnosticSourceLocation
{
    Windows::Foundation::Uri SourceUri() const;
    uint64_t LineNumber() const;
    uint64_t ColumnNumber() const;
};

struct IHttpDiagnosticProvider :
    Windows::IInspectable,
    impl::consume<IHttpDiagnosticProvider>
{
    IHttpDiagnosticProvider(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHttpDiagnosticProvider>(m_ptr); }
};

struct IHttpDiagnosticProviderRequestResponseCompletedEventArgs :
    Windows::IInspectable,
    impl::consume<IHttpDiagnosticProviderRequestResponseCompletedEventArgs>
{
    IHttpDiagnosticProviderRequestResponseCompletedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHttpDiagnosticProviderRequestResponseCompletedEventArgs>(m_ptr); }
};

struct IHttpDiagnosticProviderRequestResponseTimestamps :
    Windows::IInspectable,
    impl::consume<IHttpDiagnosticProviderRequestResponseTimestamps>
{
    IHttpDiagnosticProviderRequestResponseTimestamps(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHttpDiagnosticProviderRequestResponseTimestamps>(m_ptr); }
};

struct IHttpDiagnosticProviderRequestSentEventArgs :
    Windows::IInspectable,
    impl::consume<IHttpDiagnosticProviderRequestSentEventArgs>
{
    IHttpDiagnosticProviderRequestSentEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHttpDiagnosticProviderRequestSentEventArgs>(m_ptr); }
};

struct IHttpDiagnosticProviderResponseReceivedEventArgs :
    Windows::IInspectable,
    impl::consume<IHttpDiagnosticProviderResponseReceivedEventArgs>
{
    IHttpDiagnosticProviderResponseReceivedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHttpDiagnosticProviderResponseReceivedEventArgs>(m_ptr); }
};

struct IHttpDiagnosticProviderStatics :
    Windows::IInspectable,
    impl::consume<IHttpDiagnosticProviderStatics>
{
    IHttpDiagnosticProviderStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHttpDiagnosticProviderStatics>(m_ptr); }
};

struct IHttpDiagnosticSourceLocation :
    Windows::IInspectable,
    impl::consume<IHttpDiagnosticSourceLocation>
{
    IHttpDiagnosticSourceLocation(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHttpDiagnosticSourceLocation>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.WiFiDirect.Services.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::WiFiDirect::Services {

struct IWiFiDirectService;
struct IWiFiDirectServiceAdvertiser;
struct IWiFiDirectServiceAdvertiserFactory;
struct IWiFiDirectServiceAutoAcceptSessionConnectedEventArgs;
struct IWiFiDirectServiceProvisioningInfo;
struct IWiFiDirectServiceRemotePortAddedEventArgs;
struct IWiFiDirectServiceSession;
struct IWiFiDirectServiceSessionDeferredEventArgs;
struct IWiFiDirectServiceSessionRequest;
struct IWiFiDirectServiceSessionRequestedEventArgs;
struct IWiFiDirectServiceStatics;
struct WiFiDirectService;
struct WiFiDirectServiceAdvertiser;
struct WiFiDirectServiceAutoAcceptSessionConnectedEventArgs;
struct WiFiDirectServiceProvisioningInfo;
struct WiFiDirectServiceRemotePortAddedEventArgs;
struct WiFiDirectServiceSession;
struct WiFiDirectServiceSessionDeferredEventArgs;
struct WiFiDirectServiceSessionRequest;
struct WiFiDirectServiceSessionRequestedEventArgs;

}

namespace Windows::Devices::WiFiDirect::Services {

struct IWiFiDirectService;
struct IWiFiDirectServiceAdvertiser;
struct IWiFiDirectServiceAdvertiserFactory;
struct IWiFiDirectServiceAutoAcceptSessionConnectedEventArgs;
struct IWiFiDirectServiceProvisioningInfo;
struct IWiFiDirectServiceRemotePortAddedEventArgs;
struct IWiFiDirectServiceSession;
struct IWiFiDirectServiceSessionDeferredEventArgs;
struct IWiFiDirectServiceSessionRequest;
struct IWiFiDirectServiceSessionRequestedEventArgs;
struct IWiFiDirectServiceStatics;
struct WiFiDirectService;
struct WiFiDirectServiceAdvertiser;
struct WiFiDirectServiceAutoAcceptSessionConnectedEventArgs;
struct WiFiDirectServiceProvisioningInfo;
struct WiFiDirectServiceRemotePortAddedEventArgs;
struct WiFiDirectServiceSession;
struct WiFiDirectServiceSessionDeferredEventArgs;
struct WiFiDirectServiceSessionRequest;
struct WiFiDirectServiceSessionRequestedEventArgs;

}

namespace Windows::Devices::WiFiDirect::Services {

enum class WiFiDirectServiceAdvertisementStatus
{
    Created = 0,
    Started = 1,
    Stopped = 2,
    Aborted = 3,
};

enum class WiFiDirectServiceConfigurationMethod
{
    Default = 0,
    PinDisplay = 1,
    PinEntry = 2,
};

enum class WiFiDirectServiceError
{
    Success = 0,
    RadioNotAvailable = 1,
    ResourceInUse = 2,
    UnsupportedHardware = 3,
    NoHardware = 4,
};

enum class WiFiDirectServiceIPProtocol
{
    Tcp = 6,
    Udp = 17,
};

enum class WiFiDirectServiceSessionErrorStatus
{
    Ok = 0,
    Disassociated = 1,
    LocalClose = 2,
    RemoteClose = 3,
    SystemFailure = 4,
    NoResponseFromRemote = 5,
};

enum class WiFiDirectServiceSessionStatus
{
    Closed = 0,
    Initiated = 1,
    Requested = 2,
    Open = 3,
};

enum class WiFiDirectServiceStatus
{
    Available = 0,
    Busy = 1,
    Custom = 2,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Services.Maps.Guidance.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Services::Maps::Guidance {

struct IGuidanceAudioNotificationRequestedEventArgs;
struct IGuidanceLaneInfo;
struct IGuidanceManeuver;
struct IGuidanceMapMatchedCoordinate;
struct IGuidanceNavigator;
struct IGuidanceNavigator2;
struct IGuidanceNavigatorStatics;
struct IGuidanceNavigatorStatics2;
struct IGuidanceReroutedEventArgs;
struct IGuidanceRoadSegment;
struct IGuidanceRoadSignpost;
struct IGuidanceRoute;
struct IGuidanceRouteStatics;
struct IGuidanceTelemetryCollector;
struct IGuidanceTelemetryCollectorStatics;
struct IGuidanceUpdatedEventArgs;
struct GuidanceAudioNotificationRequestedEventArgs;
struct GuidanceLaneInfo;
struct GuidanceManeuver;
struct GuidanceMapMatchedCoordinate;
struct GuidanceNavigator;
struct GuidanceReroutedEventArgs;
struct GuidanceRoadSegment;
struct GuidanceRoadSignpost;
struct GuidanceRoute;
struct GuidanceTelemetryCollector;
struct GuidanceUpdatedEventArgs;

}

namespace Windows::Services::Maps::Guidance {

struct IGuidanceAudioNotificationRequestedEventArgs;
struct IGuidanceLaneInfo;
struct IGuidanceManeuver;
struct IGuidanceMapMatchedCoordinate;
struct IGuidanceNavigator;
struct IGuidanceNavigator2;
struct IGuidanceNavigatorStatics;
struct IGuidanceNavigatorStatics2;
struct IGuidanceReroutedEventArgs;
struct IGuidanceRoadSegment;
struct IGuidanceRoadSignpost;
struct IGuidanceRoute;
struct IGuidanceRouteStatics;
struct IGuidanceTelemetryCollector;
struct IGuidanceTelemetryCollectorStatics;
struct IGuidanceUpdatedEventArgs;
struct GuidanceAudioNotificationRequestedEventArgs;
struct GuidanceLaneInfo;
struct GuidanceManeuver;
struct GuidanceMapMatchedCoordinate;
struct GuidanceNavigator;
struct GuidanceReroutedEventArgs;
struct GuidanceRoadSegment;
struct GuidanceRoadSignpost;
struct GuidanceRoute;
struct GuidanceTelemetryCollector;
struct GuidanceUpdatedEventArgs;

}

namespace Windows::Services::Maps::Guidance {

enum class GuidanceAudioMeasurementSystem
{
    Meters = 0,
    MilesAndYards = 1,
    MilesAndFeet = 2,
};

enum class GuidanceAudioNotificationKind
{
    Maneuver = 0,
    Route = 1,
    Gps = 2,
    SpeedLimit = 3,
    Traffic = 4,
    TrafficCamera = 5,
};

enum class GuidanceAudioNotifications : unsigned
{
    None = 0x0,
    Maneuver = 0x1,
    Route = 0x2,
    Gps = 0x4,
    SpeedLimit = 0x8,
    Traffic = 0x10,
    TrafficCamera = 0x20,
};

DEFINE_ENUM_FLAG_OPERATORS(GuidanceAudioNotifications)

enum class GuidanceLaneMarkers : unsigned
{
    None = 0x0,
    LightRight = 0x1,
    Right = 0x2,
    HardRight = 0x4,
    Straight = 0x8,
    UTurnLeft = 0x10,
    HardLeft = 0x20,
    Left = 0x40,
    LightLeft = 0x80,
    UTurnRight = 0x100,
    Unknown = 0xFFFFFFFF,
};

DEFINE_ENUM_FLAG_OPERATORS(GuidanceLaneMarkers)

enum class GuidanceManeuverKind
{
    None = 0,
    GoStraight = 1,
    UTurnRight = 2,
    UTurnLeft = 3,
    TurnKeepRight = 4,
    TurnLightRight = 5,
    TurnRight = 6,
    TurnHardRight = 7,
    KeepMiddle = 8,
    TurnKeepLeft = 9,
    TurnLightLeft = 10,
    TurnLeft = 11,
    TurnHardLeft = 12,
    FreewayEnterRight = 13,
    FreewayEnterLeft = 14,
    FreewayLeaveRight = 15,
    FreewayLeaveLeft = 16,
    FreewayKeepRight = 17,
    FreewayKeepLeft = 18,
    TrafficCircleRight1 = 19,
    TrafficCircleRight2 = 20,
    TrafficCircleRight3 = 21,
    TrafficCircleRight4 = 22,
    TrafficCircleRight5 = 23,
    TrafficCircleRight6 = 24,
    TrafficCircleRight7 = 25,
    TrafficCircleRight8 = 26,
    TrafficCircleRight9 = 27,
    TrafficCircleRight10 = 28,
    TrafficCircleRight11 = 29,
    TrafficCircleRight12 = 30,
    TrafficCircleLeft1 = 31,
    TrafficCircleLeft2 = 32,
    TrafficCircleLeft3 = 33,
    TrafficCircleLeft4 = 34,
    TrafficCircleLeft5 = 35,
    TrafficCircleLeft6 = 36,
    TrafficCircleLeft7 = 37,
    TrafficCircleLeft8 = 38,
    TrafficCircleLeft9 = 39,
    TrafficCircleLeft10 = 40,
    TrafficCircleLeft11 = 41,
    TrafficCircleLeft12 = 42,
    Start = 43,
    End = 44,
    TakeFerry = 45,
    PassTransitStation = 46,
    LeaveTransitStation = 47,
};

enum class GuidanceMode
{
    None = 0,
    Simulation = 1,
    Navigation = 2,
    Tracking = 3,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Phone.StartScreen.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Phone.StartScreen.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
#define WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
template <> struct __declspec(uuid("cdb5efb3-5788-509d-9be1-71ccb8a3362a")) __declspec(novtable) IAsyncOperation<bool> : impl_IAsyncOperation<bool> {};
#endif

#ifndef WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
#define WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
template <> struct __declspec(uuid("c1d3d1a2-ae17-5a5f-b5a2-bdcc8844889a")) __declspec(novtable) AsyncOperationCompletedHandler<bool> : impl_AsyncOperationCompletedHandler<bool> {};
#endif


}

namespace Windows::Phone::StartScreen {

template <typename D>
struct WINRT_EBO impl_IDualSimTile
{
    void DisplayName(hstring_ref value) const;
    hstring DisplayName() const;
    bool IsPinnedToStart() const;
    Windows::Foundation::IAsyncOperation<bool> CreateAsync() const;
    Windows::Foundation::IAsyncOperation<bool> UpdateAsync() const;
    Windows::Foundation::IAsyncOperation<bool> DeleteAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IDualSimTileStatics
{
    Windows::Phone::StartScreen::DualSimTile GetTileForSim2() const;
    Windows::Foundation::IAsyncOperation<bool> UpdateDisplayNameForSim1Async(hstring_ref name) const;
    Windows::UI::Notifications::TileUpdater CreateTileUpdaterForSim1() const;
    Windows::UI::Notifications::TileUpdater CreateTileUpdaterForSim2() const;
    Windows::UI::Notifications::BadgeUpdater CreateBadgeUpdaterForSim1() const;
    Windows::UI::Notifications::BadgeUpdater CreateBadgeUpdaterForSim2() const;
    Windows::UI::Notifications::ToastNotifier CreateToastNotifierForSim1() const;
    Windows::UI::Notifications::ToastNotifier CreateToastNotifierForSim2() const;
};

template <typename D>
struct WINRT_EBO impl_IToastNotificationManagerStatics3
{
    Windows::UI::Notifications::ToastNotifier CreateToastNotifierForSecondaryTile(hstring_ref tileId) const;
};

struct IDualSimTile :
    Windows::IInspectable,
    impl::consume<IDualSimTile>
{
    IDualSimTile(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDualSimTile>(m_ptr); }
};

struct IDualSimTileStatics :
    Windows::IInspectable,
    impl::consume<IDualSimTileStatics>
{
    IDualSimTileStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDualSimTileStatics>(m_ptr); }
};

struct IToastNotificationManagerStatics3 :
    Windows::IInspectable,
    impl::consume<IToastNotificationManagerStatics3>
{
    IToastNotificationManagerStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToastNotificationManagerStatics3>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Data.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Xaml::Data {

struct LoadMoreItemsResult;

}

namespace Windows::UI::Xaml::Data {

using LoadMoreItemsResult = ABI::Windows::UI::Xaml::Data::LoadMoreItemsResult;

}

namespace ABI::Windows::UI::Xaml::Data {

struct CurrentChangingEventHandler;
struct IBinding;
struct IBinding2;
struct IBindingBase;
struct IBindingBaseFactory;
struct IBindingExpression;
struct IBindingExpressionBase;
struct IBindingExpressionBaseFactory;
struct IBindingExpressionFactory;
struct IBindingFactory;
struct IBindingOperations;
struct IBindingOperationsStatics;
struct ICollectionView;
struct ICollectionViewFactory;
struct ICollectionViewGroup;
struct ICollectionViewSource;
struct ICollectionViewSourceStatics;
struct ICurrentChangingEventArgs;
struct ICurrentChangingEventArgsFactory;
struct ICustomProperty;
struct ICustomPropertyProvider;
struct IItemIndexRange;
struct IItemIndexRangeFactory;
struct IItemsRangeInfo;
struct INotifyPropertyChanged;
struct IPropertyChangedEventArgs;
struct IPropertyChangedEventArgsFactory;
struct IRelativeSource;
struct IRelativeSourceFactory;
struct ISelectionInfo;
struct ISupportIncrementalLoading;
struct IValueConverter;
struct PropertyChangedEventHandler;
struct Binding;
struct BindingBase;
struct BindingExpression;
struct BindingExpressionBase;
struct BindingOperations;
struct CollectionViewSource;
struct CurrentChangingEventArgs;
struct ItemIndexRange;
struct PropertyChangedEventArgs;
struct RelativeSource;

}

namespace Windows::UI::Xaml::Data {

struct CurrentChangingEventHandler;
struct PropertyChangedEventHandler;
struct IBinding;
struct IBinding2;
struct IBindingBase;
struct IBindingBaseFactory;
struct IBindingExpression;
struct IBindingExpressionBase;
struct IBindingExpressionBaseFactory;
struct IBindingExpressionFactory;
struct IBindingFactory;
struct IBindingOperations;
struct IBindingOperationsStatics;
struct ICollectionView;
struct ICollectionViewFactory;
struct ICollectionViewGroup;
struct ICollectionViewSource;
struct ICollectionViewSourceStatics;
struct ICurrentChangingEventArgs;
struct ICurrentChangingEventArgsFactory;
struct ICustomProperty;
struct ICustomPropertyProvider;
struct IItemIndexRange;
struct IItemIndexRangeFactory;
struct IItemsRangeInfo;
struct INotifyPropertyChanged;
struct IPropertyChangedEventArgs;
struct IPropertyChangedEventArgsFactory;
struct IRelativeSource;
struct IRelativeSourceFactory;
struct ISelectionInfo;
struct ISupportIncrementalLoading;
struct IValueConverter;
struct Binding;
struct BindingBase;
struct BindingExpression;
struct BindingExpressionBase;
struct BindingOperations;
struct CollectionViewSource;
struct CurrentChangingEventArgs;
struct ItemIndexRange;
struct PropertyChangedEventArgs;
struct RelativeSource;

}

namespace Windows::UI::Xaml::Data {

enum class BindingMode
{
    OneWay = 1,
    OneTime = 2,
    TwoWay = 3,
};

enum class RelativeSourceMode
{
    None = 0,
    TemplatedParent = 1,
    Self = 2,
};

enum class UpdateSourceTrigger
{
    Default = 0,
    PropertyChanged = 1,
    Explicit = 2,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Security.Authentication.Identity.Provider.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Security.Authentication.Identity.Provider.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Security::Authentication::Identity::Provider {

struct __declspec(uuid("020a16e5-6a25-40a3-8c00-50a023f619d1")) __declspec(novtable) ISecondaryAuthenticationFactorAuthentication : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServiceAuthenticationHmac(Windows::Storage::Streams::IBuffer ** value) = 0;
    virtual HRESULT __stdcall get_SessionNonce(Windows::Storage::Streams::IBuffer ** value) = 0;
    virtual HRESULT __stdcall get_DeviceNonce(Windows::Storage::Streams::IBuffer ** value) = 0;
    virtual HRESULT __stdcall get_DeviceConfigurationData(Windows::Storage::Streams::IBuffer ** value) = 0;
    virtual HRESULT __stdcall abi_FinishAuthenticationAsync(Windows::Storage::Streams::IBuffer * deviceHmac, Windows::Storage::Streams::IBuffer * sessionHmac, Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorFinishAuthenticationStatus> ** result) = 0;
    virtual HRESULT __stdcall abi_AbortAuthenticationAsync(hstring errorLogMessage, Windows::Foundation::IAsyncAction ** result) = 0;
};

struct __declspec(uuid("9cbb5987-ef6d-4bc2-bf49-4617515a0f9a")) __declspec(novtable) ISecondaryAuthenticationFactorAuthenticationResult : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Status(winrt::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationStatus * value) = 0;
    virtual HRESULT __stdcall get_Authentication(Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthentication ** value) = 0;
};

struct __declspec(uuid("d4a5ee56-7291-4073-bc1f-ccb8f5afdf96")) __declspec(novtable) ISecondaryAuthenticationFactorAuthenticationStageChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_StageInfo(Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationStageInfo ** value) = 0;
};

struct __declspec(uuid("56fec28b-e8aa-4c0f-8e4c-a559e73add88")) __declspec(novtable) ISecondaryAuthenticationFactorAuthenticationStageInfo : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Stage(winrt::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationStage * value) = 0;
    virtual HRESULT __stdcall get_Scenario(winrt::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationScenario * value) = 0;
    virtual HRESULT __stdcall get_DeviceId(hstring * value) = 0;
};

struct __declspec(uuid("3f582656-28f8-4e0f-ae8c-5898b9ae2469")) __declspec(novtable) ISecondaryAuthenticationFactorAuthenticationStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ShowNotificationMessageAsync(hstring deviceName, winrt::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationMessage message, Windows::Foundation::IAsyncAction ** result) = 0;
    virtual HRESULT __stdcall abi_StartAuthenticationAsync(hstring deviceId, Windows::Storage::Streams::IBuffer * serviceAuthenticationNonce, Windows::Foundation::IAsyncOperation<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationResult> ** operation) = 0;
    virtual HRESULT __stdcall add_AuthenticationStageChanged(Windows::Foundation::EventHandler<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationStageChangedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_AuthenticationStageChanged(event_token token) = 0;
    virtual HRESULT __stdcall abi_GetAuthenticationStageInfoAsync(Windows::Foundation::IAsyncOperation<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationStageInfo> ** result) = 0;
};

struct __declspec(uuid("1e2ba861-8533-4fce-839b-ecb72410ac14")) __declspec(novtable) ISecondaryAuthenticationFactorInfo : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DeviceId(hstring * deviceId) = 0;
    virtual HRESULT __stdcall get_DeviceFriendlyName(hstring * value) = 0;
    virtual HRESULT __stdcall get_DeviceModelNumber(hstring * value) = 0;
    virtual HRESULT __stdcall get_DeviceConfigurationData(Windows::Storage::Streams::IBuffer ** value) = 0;
};

struct __declspec(uuid("9f4cbbb4-8cba-48b0-840d-dbb22a54c678")) __declspec(novtable) ISecondaryAuthenticationFactorRegistration : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_FinishRegisteringDeviceAsync(Windows::Storage::Streams::IBuffer * deviceConfigurationData, Windows::Foundation::IAsyncAction ** result) = 0;
    virtual HRESULT __stdcall abi_AbortRegisteringDeviceAsync(hstring errorLogMessage, Windows::Foundation::IAsyncAction ** result) = 0;
};

struct __declspec(uuid("a4fe35f0-ade3-4981-af6b-ec195921682a")) __declspec(novtable) ISecondaryAuthenticationFactorRegistrationResult : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Status(winrt::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorRegistrationStatus * value) = 0;
    virtual HRESULT __stdcall get_Registration(Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorRegistration ** value) = 0;
};

struct __declspec(uuid("1adf0f65-e3b7-4155-997f-b756ef65beba")) __declspec(novtable) ISecondaryAuthenticationFactorRegistrationStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_RequestStartRegisteringDeviceAsync(hstring deviceId, winrt::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorDeviceCapabilities capabilities, hstring deviceFriendlyName, hstring deviceModelNumber, Windows::Storage::Streams::IBuffer * deviceKey, Windows::Storage::Streams::IBuffer * mutualAuthenticationKey, Windows::Foundation::IAsyncOperation<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorRegistrationResult> ** operation) = 0;
    virtual HRESULT __stdcall abi_FindAllRegisteredDeviceInfoAsync(winrt::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorDeviceFindScope queryType, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorInfo>> ** deviceInfoList) = 0;
    virtual HRESULT __stdcall abi_UnregisterDeviceAsync(hstring deviceId, Windows::Foundation::IAsyncAction ** result) = 0;
    virtual HRESULT __stdcall abi_UpdateDeviceConfigurationDataAsync(hstring deviceId, Windows::Storage::Streams::IBuffer * deviceConfigurationData, Windows::Foundation::IAsyncAction ** result) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthentication> { using default_interface = Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthentication; };
template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationResult> { using default_interface = Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationResult; };
template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationStageChangedEventArgs> { using default_interface = Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationStageChangedEventArgs; };
template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationStageInfo> { using default_interface = Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationStageInfo; };
template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorInfo> { using default_interface = Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorInfo; };
template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorRegistration> { using default_interface = Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorRegistration; };
template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorRegistrationResult> { using default_interface = Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorRegistrationResult; };

}

namespace Windows::Security::Authentication::Identity::Provider {

template <typename T> struct impl_ISecondaryAuthenticationFactorAuthentication;
template <typename T> struct impl_ISecondaryAuthenticationFactorAuthenticationResult;
template <typename T> struct impl_ISecondaryAuthenticationFactorAuthenticationStageChangedEventArgs;
template <typename T> struct impl_ISecondaryAuthenticationFactorAuthenticationStageInfo;
template <typename T> struct impl_ISecondaryAuthenticationFactorAuthenticationStatics;
template <typename T> struct impl_ISecondaryAuthenticationFactorInfo;
template <typename T> struct impl_ISecondaryAuthenticationFactorRegistration;
template <typename T> struct impl_ISecondaryAuthenticationFactorRegistrationResult;
template <typename T> struct impl_ISecondaryAuthenticationFactorRegistrationStatics;

}

namespace impl {

template <> struct traits<Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthentication>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthentication;
    template <typename D> using consume = Windows::Security::Authentication::Identity::Provider::impl_ISecondaryAuthenticationFactorAuthentication<D>;
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationResult>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationResult;
    template <typename D> using consume = Windows::Security::Authentication::Identity::Provider::impl_ISecondaryAuthenticationFactorAuthenticationResult<D>;
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationStageChangedEventArgs>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationStageChangedEventArgs;
    template <typename D> using consume = Windows::Security::Authentication::Identity::Provider::impl_ISecondaryAuthenticationFactorAuthenticationStageChangedEventArgs<D>;
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationStageInfo>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationStageInfo;
    template <typename D> using consume = Windows::Security::Authentication::Identity::Provider::impl_ISecondaryAuthenticationFactorAuthenticationStageInfo<D>;
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationStatics>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorAuthenticationStatics;
    template <typename D> using consume = Windows::Security::Authentication::Identity::Provider::impl_ISecondaryAuthenticationFactorAuthenticationStatics<D>;
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorInfo>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorInfo;
    template <typename D> using consume = Windows::Security::Authentication::Identity::Provider::impl_ISecondaryAuthenticationFactorInfo<D>;
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorRegistration>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorRegistration;
    template <typename D> using consume = Windows::Security::Authentication::Identity::Provider::impl_ISecondaryAuthenticationFactorRegistration<D>;
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorRegistrationResult>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorRegistrationResult;
    template <typename D> using consume = Windows::Security::Authentication::Identity::Provider::impl_ISecondaryAuthenticationFactorRegistrationResult<D>;
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorRegistrationStatics>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::ISecondaryAuthenticationFactorRegistrationStatics;
    template <typename D> using consume = Windows::Security::Authentication::Identity::Provider::impl_ISecondaryAuthenticationFactorRegistrationStatics<D>;
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthentication>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthentication;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Identity.Provider.SecondaryAuthenticationFactorAuthentication"; }
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationResult>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationResult;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Identity.Provider.SecondaryAuthenticationFactorAuthenticationResult"; }
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationStageChangedEventArgs>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationStageChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Identity.Provider.SecondaryAuthenticationFactorAuthenticationStageChangedEventArgs"; }
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationStageInfo>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorAuthenticationStageInfo;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Identity.Provider.SecondaryAuthenticationFactorAuthenticationStageInfo"; }
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorInfo>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorInfo;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Identity.Provider.SecondaryAuthenticationFactorInfo"; }
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorRegistration>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorRegistration;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Identity.Provider.SecondaryAuthenticationFactorRegistration"; }
};

template <> struct traits<Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorRegistrationResult>
{
    using abi = ABI::Windows::Security::Authentication::Identity::Provider::SecondaryAuthenticationFactorRegistrationResult;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Security.Authentication.Identity.Provider.SecondaryAuthenticationFactorRegistrationResult"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Networking.Vpn.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Networking.Vpn.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Networking.0.h"
#include "Windows.Security.Credentials.0.h"
#include "Windows.Security.Cryptography.Certificates.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Networking.1.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Networking::Vpn {

struct __declspec(uuid("7b06a635-5c58-41d9-94a7-bfbcf1d8ca54")) __declspec(novtable) IVpnAppId : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Type(winrt::Windows::Networking::Vpn::VpnAppIdType * value) = 0;
    virtual HRESULT __stdcall put_Type(winrt::Windows::Networking::Vpn::VpnAppIdType value) = 0;
    virtual HRESULT __stdcall get_Value(hstring * value) = 0;
    virtual HRESULT __stdcall put_Value(hstring value) = 0;
};

struct __declspec(uuid("46adfd2a-0aab-4fdb-821d-d3ddc919788b")) __declspec(novtable) IVpnAppIdFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(winrt::Windows::Networking::Vpn::VpnAppIdType type, hstring value, Windows::Networking::Vpn::IVpnAppId ** result) = 0;
};

struct __declspec(uuid("4ac78d07-d1a8-4303-a091-c8d2e0915bc3")) __declspec(novtable) IVpnChannel : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_AssociateTransport(Windows::IInspectable * mainOuterTunnelTransport, Windows::IInspectable * optionalOuterTunnelTransport) = 0;
    virtual HRESULT __stdcall abi_Start(Windows::Foundation::Collections::IVectorView<Windows::Networking::HostName> * assignedClientIPv4list, Windows::Foundation::Collections::IVectorView<Windows::Networking::HostName> * assignedClientIPv6list, Windows::Networking::Vpn::IVpnInterfaceId * vpnInterfaceId, Windows::Networking::Vpn::IVpnRouteAssignment * routeScope, Windows::Networking::Vpn::IVpnNamespaceAssignment * namespaceScope, uint32_t mtuSize, uint32_t maxFrameSize, bool optimizeForLowCostNetwork, Windows::IInspectable * mainOuterTunnelTransport, Windows::IInspectable * optionalOuterTunnelTransport) = 0;
    virtual HRESULT __stdcall abi_Stop() = 0;
    virtual HRESULT __stdcall abi_RequestCredentials(winrt::Windows::Networking::Vpn::VpnCredentialType credType, bool isRetry, bool isSingleSignOnCredential, Windows::Security::Cryptography::Certificates::ICertificate * certificate, Windows::Networking::Vpn::IVpnPickedCredential ** credential) = 0;
    virtual HRESULT __stdcall abi_RequestVpnPacketBuffer(winrt::Windows::Networking::Vpn::VpnDataPathType type, Windows::Networking::Vpn::IVpnPacketBuffer ** vpnPacketBuffer) = 0;
    virtual HRESULT __stdcall abi_LogDiagnosticMessage(hstring message) = 0;
    virtual HRESULT __stdcall get_Id(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_Configuration(Windows::Networking::Vpn::IVpnChannelConfiguration ** value) = 0;
    virtual HRESULT __stdcall add_ActivityChange(Windows::Foundation::TypedEventHandler<Windows::Networking::Vpn::VpnChannel, Windows::Networking::Vpn::VpnChannelActivityEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ActivityChange(event_token token) = 0;
    virtual HRESULT __stdcall put_PlugInContext(Windows::IInspectable * value) = 0;
    virtual HRESULT __stdcall get_PlugInContext(Windows::IInspectable ** value) = 0;
    virtual HRESULT __stdcall get_SystemHealth(Windows::Networking::Vpn::IVpnSystemHealth ** value) = 0;
    virtual HRESULT __stdcall abi_RequestCustomPrompt(Windows::Foundation::Collections::IVectorView<Windows::Networking::Vpn::IVpnCustomPrompt> * customPrompt) = 0;
    virtual HRESULT __stdcall abi_SetErrorMessage(hstring message) = 0;
    virtual HRESULT __stdcall abi_SetAllowedSslTlsVersions(Windows::IInspectable * tunnelTransport, bool useTls12) = 0;
};

struct __declspec(uuid("2255d165-993b-4629-ad60-f1c3f3537f50")) __declspec(novtable) IVpnChannel2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_StartWithMainTransport(Windows::Foundation::Collections::IVectorView<Windows::Networking::HostName> * assignedClientIPv4list, Windows::Foundation::Collections::IVectorView<Windows::Networking::HostName> * assignedClientIPv6list, Windows::Networking::Vpn::IVpnInterfaceId * vpnInterfaceId, Windows::Networking::Vpn::IVpnRouteAssignment * assignedRoutes, Windows::Networking::Vpn::IVpnDomainNameAssignment * assignedDomainName, uint32_t mtuSize, uint32_t maxFrameSize, bool Reserved, Windows::IInspectable * mainOuterTunnelTransport) = 0;
    virtual HRESULT __stdcall abi_StartExistingTransports(Windows::Foundation::Collections::IVectorView<Windows::Networking::HostName> * assignedClientIPv4list, Windows::Foundation::Collections::IVectorView<Windows::Networking::HostName> * assignedClientIPv6list, Windows::Networking::Vpn::IVpnInterfaceId * vpnInterfaceId, Windows::Networking::Vpn::IVpnRouteAssignment * assignedRoutes, Windows::Networking::Vpn::IVpnDomainNameAssignment * assignedDomainName, uint32_t mtuSize, uint32_t maxFrameSize, bool Reserved) = 0;
    virtual HRESULT __stdcall add_ActivityStateChange(Windows::Foundation::TypedEventHandler<Windows::Networking::Vpn::VpnChannel, Windows::Networking::Vpn::VpnChannelActivityStateChangedArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_ActivityStateChange(event_token token) = 0;
    virtual HRESULT __stdcall abi_GetVpnSendPacketBuffer(Windows::Networking::Vpn::IVpnPacketBuffer ** vpnSendPacketBuffer) = 0;
    virtual HRESULT __stdcall abi_GetVpnReceivePacketBuffer(Windows::Networking::Vpn::IVpnPacketBuffer ** vpnReceivePacketBuffer) = 0;
    virtual HRESULT __stdcall abi_RequestCustomPromptAsync(Windows::Foundation::Collections::IVectorView<Windows::Networking::Vpn::IVpnCustomPromptElement> * customPromptElement, Windows::Foundation::IAsyncAction ** action) = 0;
    virtual HRESULT __stdcall abi_RequestCredentialsWithCertificateAsync(winrt::Windows::Networking::Vpn::VpnCredentialType credType, uint32_t credOptions, Windows::Security::Cryptography::Certificates::ICertificate * certificate, Windows::Foundation::IAsyncOperation<Windows::Networking::Vpn::VpnCredential> ** credential) = 0;
    virtual HRESULT __stdcall abi_RequestCredentialsWithOptionsAsync(winrt::Windows::Networking::Vpn::VpnCredentialType credType, uint32_t credOptions, Windows::Foundation::IAsyncOperation<Windows::Networking::Vpn::VpnCredential> ** credential) = 0;
    virtual HRESULT __stdcall abi_RequestCredentialsSimpleAsync(winrt::Windows::Networking::Vpn::VpnCredentialType credType, Windows::Foundation::IAsyncOperation<Windows::Networking::Vpn::VpnCredential> ** credential) = 0;
    virtual HRESULT __stdcall abi_TerminateConnection(hstring message) = 0;
    virtual HRESULT __stdcall abi_StartWithTrafficFilter(Windows::Foundation::Collections::IVectorView<Windows::Networking::HostName> * assignedClientIpv4List, Windows::Foundation::Collections::IVectorView<Windows::Networking::HostName> * assignedClientIpv6List, Windows::Networking::Vpn::IVpnInterfaceId * vpnInterfaceId, Windows::Networking::Vpn::IVpnRouteAssignment * assignedRoutes, Windows::Networking::Vpn::IVpnDomainNameAssignment * assignedNamespace, uint32_t mtuSize, uint32_t maxFrameSize, bool reserved, Windows::IInspectable * mainOuterTunnelTransport, Windows::IInspectable * optionalOuterTunnelTransport, Windows::Networking::Vpn::IVpnTrafficFilterAssignment * assignedTrafficFilters) = 0;
};

struct __declspec(uuid("a36c88f2-afdc-4775-855d-d4ac0a35fc55")) __declspec(novtable) IVpnChannelActivityEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Type(winrt::Windows::Networking::Vpn::VpnChannelActivityEventType * value) = 0;
};

struct __declspec(uuid("3d750565-fdc0-4bbe-a23b-45fffc6d97a1")) __declspec(novtable) IVpnChannelActivityStateChangedArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ActivityState(winrt::Windows::Networking::Vpn::VpnChannelActivityEventType * value) = 0;
};

struct __declspec(uuid("0e2ddca2-2012-4fe4-b179-8c652c6d107e")) __declspec(novtable) IVpnChannelConfiguration : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServerServiceName(hstring * value) = 0;
    virtual HRESULT __stdcall get_ServerHostNameList(Windows::Foundation::Collections::IVectorView<Windows::Networking::HostName> ** value) = 0;
    virtual HRESULT __stdcall get_CustomField(hstring * value) = 0;
};

struct __declspec(uuid("f30b574c-7824-471c-a118-63dbc93ae4c7")) __declspec(novtable) IVpnChannelConfiguration2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServerUris(Windows::Foundation::Collections::IVectorView<Windows::Foundation::Uri> ** value) = 0;
};

struct __declspec(uuid("88eb062d-e818-4ffd-98a6-363e3736c95d")) __declspec(novtable) IVpnChannelStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ProcessEventAsync(Windows::IInspectable * thirdPartyPlugIn, Windows::IInspectable * event) = 0;
};

struct __declspec(uuid("b7e78af3-a46d-404b-8729-1832522853ac")) __declspec(novtable) IVpnCredential : Windows::IInspectable
{
    virtual HRESULT __stdcall get_PasskeyCredential(Windows::Security::Credentials::IPasswordCredential ** value) = 0;
    virtual HRESULT __stdcall get_CertificateCredential(Windows::Security::Cryptography::Certificates::ICertificate ** value) = 0;
    virtual HRESULT __stdcall get_AdditionalPin(hstring * value) = 0;
    virtual HRESULT __stdcall get_OldPasswordCredential(Windows::Security::Credentials::IPasswordCredential ** value) = 0;
};

struct __declspec(uuid("43878753-03c5-4e61-93d7-a957714c4282")) __declspec(novtable) IVpnCustomCheckBox : Windows::IInspectable
{
    virtual HRESULT __stdcall put_InitialCheckState(bool value) = 0;
    virtual HRESULT __stdcall get_InitialCheckState(bool * value) = 0;
    virtual HRESULT __stdcall get_Checked(bool * value) = 0;
};

struct __declspec(uuid("9a24158e-dba1-4c6f-8270-dcf3c9761c4c")) __declspec(novtable) IVpnCustomComboBox : Windows::IInspectable
{
    virtual HRESULT __stdcall put_OptionsText(Windows::Foundation::Collections::IVectorView<hstring> * value) = 0;
    virtual HRESULT __stdcall get_OptionsText(Windows::Foundation::Collections::IVectorView<hstring> ** value) = 0;
    virtual HRESULT __stdcall get_Selected(uint32_t * value) = 0;
};

struct __declspec(uuid("3002d9a0-cfbf-4c0b-8f3c-66f503c20b39")) __declspec(novtable) IVpnCustomEditBox : Windows::IInspectable
{
    virtual HRESULT __stdcall put_DefaultText(hstring value) = 0;
    virtual HRESULT __stdcall get_DefaultText(hstring * value) = 0;
    virtual HRESULT __stdcall put_NoEcho(bool value) = 0;
    virtual HRESULT __stdcall get_NoEcho(bool * value) = 0;
    virtual HRESULT __stdcall get_Text(hstring * value) = 0;
};

struct __declspec(uuid("9ec4efb2-c942-42af-b223-588b48328721")) __declspec(novtable) IVpnCustomErrorBox : Windows::IInspectable
{
};

struct __declspec(uuid("9b2ebe7b-87d5-433c-b4f6-eee6aa68a244")) __declspec(novtable) IVpnCustomPrompt : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Label(hstring value) = 0;
    virtual HRESULT __stdcall get_Label(hstring * value) = 0;
    virtual HRESULT __stdcall put_Compulsory(bool value) = 0;
    virtual HRESULT __stdcall get_Compulsory(bool * value) = 0;
    virtual HRESULT __stdcall put_Bordered(bool value) = 0;
    virtual HRESULT __stdcall get_Bordered(bool * value) = 0;
};

struct __declspec(uuid("c4c9a69e-ff47-4527-9f27-a49292019979")) __declspec(novtable) IVpnCustomPromptBooleanInput : Windows::IInspectable
{
    virtual HRESULT __stdcall put_InitialValue(bool value) = 0;
    virtual HRESULT __stdcall get_InitialValue(bool * value) = 0;
    virtual HRESULT __stdcall get_Value(bool * value) = 0;
};

struct __declspec(uuid("73bd5638-6f04-404d-93dd-50a44924a38b")) __declspec(novtable) IVpnCustomPromptElement : Windows::IInspectable
{
    virtual HRESULT __stdcall put_DisplayName(hstring value) = 0;
    virtual HRESULT __stdcall get_DisplayName(hstring * value) = 0;
    virtual HRESULT __stdcall put_Compulsory(bool value) = 0;
    virtual HRESULT __stdcall get_Compulsory(bool * value) = 0;
    virtual HRESULT __stdcall put_Emphasized(bool value) = 0;
    virtual HRESULT __stdcall get_Emphasized(bool * value) = 0;
};

struct __declspec(uuid("3b8f34d9-8ec1-4e95-9a4e-7ba64d38f330")) __declspec(novtable) IVpnCustomPromptOptionSelector : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Options(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
    virtual HRESULT __stdcall get_SelectedIndex(uint32_t * value) = 0;
};

struct __declspec(uuid("3bc8bdee-3a42-49a3-abdd-07b2edea752d")) __declspec(novtable) IVpnCustomPromptText : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Text(hstring value) = 0;
    virtual HRESULT __stdcall get_Text(hstring * value) = 0;
};

struct __declspec(uuid("c9da9c75-913c-47d5-88ba-48fc48930235")) __declspec(novtable) IVpnCustomPromptTextInput : Windows::IInspectable
{
    virtual HRESULT __stdcall put_PlaceholderText(hstring value) = 0;
    virtual HRESULT __stdcall get_PlaceholderText(hstring * value) = 0;
    virtual HRESULT __stdcall put_IsTextHidden(bool value) = 0;
    virtual HRESULT __stdcall get_IsTextHidden(bool * value) = 0;
    virtual HRESULT __stdcall get_Text(hstring * value) = 0;
};

struct __declspec(uuid("daa4c3ca-8f23-4d36-91f1-76d937827942")) __declspec(novtable) IVpnCustomTextBox : Windows::IInspectable
{
    virtual HRESULT __stdcall put_DisplayText(hstring value) = 0;
    virtual HRESULT __stdcall get_DisplayText(hstring * value) = 0;
};

struct __declspec(uuid("4135b141-ccdb-49b5-9401-039a8ae767e9")) __declspec(novtable) IVpnDomainNameAssignment : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DomainNameList(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnDomainNameInfo> ** value) = 0;
    virtual HRESULT __stdcall put_ProxyAutoConfigurationUri(Windows::Foundation::IUriRuntimeClass * value) = 0;
    virtual HRESULT __stdcall get_ProxyAutoConfigurationUri(Windows::Foundation::IUriRuntimeClass ** value) = 0;
};

struct __declspec(uuid("ad2eb82f-ea8e-4f7a-843e-1a87e32e1b9a")) __declspec(novtable) IVpnDomainNameInfo : Windows::IInspectable
{
    virtual HRESULT __stdcall put_DomainName(Windows::Networking::IHostName * value) = 0;
    virtual HRESULT __stdcall get_DomainName(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall put_DomainNameType(winrt::Windows::Networking::Vpn::VpnDomainNameType value) = 0;
    virtual HRESULT __stdcall get_DomainNameType(winrt::Windows::Networking::Vpn::VpnDomainNameType * value) = 0;
    virtual HRESULT __stdcall get_DnsServers(Windows::Foundation::Collections::IVector<Windows::Networking::HostName> ** value) = 0;
    virtual HRESULT __stdcall get_WebProxyServers(Windows::Foundation::Collections::IVector<Windows::Networking::HostName> ** value) = 0;
};

struct __declspec(uuid("ab871151-6c53-4828-9883-d886de104407")) __declspec(novtable) IVpnDomainNameInfo2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_WebProxyUris(Windows::Foundation::Collections::IVector<Windows::Foundation::Uri> ** value) = 0;
};

struct __declspec(uuid("2507bb75-028f-4688-8d3a-c4531df37da8")) __declspec(novtable) IVpnDomainNameInfoFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateVpnDomainNameInfo(hstring name, winrt::Windows::Networking::Vpn::VpnDomainNameType nameType, Windows::Foundation::Collections::IIterable<Windows::Networking::HostName> * dnsServerList, Windows::Foundation::Collections::IIterable<Windows::Networking::HostName> * proxyServerList, Windows::Networking::Vpn::IVpnDomainNameInfo ** domainNameInfo) = 0;
};

struct __declspec(uuid("9e2ddca2-1712-4ce4-b179-8c652c6d1011")) __declspec(novtable) IVpnInterfaceId : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetAddressInfo(uint32_t * __idSize, uint8_t ** id) = 0;
};

struct __declspec(uuid("9e2ddca2-1712-4ce4-b179-8c652c6d1000")) __declspec(novtable) IVpnInterfaceIdFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateVpnInterfaceId(uint32_t __addressSize, uint8_t * address, Windows::Networking::Vpn::IVpnInterfaceId ** vpnInterfaceId) = 0;
};

struct __declspec(uuid("193696cd-a5c4-4abe-852b-785be4cb3e34")) __declspec(novtable) IVpnManagementAgent : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_AddProfileFromXmlAsync(hstring xml, Windows::Foundation::IAsyncOperation<winrt::Windows::Networking::Vpn::VpnManagementErrorStatus> ** operation) = 0;
    virtual HRESULT __stdcall abi_AddProfileFromObjectAsync(Windows::Networking::Vpn::IVpnProfile * profile, Windows::Foundation::IAsyncOperation<winrt::Windows::Networking::Vpn::VpnManagementErrorStatus> ** operation) = 0;
    virtual HRESULT __stdcall abi_UpdateProfileFromXmlAsync(hstring xml, Windows::Foundation::IAsyncOperation<winrt::Windows::Networking::Vpn::VpnManagementErrorStatus> ** operation) = 0;
    virtual HRESULT __stdcall abi_UpdateProfileFromObjectAsync(Windows::Networking::Vpn::IVpnProfile * profile, Windows::Foundation::IAsyncOperation<winrt::Windows::Networking::Vpn::VpnManagementErrorStatus> ** operation) = 0;
    virtual HRESULT __stdcall abi_GetProfilesAsync(Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Networking::Vpn::IVpnProfile>> ** operation) = 0;
    virtual HRESULT __stdcall abi_DeleteProfileAsync(Windows::Networking::Vpn::IVpnProfile * profile, Windows::Foundation::IAsyncOperation<winrt::Windows::Networking::Vpn::VpnManagementErrorStatus> ** operation) = 0;
    virtual HRESULT __stdcall abi_ConnectProfileAsync(Windows::Networking::Vpn::IVpnProfile * profile, Windows::Foundation::IAsyncOperation<winrt::Windows::Networking::Vpn::VpnManagementErrorStatus> ** operation) = 0;
    virtual HRESULT __stdcall abi_ConnectProfileWithPasswordCredentialAsync(Windows::Networking::Vpn::IVpnProfile * profile, Windows::Security::Credentials::IPasswordCredential * passwordCredential, Windows::Foundation::IAsyncOperation<winrt::Windows::Networking::Vpn::VpnManagementErrorStatus> ** operation) = 0;
    virtual HRESULT __stdcall abi_DisconnectProfileAsync(Windows::Networking::Vpn::IVpnProfile * profile, Windows::Foundation::IAsyncOperation<winrt::Windows::Networking::Vpn::VpnManagementErrorStatus> ** operation) = 0;
};

struct __declspec(uuid("d7f7db18-307d-4c0e-bd62-8fa270bbadd6")) __declspec(novtable) IVpnNamespaceAssignment : Windows::IInspectable
{
    virtual HRESULT __stdcall put_NamespaceList(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnNamespaceInfo> * value) = 0;
    virtual HRESULT __stdcall get_NamespaceList(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnNamespaceInfo> ** value) = 0;
    virtual HRESULT __stdcall put_ProxyAutoConfigUri(Windows::Foundation::IUriRuntimeClass * value) = 0;
    virtual HRESULT __stdcall get_ProxyAutoConfigUri(Windows::Foundation::IUriRuntimeClass ** value) = 0;
};

struct __declspec(uuid("30edfb43-444f-44c5-8167-a35a91f1af94")) __declspec(novtable) IVpnNamespaceInfo : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Namespace(hstring value) = 0;
    virtual HRESULT __stdcall get_Namespace(hstring * value) = 0;
    virtual HRESULT __stdcall put_DnsServers(Windows::Foundation::Collections::IVector<Windows::Networking::HostName> * value) = 0;
    virtual HRESULT __stdcall get_DnsServers(Windows::Foundation::Collections::IVector<Windows::Networking::HostName> ** value) = 0;
    virtual HRESULT __stdcall put_WebProxyServers(Windows::Foundation::Collections::IVector<Windows::Networking::HostName> * value) = 0;
    virtual HRESULT __stdcall get_WebProxyServers(Windows::Foundation::Collections::IVector<Windows::Networking::HostName> ** value) = 0;
};

struct __declspec(uuid("cb3e951a-b0ce-442b-acbb-5f99b202c31c")) __declspec(novtable) IVpnNamespaceInfoFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateVpnNamespaceInfo(hstring name, Windows::Foundation::Collections::IVector<Windows::Networking::HostName> * dnsServerList, Windows::Foundation::Collections::IVector<Windows::Networking::HostName> * proxyServerList, Windows::Networking::Vpn::IVpnNamespaceInfo ** namespaceInfo) = 0;
};

struct __declspec(uuid("a4aee29e-6417-4333-9842-f0a66db69802")) __declspec(novtable) IVpnNativeProfile : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Servers(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
    virtual HRESULT __stdcall get_RoutingPolicyType(winrt::Windows::Networking::Vpn::VpnRoutingPolicyType * value) = 0;
    virtual HRESULT __stdcall put_RoutingPolicyType(winrt::Windows::Networking::Vpn::VpnRoutingPolicyType value) = 0;
    virtual HRESULT __stdcall get_NativeProtocolType(winrt::Windows::Networking::Vpn::VpnNativeProtocolType * value) = 0;
    virtual HRESULT __stdcall put_NativeProtocolType(winrt::Windows::Networking::Vpn::VpnNativeProtocolType value) = 0;
    virtual HRESULT __stdcall get_UserAuthenticationMethod(winrt::Windows::Networking::Vpn::VpnAuthenticationMethod * value) = 0;
    virtual HRESULT __stdcall put_UserAuthenticationMethod(winrt::Windows::Networking::Vpn::VpnAuthenticationMethod value) = 0;
    virtual HRESULT __stdcall get_TunnelAuthenticationMethod(winrt::Windows::Networking::Vpn::VpnAuthenticationMethod * value) = 0;
    virtual HRESULT __stdcall put_TunnelAuthenticationMethod(winrt::Windows::Networking::Vpn::VpnAuthenticationMethod value) = 0;
    virtual HRESULT __stdcall get_EapConfiguration(hstring * Value) = 0;
    virtual HRESULT __stdcall put_EapConfiguration(hstring value) = 0;
};

struct __declspec(uuid("0fec2467-cdb5-4ac7-b5a3-0afb5ec47682")) __declspec(novtable) IVpnNativeProfile2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_RequireVpnClientAppUI(bool * value) = 0;
    virtual HRESULT __stdcall put_RequireVpnClientAppUI(bool value) = 0;
    virtual HRESULT __stdcall get_ConnectionStatus(winrt::Windows::Networking::Vpn::VpnManagementConnectionStatus * value) = 0;
};

struct __declspec(uuid("c2f891fc-4d5c-4a63-b70d-4e307eacce55")) __declspec(novtable) IVpnPacketBuffer : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Buffer(Windows::Storage::Streams::IBuffer ** value) = 0;
    virtual HRESULT __stdcall put_Status(winrt::Windows::Networking::Vpn::VpnPacketBufferStatus value) = 0;
    virtual HRESULT __stdcall get_Status(winrt::Windows::Networking::Vpn::VpnPacketBufferStatus * value) = 0;
    virtual HRESULT __stdcall put_TransportAffinity(uint32_t value) = 0;
    virtual HRESULT __stdcall get_TransportAffinity(uint32_t * value) = 0;
};

struct __declspec(uuid("665e91f0-8805-4bf5-a619-2e84882e6b4f")) __declspec(novtable) IVpnPacketBuffer2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AppId(Windows::Networking::Vpn::IVpnAppId ** value) = 0;
};

struct __declspec(uuid("9e2ddca2-1712-4ce4-b179-8c652c6d9999")) __declspec(novtable) IVpnPacketBufferFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateVpnPacketBuffer(Windows::Networking::Vpn::IVpnPacketBuffer * parentBuffer, uint32_t offset, uint32_t length, Windows::Networking::Vpn::IVpnPacketBuffer ** vpnPacketBuffer) = 0;
};

struct __declspec(uuid("c2f891fc-4d5c-4a63-b70d-4e307eacce77")) __declspec(novtable) IVpnPacketBufferList : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Append(Windows::Networking::Vpn::IVpnPacketBuffer * nextVpnPacketBuffer) = 0;
    virtual HRESULT __stdcall abi_AddAtBegin(Windows::Networking::Vpn::IVpnPacketBuffer * nextVpnPacketBuffer) = 0;
    virtual HRESULT __stdcall abi_RemoveAtEnd(Windows::Networking::Vpn::IVpnPacketBuffer ** nextVpnPacketBuffer) = 0;
    virtual HRESULT __stdcall abi_RemoveAtBegin(Windows::Networking::Vpn::IVpnPacketBuffer ** nextVpnPacketBuffer) = 0;
    virtual HRESULT __stdcall abi_Clear() = 0;
    virtual HRESULT __stdcall put_Status(winrt::Windows::Networking::Vpn::VpnPacketBufferStatus value) = 0;
    virtual HRESULT __stdcall get_Status(winrt::Windows::Networking::Vpn::VpnPacketBufferStatus * value) = 0;
    virtual HRESULT __stdcall get_Size(uint32_t * value) = 0;
};

struct __declspec(uuid("3e7acfe5-ea1e-482a-8d98-c065f57d89ea")) __declspec(novtable) IVpnPacketBufferList2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_AddLeadingPacket(Windows::Networking::Vpn::IVpnPacketBuffer * nextVpnPacketBuffer) = 0;
    virtual HRESULT __stdcall abi_RemoveLeadingPacket(Windows::Networking::Vpn::IVpnPacketBuffer ** nextVpnPacketBuffer) = 0;
    virtual HRESULT __stdcall abi_AddTrailingPacket(Windows::Networking::Vpn::IVpnPacketBuffer * nextVpnPacketBuffer) = 0;
    virtual HRESULT __stdcall abi_RemoveTrailingPacket(Windows::Networking::Vpn::IVpnPacketBuffer ** nextVpnPacketBuffer) = 0;
};

struct __declspec(uuid("9a793ac7-8854-4e52-ad97-24dd9a842bce")) __declspec(novtable) IVpnPickedCredential : Windows::IInspectable
{
    virtual HRESULT __stdcall get_PasskeyCredential(Windows::Security::Credentials::IPasswordCredential ** value) = 0;
    virtual HRESULT __stdcall get_AdditionalPin(hstring * value) = 0;
    virtual HRESULT __stdcall get_OldPasswordCredential(Windows::Security::Credentials::IPasswordCredential ** value) = 0;
};

struct __declspec(uuid("ceb78d07-d0a8-4703-a091-c8c2c0915bc4")) __declspec(novtable) IVpnPlugIn : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Connect(Windows::Networking::Vpn::IVpnChannel * channel) = 0;
    virtual HRESULT __stdcall abi_Disconnect(Windows::Networking::Vpn::IVpnChannel * channel) = 0;
    virtual HRESULT __stdcall abi_GetKeepAlivePayload(Windows::Networking::Vpn::IVpnChannel * channel, Windows::Networking::Vpn::IVpnPacketBuffer ** keepAlivePacket) = 0;
    virtual HRESULT __stdcall abi_Encapsulate(Windows::Networking::Vpn::IVpnChannel * channel, Windows::Networking::Vpn::IVpnPacketBufferList * packets, Windows::Networking::Vpn::IVpnPacketBufferList * encapulatedPackets) = 0;
    virtual HRESULT __stdcall abi_Decapsulate(Windows::Networking::Vpn::IVpnChannel * channel, Windows::Networking::Vpn::IVpnPacketBuffer * encapBuffer, Windows::Networking::Vpn::IVpnPacketBufferList * decapsulatedPackets, Windows::Networking::Vpn::IVpnPacketBufferList * controlPacketsToSend) = 0;
};

struct __declspec(uuid("0edf0da4-4f00-4589-8d7b-4bf988f6542c")) __declspec(novtable) IVpnPlugInProfile : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ServerUris(Windows::Foundation::Collections::IVector<Windows::Foundation::Uri> ** value) = 0;
    virtual HRESULT __stdcall get_CustomConfiguration(hstring * value) = 0;
    virtual HRESULT __stdcall put_CustomConfiguration(hstring value) = 0;
    virtual HRESULT __stdcall get_VpnPluginPackageFamilyName(hstring * value) = 0;
    virtual HRESULT __stdcall put_VpnPluginPackageFamilyName(hstring value) = 0;
};

struct __declspec(uuid("611c4892-cf94-4ad6-ba99-00f4ff34565e")) __declspec(novtable) IVpnPlugInProfile2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_RequireVpnClientAppUI(bool * value) = 0;
    virtual HRESULT __stdcall put_RequireVpnClientAppUI(bool value) = 0;
    virtual HRESULT __stdcall get_ConnectionStatus(winrt::Windows::Networking::Vpn::VpnManagementConnectionStatus * value) = 0;
};

struct __declspec(uuid("7875b751-b0d7-43db-8a93-d3fe2479e56a")) __declspec(novtable) IVpnProfile : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ProfileName(hstring * value) = 0;
    virtual HRESULT __stdcall put_ProfileName(hstring value) = 0;
    virtual HRESULT __stdcall get_AppTriggers(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnAppId> ** value) = 0;
    virtual HRESULT __stdcall get_Routes(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnRoute> ** value) = 0;
    virtual HRESULT __stdcall get_DomainNameInfoList(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnDomainNameInfo> ** value) = 0;
    virtual HRESULT __stdcall get_TrafficFilters(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnTrafficFilter> ** value) = 0;
    virtual HRESULT __stdcall get_RememberCredentials(bool * value) = 0;
    virtual HRESULT __stdcall put_RememberCredentials(bool value) = 0;
    virtual HRESULT __stdcall get_AlwaysOn(bool * value) = 0;
    virtual HRESULT __stdcall put_AlwaysOn(bool value) = 0;
};

struct __declspec(uuid("b5731b83-0969-4699-938e-7776db29cfb3")) __declspec(novtable) IVpnRoute : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Address(Windows::Networking::IHostName * value) = 0;
    virtual HRESULT __stdcall get_Address(Windows::Networking::IHostName ** value) = 0;
    virtual HRESULT __stdcall put_PrefixSize(uint8_t value) = 0;
    virtual HRESULT __stdcall get_PrefixSize(uint8_t * value) = 0;
};

struct __declspec(uuid("db64de22-ce39-4a76-9550-f61039f80e48")) __declspec(novtable) IVpnRouteAssignment : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Ipv4InclusionRoutes(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnRoute> * value) = 0;
    virtual HRESULT __stdcall put_Ipv6InclusionRoutes(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnRoute> * value) = 0;
    virtual HRESULT __stdcall get_Ipv4InclusionRoutes(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnRoute> ** value) = 0;
    virtual HRESULT __stdcall get_Ipv6InclusionRoutes(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnRoute> ** value) = 0;
    virtual HRESULT __stdcall put_Ipv4ExclusionRoutes(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnRoute> * value) = 0;
    virtual HRESULT __stdcall put_Ipv6ExclusionRoutes(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnRoute> * value) = 0;
    virtual HRESULT __stdcall get_Ipv4ExclusionRoutes(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnRoute> ** value) = 0;
    virtual HRESULT __stdcall get_Ipv6ExclusionRoutes(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnRoute> ** value) = 0;
    virtual HRESULT __stdcall put_ExcludeLocalSubnets(bool value) = 0;
    virtual HRESULT __stdcall get_ExcludeLocalSubnets(bool * value) = 0;
};

struct __declspec(uuid("bdeab5ff-45cf-4b99-83fb-db3bc2672b02")) __declspec(novtable) IVpnRouteFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateVpnRoute(Windows::Networking::IHostName * address, uint8_t prefixSize, Windows::Networking::Vpn::IVpnRoute ** route) = 0;
};

struct __declspec(uuid("99a8f8af-c0ee-4e75-817a-f231aee5123d")) __declspec(novtable) IVpnSystemHealth : Windows::IInspectable
{
    virtual HRESULT __stdcall get_StatementOfHealth(Windows::Storage::Streams::IBuffer ** value) = 0;
};

struct __declspec(uuid("2f691b60-6c9f-47f5-ac36-bb1b042e2c50")) __declspec(novtable) IVpnTrafficFilter : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AppId(Windows::Networking::Vpn::IVpnAppId ** value) = 0;
    virtual HRESULT __stdcall put_AppId(Windows::Networking::Vpn::IVpnAppId * value) = 0;
    virtual HRESULT __stdcall get_AppClaims(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
    virtual HRESULT __stdcall get_Protocol(winrt::Windows::Networking::Vpn::VpnIPProtocol * value) = 0;
    virtual HRESULT __stdcall put_Protocol(winrt::Windows::Networking::Vpn::VpnIPProtocol value) = 0;
    virtual HRESULT __stdcall get_LocalPortRanges(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
    virtual HRESULT __stdcall get_RemotePortRanges(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
    virtual HRESULT __stdcall get_LocalAddressRanges(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
    virtual HRESULT __stdcall get_RemoteAddressRanges(Windows::Foundation::Collections::IVector<hstring> ** value) = 0;
    virtual HRESULT __stdcall get_RoutingPolicyType(winrt::Windows::Networking::Vpn::VpnRoutingPolicyType * value) = 0;
    virtual HRESULT __stdcall put_RoutingPolicyType(winrt::Windows::Networking::Vpn::VpnRoutingPolicyType value) = 0;
};

struct __declspec(uuid("56ccd45c-e664-471e-89cd-601603b9e0f3")) __declspec(novtable) IVpnTrafficFilterAssignment : Windows::IInspectable
{
    virtual HRESULT __stdcall get_TrafficFilterList(Windows::Foundation::Collections::IVector<Windows::Networking::Vpn::VpnTrafficFilter> ** value) = 0;
    virtual HRESULT __stdcall get_AllowOutbound(bool * value) = 0;
    virtual HRESULT __stdcall put_AllowOutbound(bool value) = 0;
    virtual HRESULT __stdcall get_AllowInbound(bool * value) = 0;
    virtual HRESULT __stdcall put_AllowInbound(bool value) = 0;
};

struct __declspec(uuid("480d41d5-7f99-474c-86ee-96df168318f1")) __declspec(novtable) IVpnTrafficFilterFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(Windows::Networking::Vpn::IVpnAppId * appId, Windows::Networking::Vpn::IVpnTrafficFilter ** result) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Networking::Vpn::VpnAppId> { using default_interface = Windows::Networking::Vpn::IVpnAppId; };
template <> struct traits<Windows::Networking::Vpn::VpnChannel> { using default_interface = Windows::Networking::Vpn::IVpnChannel; };
template <> struct traits<Windows::Networking::Vpn::VpnChannelActivityEventArgs> { using default_interface = Windows::Networking::Vpn::IVpnChannelActivityEventArgs; };
template <> struct traits<Windows::Networking::Vpn::VpnChannelActivityStateChangedArgs> { using default_interface = Windows::Networking::Vpn::IVpnChannelActivityStateChangedArgs; };
template <> struct traits<Windows::Networking::Vpn::VpnChannelConfiguration> { using default_interface = Windows::Networking::Vpn::IVpnChannelConfiguration; };
template <> struct traits<Windows::Networking::Vpn::VpnCredential> { using default_interface = Windows::Networking::Vpn::IVpnCredential; };
template <> struct traits<Windows::Networking::Vpn::VpnCustomCheckBox> { using default_interface = Windows::Networking::Vpn::IVpnCustomCheckBox; };
template <> struct traits<Windows::Networking::Vpn::VpnCustomComboBox> { using default_interface = Windows::Networking::Vpn::IVpnCustomComboBox; };
template <> struct traits<Windows::Networking::Vpn::VpnCustomEditBox> { using default_interface = Windows::Networking::Vpn::IVpnCustomEditBox; };
template <> struct traits<Windows::Networking::Vpn::VpnCustomErrorBox> { using default_interface = Windows::Networking::Vpn::IVpnCustomErrorBox; };
template <> struct traits<Windows::Networking::Vpn::VpnCustomPromptBooleanInput> { using default_interface = Windows::Networking::Vpn::IVpnCustomPromptBooleanInput; };
template <> struct traits<Windows::Networking::Vpn::VpnCustomPromptOptionSelector> { using default_interface = Windows::Networking::Vpn::IVpnCustomPromptOptionSelector; };
template <> struct traits<Windows::Networking::Vpn::VpnCustomPromptText> { using default_interface = Windows::Networking::Vpn::IVpnCustomPromptText; };
template <> struct traits<Windows::Networking::Vpn::VpnCustomPromptTextInput> { using default_interface = Windows::Networking::Vpn::IVpnCustomPromptTextInput; };
template <> struct traits<Windows::Networking::Vpn::VpnCustomTextBox> { using default_interface = Windows::Networking::Vpn::IVpnCustomTextBox; };
template <> struct traits<Windows::Networking::Vpn::VpnDomainNameAssignment> { using default_interface = Windows::Networking::Vpn::IVpnDomainNameAssignment; };
template <> struct traits<Windows::Networking::Vpn::VpnDomainNameInfo> { using default_interface = Windows::Networking::Vpn::IVpnDomainNameInfo; };
template <> struct traits<Windows::Networking::Vpn::VpnInterfaceId> { using default_interface = Windows::Networking::Vpn::IVpnInterfaceId; };
template <> struct traits<Windows::Networking::Vpn::VpnManagementAgent> { using default_interface = Windows::Networking::Vpn::IVpnManagementAgent; };
template <> struct traits<Windows::Networking::Vpn::VpnNamespaceAssignment> { using default_interface = Windows::Networking::Vpn::IVpnNamespaceAssignment; };
template <> struct traits<Windows::Networking::Vpn::VpnNamespaceInfo> { using default_interface = Windows::Networking::Vpn::IVpnNamespaceInfo; };
template <> struct traits<Windows::Networking::Vpn::VpnNativeProfile> { using default_interface = Windows::Networking::Vpn::IVpnNativeProfile; };
template <> struct traits<Windows::Networking::Vpn::VpnPacketBuffer> { using default_interface = Windows::Networking::Vpn::IVpnPacketBuffer; };
template <> struct traits<Windows::Networking::Vpn::VpnPacketBufferList> { using default_interface = Windows::Networking::Vpn::IVpnPacketBufferList; };
template <> struct traits<Windows::Networking::Vpn::VpnPickedCredential> { using default_interface = Windows::Networking::Vpn::IVpnPickedCredential; };
template <> struct traits<Windows::Networking::Vpn::VpnPlugInProfile> { using default_interface = Windows::Networking::Vpn::IVpnPlugInProfile; };
template <> struct traits<Windows::Networking::Vpn::VpnRoute> { using default_interface = Windows::Networking::Vpn::IVpnRoute; };
template <> struct traits<Windows::Networking::Vpn::VpnRouteAssignment> { using default_interface = Windows::Networking::Vpn::IVpnRouteAssignment; };
template <> struct traits<Windows::Networking::Vpn::VpnSystemHealth> { using default_interface = Windows::Networking::Vpn::IVpnSystemHealth; };
template <> struct traits<Windows::Networking::Vpn::VpnTrafficFilter> { using default_interface = Windows::Networking::Vpn::IVpnTrafficFilter; };
template <> struct traits<Windows::Networking::Vpn::VpnTrafficFilterAssignment> { using default_interface = Windows::Networking::Vpn::IVpnTrafficFilterAssignment; };

}

namespace Windows::Networking::Vpn {

template <typename T> struct impl_IVpnAppId;
template <typename T> struct impl_IVpnAppIdFactory;
template <typename T> struct impl_IVpnChannel;
template <typename T> struct impl_IVpnChannel2;
template <typename T> struct impl_IVpnChannelActivityEventArgs;
template <typename T> struct impl_IVpnChannelActivityStateChangedArgs;
template <typename T> struct impl_IVpnChannelConfiguration;
template <typename T> struct impl_IVpnChannelConfiguration2;
template <typename T> struct impl_IVpnChannelStatics;
template <typename T> struct impl_IVpnCredential;
template <typename T> struct impl_IVpnCustomCheckBox;
template <typename T> struct impl_IVpnCustomComboBox;
template <typename T> struct impl_IVpnCustomEditBox;
template <typename T> struct impl_IVpnCustomErrorBox;
template <typename T> struct impl_IVpnCustomPrompt;
template <typename T> struct impl_IVpnCustomPromptBooleanInput;
template <typename T> struct impl_IVpnCustomPromptElement;
template <typename T> struct impl_IVpnCustomPromptOptionSelector;
template <typename T> struct impl_IVpnCustomPromptText;
template <typename T> struct impl_IVpnCustomPromptTextInput;
template <typename T> struct impl_IVpnCustomTextBox;
template <typename T> struct impl_IVpnDomainNameAssignment;
template <typename T> struct impl_IVpnDomainNameInfo;
template <typename T> struct impl_IVpnDomainNameInfo2;
template <typename T> struct impl_IVpnDomainNameInfoFactory;
template <typename T> struct impl_IVpnInterfaceId;
template <typename T> struct impl_IVpnInterfaceIdFactory;
template <typename T> struct impl_IVpnManagementAgent;
template <typename T> struct impl_IVpnNamespaceAssignment;
template <typename T> struct impl_IVpnNamespaceInfo;
template <typename T> struct impl_IVpnNamespaceInfoFactory;
template <typename T> struct impl_IVpnNativeProfile;
template <typename T> struct impl_IVpnNativeProfile2;
template <typename T> struct impl_IVpnPacketBuffer;
template <typename T> struct impl_IVpnPacketBuffer2;
template <typename T> struct impl_IVpnPacketBufferFactory;
template <typename T> struct impl_IVpnPacketBufferList;
template <typename T> struct impl_IVpnPacketBufferList2;
template <typename T> struct impl_IVpnPickedCredential;
template <typename T> struct impl_IVpnPlugIn;
template <typename T> struct impl_IVpnPlugInProfile;
template <typename T> struct impl_IVpnPlugInProfile2;
template <typename T> struct impl_IVpnProfile;
template <typename T> struct impl_IVpnRoute;
template <typename T> struct impl_IVpnRouteAssignment;
template <typename T> struct impl_IVpnRouteFactory;
template <typename T> struct impl_IVpnSystemHealth;
template <typename T> struct impl_IVpnTrafficFilter;
template <typename T> struct impl_IVpnTrafficFilterAssignment;
template <typename T> struct impl_IVpnTrafficFilterFactory;

}

namespace impl {

template <> struct traits<Windows::Networking::Vpn::IVpnAppId>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnAppId;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnAppId<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnAppIdFactory>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnAppIdFactory;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnAppIdFactory<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnChannel>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnChannel;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnChannel<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnChannel2>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnChannel2;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnChannel2<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnChannelActivityEventArgs>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnChannelActivityEventArgs;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnChannelActivityEventArgs<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnChannelActivityStateChangedArgs>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnChannelActivityStateChangedArgs;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnChannelActivityStateChangedArgs<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnChannelConfiguration>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnChannelConfiguration;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnChannelConfiguration<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnChannelConfiguration2>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnChannelConfiguration2;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnChannelConfiguration2<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnChannelStatics>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnChannelStatics;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnChannelStatics<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCredential>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCredential;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCredential<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCustomCheckBox>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCustomCheckBox;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCustomCheckBox<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCustomComboBox>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCustomComboBox;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCustomComboBox<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCustomEditBox>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCustomEditBox;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCustomEditBox<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCustomErrorBox>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCustomErrorBox;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCustomErrorBox<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCustomPrompt>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCustomPrompt;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCustomPrompt<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCustomPromptBooleanInput>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCustomPromptBooleanInput;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCustomPromptBooleanInput<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCustomPromptElement>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCustomPromptElement;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCustomPromptElement<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCustomPromptOptionSelector>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCustomPromptOptionSelector;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCustomPromptOptionSelector<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCustomPromptText>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCustomPromptText;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCustomPromptText<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCustomPromptTextInput>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCustomPromptTextInput;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCustomPromptTextInput<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnCustomTextBox>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnCustomTextBox;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnCustomTextBox<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnDomainNameAssignment>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnDomainNameAssignment;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnDomainNameAssignment<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnDomainNameInfo>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnDomainNameInfo;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnDomainNameInfo<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnDomainNameInfo2>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnDomainNameInfo2;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnDomainNameInfo2<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnDomainNameInfoFactory>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnDomainNameInfoFactory;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnDomainNameInfoFactory<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnInterfaceId>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnInterfaceId;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnInterfaceId<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnInterfaceIdFactory>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnInterfaceIdFactory;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnInterfaceIdFactory<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnManagementAgent>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnManagementAgent;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnManagementAgent<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnNamespaceAssignment>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnNamespaceAssignment;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnNamespaceAssignment<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnNamespaceInfo>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnNamespaceInfo;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnNamespaceInfo<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnNamespaceInfoFactory>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnNamespaceInfoFactory;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnNamespaceInfoFactory<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnNativeProfile>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnNativeProfile;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnNativeProfile<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnNativeProfile2>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnNativeProfile2;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnNativeProfile2<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnPacketBuffer>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnPacketBuffer;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnPacketBuffer<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnPacketBuffer2>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnPacketBuffer2;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnPacketBuffer2<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnPacketBufferFactory>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnPacketBufferFactory;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnPacketBufferFactory<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnPacketBufferList>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnPacketBufferList;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnPacketBufferList<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnPacketBufferList2>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnPacketBufferList2;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnPacketBufferList2<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnPickedCredential>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnPickedCredential;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnPickedCredential<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnPlugIn>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnPlugIn;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnPlugIn<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnPlugInProfile>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnPlugInProfile;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnPlugInProfile<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnPlugInProfile2>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnPlugInProfile2;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnPlugInProfile2<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnProfile>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnProfile;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnProfile<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnRoute>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnRoute;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnRoute<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnRouteAssignment>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnRouteAssignment;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnRouteAssignment<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnRouteFactory>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnRouteFactory;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnRouteFactory<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnSystemHealth>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnSystemHealth;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnSystemHealth<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnTrafficFilter>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnTrafficFilter;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnTrafficFilter<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnTrafficFilterAssignment>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnTrafficFilterAssignment;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnTrafficFilterAssignment<D>;
};

template <> struct traits<Windows::Networking::Vpn::IVpnTrafficFilterFactory>
{
    using abi = ABI::Windows::Networking::Vpn::IVpnTrafficFilterFactory;
    template <typename D> using consume = Windows::Networking::Vpn::impl_IVpnTrafficFilterFactory<D>;
};

template <> struct traits<Windows::Networking::Vpn::VpnAppId>
{
    using abi = ABI::Windows::Networking::Vpn::VpnAppId;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnAppId"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnChannel>
{
    using abi = ABI::Windows::Networking::Vpn::VpnChannel;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnChannel"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnChannelActivityEventArgs>
{
    using abi = ABI::Windows::Networking::Vpn::VpnChannelActivityEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnChannelActivityEventArgs"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnChannelActivityStateChangedArgs>
{
    using abi = ABI::Windows::Networking::Vpn::VpnChannelActivityStateChangedArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnChannelActivityStateChangedArgs"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnChannelConfiguration>
{
    using abi = ABI::Windows::Networking::Vpn::VpnChannelConfiguration;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnChannelConfiguration"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnCredential>
{
    using abi = ABI::Windows::Networking::Vpn::VpnCredential;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnCredential"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnCustomCheckBox>
{
    using abi = ABI::Windows::Networking::Vpn::VpnCustomCheckBox;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnCustomCheckBox"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnCustomComboBox>
{
    using abi = ABI::Windows::Networking::Vpn::VpnCustomComboBox;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnCustomComboBox"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnCustomEditBox>
{
    using abi = ABI::Windows::Networking::Vpn::VpnCustomEditBox;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnCustomEditBox"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnCustomErrorBox>
{
    using abi = ABI::Windows::Networking::Vpn::VpnCustomErrorBox;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnCustomErrorBox"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnCustomPromptBooleanInput>
{
    using abi = ABI::Windows::Networking::Vpn::VpnCustomPromptBooleanInput;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnCustomPromptBooleanInput"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnCustomPromptOptionSelector>
{
    using abi = ABI::Windows::Networking::Vpn::VpnCustomPromptOptionSelector;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnCustomPromptOptionSelector"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnCustomPromptText>
{
    using abi = ABI::Windows::Networking::Vpn::VpnCustomPromptText;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnCustomPromptText"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnCustomPromptTextInput>
{
    using abi = ABI::Windows::Networking::Vpn::VpnCustomPromptTextInput;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnCustomPromptTextInput"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnCustomTextBox>
{
    using abi = ABI::Windows::Networking::Vpn::VpnCustomTextBox;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnCustomTextBox"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnDomainNameAssignment>
{
    using abi = ABI::Windows::Networking::Vpn::VpnDomainNameAssignment;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnDomainNameAssignment"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnDomainNameInfo>
{
    using abi = ABI::Windows::Networking::Vpn::VpnDomainNameInfo;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnDomainNameInfo"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnInterfaceId>
{
    using abi = ABI::Windows::Networking::Vpn::VpnInterfaceId;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnInterfaceId"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnManagementAgent>
{
    using abi = ABI::Windows::Networking::Vpn::VpnManagementAgent;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnManagementAgent"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnNamespaceAssignment>
{
    using abi = ABI::Windows::Networking::Vpn::VpnNamespaceAssignment;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnNamespaceAssignment"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnNamespaceInfo>
{
    using abi = ABI::Windows::Networking::Vpn::VpnNamespaceInfo;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnNamespaceInfo"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnNativeProfile>
{
    using abi = ABI::Windows::Networking::Vpn::VpnNativeProfile;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnNativeProfile"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnPacketBuffer>
{
    using abi = ABI::Windows::Networking::Vpn::VpnPacketBuffer;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnPacketBuffer"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnPacketBufferList>
{
    using abi = ABI::Windows::Networking::Vpn::VpnPacketBufferList;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnPacketBufferList"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnPickedCredential>
{
    using abi = ABI::Windows::Networking::Vpn::VpnPickedCredential;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnPickedCredential"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnPlugInProfile>
{
    using abi = ABI::Windows::Networking::Vpn::VpnPlugInProfile;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnPlugInProfile"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnRoute>
{
    using abi = ABI::Windows::Networking::Vpn::VpnRoute;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnRoute"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnRouteAssignment>
{
    using abi = ABI::Windows::Networking::Vpn::VpnRouteAssignment;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnRouteAssignment"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnSystemHealth>
{
    using abi = ABI::Windows::Networking::Vpn::VpnSystemHealth;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnSystemHealth"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnTrafficFilter>
{
    using abi = ABI::Windows::Networking::Vpn::VpnTrafficFilter;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnTrafficFilter"; }
};

template <> struct traits<Windows::Networking::Vpn::VpnTrafficFilterAssignment>
{
    using abi = ABI::Windows::Networking::Vpn::VpnTrafficFilterAssignment;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Networking.Vpn.VpnTrafficFilterAssignment"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Media.Imaging.5.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace Windows::UI::Xaml::Media::Imaging {

template <typename D, typename ... Interfaces> struct BitmapSourceT :
    overrides<D, Windows::IInspectable, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::Media::IImageSource, Windows::UI::Xaml::Media::Imaging::IBitmapSource>
{
    using composable = BitmapSource;

protected:

    BitmapSourceT()
    {
        get_activation_factory<BitmapSource, IBitmapSourceFactory>().CreateInstance(*this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct SurfaceImageSourceT :
    overrides<D, Windows::IInspectable, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::IDependencyObject, Windows::UI::Xaml::IDependencyObject2, Windows::UI::Xaml::Media::IImageSource, Windows::UI::Xaml::Media::Imaging::ISurfaceImageSource>
{
    using composable = SurfaceImageSource;

protected:

    SurfaceImageSourceT(int32_t pixelWidth, int32_t pixelHeight)
    {
        get_activation_factory<SurfaceImageSource, ISurfaceImageSourceFactory>().CreateInstanceWithDimensions(pixelWidth, pixelHeight, *this, this->m_inner);
    }

    SurfaceImageSourceT(int32_t pixelWidth, int32_t pixelHeight, bool isOpaque)
    {
        get_activation_factory<SurfaceImageSource, ISurfaceImageSourceFactory>().CreateInstanceWithDimensionsAndOpacity(pixelWidth, pixelHeight, isOpaque, *this, this->m_inner);
    }
};

template <typename D, typename ... Interfaces> struct XamlRenderingBackgroundTaskT :
    overrides<D, Windows::UI::Xaml::Media::Imaging::IXamlRenderingBackgroundTaskOverridesT<D>, Interfaces ...>,
    impl::require<D, Windows::UI::Xaml::Media::Imaging::IXamlRenderingBackgroundTask>
{
    using composable = XamlRenderingBackgroundTask;

protected:

    XamlRenderingBackgroundTaskT()
    {
        get_activation_factory<XamlRenderingBackgroundTask, IXamlRenderingBackgroundTaskFactory>().CreateInstance(*this, this->m_inner);
    }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Composition.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.UI.Composition.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Graphics.DirectX.0.h"
#include "Windows.Graphics.Effects.0.h"
#include "Windows.UI.0.h"
#include "Windows.UI.Core.0.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Composition {

struct __declspec(uuid("a48130a1-b7c4-46f7-b9bf-daf43a44e6ee")) __declspec(novtable) IAmbientLight : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Color(Windows::UI::Color * value) = 0;
    virtual HRESULT __stdcall put_Color(Windows::UI::Color value) = 0;
};

struct __declspec(uuid("93adb5e9-8e05-4593-84a3-dca152781e56")) __declspec(novtable) IColorKeyFrameAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_InterpolationColorSpace(winrt::Windows::UI::Composition::CompositionColorSpace * value) = 0;
    virtual HRESULT __stdcall put_InterpolationColorSpace(winrt::Windows::UI::Composition::CompositionColorSpace value) = 0;
    virtual HRESULT __stdcall abi_InsertKeyFrame(float normalizedProgressKey, Windows::UI::Color value) = 0;
    virtual HRESULT __stdcall abi_InsertKeyFrameWithEasingFunction(float normalizedProgressKey, Windows::UI::Color value, Windows::UI::Composition::ICompositionEasingFunction * easingFunction) = 0;
};

struct __declspec(uuid("464c4c2c-1caa-4061-9b40-e13fde1503ca")) __declspec(novtable) ICompositionAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_ClearAllParameters() = 0;
    virtual HRESULT __stdcall abi_ClearParameter(hstring key) = 0;
    virtual HRESULT __stdcall abi_SetColorParameter(hstring key, Windows::UI::Color value) = 0;
    virtual HRESULT __stdcall abi_SetMatrix3x2Parameter(hstring key, Windows::Foundation::Numerics::float3x2 value) = 0;
    virtual HRESULT __stdcall abi_SetMatrix4x4Parameter(hstring key, Windows::Foundation::Numerics::float4x4 value) = 0;
    virtual HRESULT __stdcall abi_SetQuaternionParameter(hstring key, Windows::Foundation::Numerics::quaternion value) = 0;
    virtual HRESULT __stdcall abi_SetReferenceParameter(hstring key, Windows::UI::Composition::ICompositionObject * compositionObject) = 0;
    virtual HRESULT __stdcall abi_SetScalarParameter(hstring key, float value) = 0;
    virtual HRESULT __stdcall abi_SetVector2Parameter(hstring key, Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall abi_SetVector3Parameter(hstring key, Windows::Foundation::Numerics::float3 value) = 0;
    virtual HRESULT __stdcall abi_SetVector4Parameter(hstring key, Windows::Foundation::Numerics::float4 value) = 0;
};

struct __declspec(uuid("369b603e-a80f-4948-93e3-ed23fb38c6cb")) __declspec(novtable) ICompositionAnimation2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_SetBooleanParameter(hstring key, bool value) = 0;
    virtual HRESULT __stdcall get_Target(hstring * value) = 0;
    virtual HRESULT __stdcall put_Target(hstring value) = 0;
};

struct __declspec(uuid("1c2c2999-e818-48d3-a6dd-d78c82f8ace9")) __declspec(novtable) ICompositionAnimationBase : Windows::IInspectable
{
};

struct __declspec(uuid("10f6c4fb-6e51-4c25-bbd3-586a9bec3ef4")) __declspec(novtable) ICompositionAnimationFactory : Windows::IInspectable
{
};

struct __declspec(uuid("5e7cc90c-cd14-4e07-8a55-c72527aabdac")) __declspec(novtable) ICompositionAnimationGroup : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Count(int32_t * value) = 0;
    virtual HRESULT __stdcall abi_Add(Windows::UI::Composition::ICompositionAnimation * value) = 0;
    virtual HRESULT __stdcall abi_Remove(Windows::UI::Composition::ICompositionAnimation * value) = 0;
    virtual HRESULT __stdcall abi_RemoveAll() = 0;
};

struct __declspec(uuid("c5acae58-3898-499e-8d7f-224e91286a5d")) __declspec(novtable) ICompositionBackdropBrush : Windows::IInspectable
{
};

struct __declspec(uuid("0d00dad0-9464-450a-a562-2e2698b0a812")) __declspec(novtable) ICompositionBatchCompletedEventArgs : Windows::IInspectable
{
};

struct __declspec(uuid("ab0d7608-30c0-40e9-b568-b60a6bd1fb46")) __declspec(novtable) ICompositionBrush : Windows::IInspectable
{
};

struct __declspec(uuid("da53fb4c-4650-47c4-ad76-765379607ed6")) __declspec(novtable) ICompositionBrushFactory : Windows::IInspectable
{
};

struct __declspec(uuid("1ccd2a52-cfc7-4ace-9983-146bb8eb6a3c")) __declspec(novtable) ICompositionClip : Windows::IInspectable
{
};

struct __declspec(uuid("5893e069-3516-40e1-89e0-5ba924927235")) __declspec(novtable) ICompositionClip2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AnchorPoint(Windows::Foundation::Numerics::float2 * value) = 0;
    virtual HRESULT __stdcall put_AnchorPoint(Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall get_CenterPoint(Windows::Foundation::Numerics::float2 * value) = 0;
    virtual HRESULT __stdcall put_CenterPoint(Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall get_Offset(Windows::Foundation::Numerics::float2 * value) = 0;
    virtual HRESULT __stdcall put_Offset(Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall get_RotationAngle(float * value) = 0;
    virtual HRESULT __stdcall put_RotationAngle(float value) = 0;
    virtual HRESULT __stdcall get_RotationAngleInDegrees(float * value) = 0;
    virtual HRESULT __stdcall put_RotationAngleInDegrees(float value) = 0;
    virtual HRESULT __stdcall get_Scale(Windows::Foundation::Numerics::float2 * value) = 0;
    virtual HRESULT __stdcall put_Scale(Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall get_TransformMatrix(Windows::Foundation::Numerics::float3x2 * value) = 0;
    virtual HRESULT __stdcall put_TransformMatrix(Windows::Foundation::Numerics::float3x2 value) = 0;
};

struct __declspec(uuid("b9484caf-20c7-4aed-ac4a-9c78ba1302cf")) __declspec(novtable) ICompositionClipFactory : Windows::IInspectable
{
};

struct __declspec(uuid("2b264c5e-bf35-4831-8642-cf70c20fff2f")) __declspec(novtable) ICompositionColorBrush : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Color(Windows::UI::Color * value) = 0;
    virtual HRESULT __stdcall put_Color(Windows::UI::Color value) = 0;
};

struct __declspec(uuid("0d00dad0-ca07-4400-8c8e-cb5db08559cc")) __declspec(novtable) ICompositionCommitBatch : Windows::IInspectable
{
    virtual HRESULT __stdcall get_IsActive(bool * value) = 0;
    virtual HRESULT __stdcall get_IsEnded(bool * value) = 0;
    virtual HRESULT __stdcall add_Completed(Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Composition::CompositionBatchCompletedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_Completed(event_token token) = 0;
};

struct __declspec(uuid("a166c300-fad0-4d11-9e67-e433162ff49e")) __declspec(novtable) ICompositionDrawingSurface : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AlphaMode(winrt::Windows::Graphics::DirectX::DirectXAlphaMode * value) = 0;
    virtual HRESULT __stdcall get_PixelFormat(winrt::Windows::Graphics::DirectX::DirectXPixelFormat * value) = 0;
    virtual HRESULT __stdcall get_Size(Windows::Foundation::Size * value) = 0;
};

struct __declspec(uuid("5145e356-bf79-4ea8-8cc2-6b5b472e6c9a")) __declspec(novtable) ICompositionEasingFunction : Windows::IInspectable
{
};

struct __declspec(uuid("60840774-3da0-4949-8200-7206c00190a0")) __declspec(novtable) ICompositionEasingFunctionFactory : Windows::IInspectable
{
};

struct __declspec(uuid("bf7f795e-83cc-44bf-a447-3e3c071789ec")) __declspec(novtable) ICompositionEffectBrush : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetSourceParameter(hstring name, Windows::UI::Composition::ICompositionBrush ** result) = 0;
    virtual HRESULT __stdcall abi_SetSourceParameter(hstring name, Windows::UI::Composition::ICompositionBrush * source) = 0;
};

struct __declspec(uuid("be5624af-ba7e-4510-9850-41c0b4ff74df")) __declspec(novtable) ICompositionEffectFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateBrush(Windows::UI::Composition::ICompositionEffectBrush ** result) = 0;
    virtual HRESULT __stdcall get_ExtendedError(HRESULT * value) = 0;
    virtual HRESULT __stdcall get_LoadStatus(winrt::Windows::UI::Composition::CompositionEffectFactoryLoadStatus * value) = 0;
};

struct __declspec(uuid("858ab13a-3292-4e4e-b3bb-2b6c6544a6ee")) __declspec(novtable) ICompositionEffectSourceParameter : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Name(hstring * value) = 0;
};

struct __declspec(uuid("b3d9f276-aba3-4724-acf3-d0397464db1c")) __declspec(novtable) ICompositionEffectSourceParameterFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Create(hstring name, Windows::UI::Composition::ICompositionEffectSourceParameter ** instance) = 0;
};

struct __declspec(uuid("fb22c6e1-80a2-4667-9936-dbeaf6eefe95")) __declspec(novtable) ICompositionGraphicsDevice : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateDrawingSurface(Windows::Foundation::Size sizePixels, winrt::Windows::Graphics::DirectX::DirectXPixelFormat pixelFormat, winrt::Windows::Graphics::DirectX::DirectXAlphaMode alphaMode, Windows::UI::Composition::ICompositionDrawingSurface ** result) = 0;
    virtual HRESULT __stdcall add_RenderingDeviceReplaced(Windows::Foundation::TypedEventHandler<Windows::UI::Composition::CompositionGraphicsDevice, Windows::UI::Composition::RenderingDeviceReplacedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_RenderingDeviceReplaced(event_token token) = 0;
};

struct __declspec(uuid("41a6d7c2-2e5d-4bc1-b09e-8f0a03e3d8d3")) __declspec(novtable) ICompositionLight : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Targets(Windows::UI::Composition::IVisualUnorderedCollection ** value) = 0;
};

struct __declspec(uuid("069cf306-da3c-4b44-838a-5e03d51ace55")) __declspec(novtable) ICompositionLightFactory : Windows::IInspectable
{
};

struct __declspec(uuid("522cf09e-be6b-4f41-be49-f9226d471b4a")) __declspec(novtable) ICompositionMaskBrush : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Mask(Windows::UI::Composition::ICompositionBrush ** value) = 0;
    virtual HRESULT __stdcall put_Mask(Windows::UI::Composition::ICompositionBrush * value) = 0;
    virtual HRESULT __stdcall get_Source(Windows::UI::Composition::ICompositionBrush ** value) = 0;
    virtual HRESULT __stdcall put_Source(Windows::UI::Composition::ICompositionBrush * value) = 0;
};

struct __declspec(uuid("f25154e4-bc8c-4be7-b80f-8685b83c0186")) __declspec(novtable) ICompositionNineGridBrush : Windows::IInspectable
{
    virtual HRESULT __stdcall get_BottomInset(float * value) = 0;
    virtual HRESULT __stdcall put_BottomInset(float value) = 0;
    virtual HRESULT __stdcall get_BottomInsetScale(float * value) = 0;
    virtual HRESULT __stdcall put_BottomInsetScale(float value) = 0;
    virtual HRESULT __stdcall get_IsCenterHollow(bool * value) = 0;
    virtual HRESULT __stdcall put_IsCenterHollow(bool value) = 0;
    virtual HRESULT __stdcall get_LeftInset(float * value) = 0;
    virtual HRESULT __stdcall put_LeftInset(float value) = 0;
    virtual HRESULT __stdcall get_LeftInsetScale(float * value) = 0;
    virtual HRESULT __stdcall put_LeftInsetScale(float value) = 0;
    virtual HRESULT __stdcall get_RightInset(float * value) = 0;
    virtual HRESULT __stdcall put_RightInset(float value) = 0;
    virtual HRESULT __stdcall get_RightInsetScale(float * value) = 0;
    virtual HRESULT __stdcall put_RightInsetScale(float value) = 0;
    virtual HRESULT __stdcall get_Source(Windows::UI::Composition::ICompositionBrush ** value) = 0;
    virtual HRESULT __stdcall put_Source(Windows::UI::Composition::ICompositionBrush * value) = 0;
    virtual HRESULT __stdcall get_TopInset(float * value) = 0;
    virtual HRESULT __stdcall put_TopInset(float value) = 0;
    virtual HRESULT __stdcall get_TopInsetScale(float * value) = 0;
    virtual HRESULT __stdcall put_TopInsetScale(float value) = 0;
    virtual HRESULT __stdcall abi_SetInsets(float inset) = 0;
    virtual HRESULT __stdcall abi_SetInsetsWithValues(float left, float top, float right, float bottom) = 0;
    virtual HRESULT __stdcall abi_SetInsetScales(float scale) = 0;
    virtual HRESULT __stdcall abi_SetInsetScalesWithValues(float left, float top, float right, float bottom) = 0;
};

struct __declspec(uuid("bcb4ad45-7609-4550-934f-16002a68fded")) __declspec(novtable) ICompositionObject : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Compositor(Windows::UI::Composition::ICompositor ** value) = 0;
    virtual HRESULT __stdcall get_Dispatcher(Windows::UI::Core::ICoreDispatcher ** value) = 0;
    virtual HRESULT __stdcall get_Properties(Windows::UI::Composition::ICompositionPropertySet ** value) = 0;
    virtual HRESULT __stdcall abi_StartAnimation(hstring propertyName, Windows::UI::Composition::ICompositionAnimation * animation) = 0;
    virtual HRESULT __stdcall abi_StopAnimation(hstring propertyName) = 0;
};

struct __declspec(uuid("ef874ea1-5cff-4b68-9e30-a1519d08ba03")) __declspec(novtable) ICompositionObject2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Comment(hstring * value) = 0;
    virtual HRESULT __stdcall put_Comment(hstring value) = 0;
    virtual HRESULT __stdcall get_ImplicitAnimations(Windows::UI::Composition::IImplicitAnimationCollection ** value) = 0;
    virtual HRESULT __stdcall put_ImplicitAnimations(Windows::UI::Composition::IImplicitAnimationCollection * value) = 0;
    virtual HRESULT __stdcall abi_StartAnimationGroup(Windows::UI::Composition::ICompositionAnimationBase * value) = 0;
    virtual HRESULT __stdcall abi_StopAnimationGroup(Windows::UI::Composition::ICompositionAnimationBase * value) = 0;
};

struct __declspec(uuid("51205c5e-558a-4f2a-8d39-37bfe1e20ddd")) __declspec(novtable) ICompositionObjectFactory : Windows::IInspectable
{
};

struct __declspec(uuid("c9d6d202-5f67-4453-9117-9eadd430d3c2")) __declspec(novtable) ICompositionPropertySet : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_InsertColor(hstring propertyName, Windows::UI::Color value) = 0;
    virtual HRESULT __stdcall abi_InsertMatrix3x2(hstring propertyName, Windows::Foundation::Numerics::float3x2 value) = 0;
    virtual HRESULT __stdcall abi_InsertMatrix4x4(hstring propertyName, Windows::Foundation::Numerics::float4x4 value) = 0;
    virtual HRESULT __stdcall abi_InsertQuaternion(hstring propertyName, Windows::Foundation::Numerics::quaternion value) = 0;
    virtual HRESULT __stdcall abi_InsertScalar(hstring propertyName, float value) = 0;
    virtual HRESULT __stdcall abi_InsertVector2(hstring propertyName, Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall abi_InsertVector3(hstring propertyName, Windows::Foundation::Numerics::float3 value) = 0;
    virtual HRESULT __stdcall abi_InsertVector4(hstring propertyName, Windows::Foundation::Numerics::float4 value) = 0;
    virtual HRESULT __stdcall abi_TryGetColor(hstring propertyName, Windows::UI::Color * value, winrt::Windows::UI::Composition::CompositionGetValueStatus * result) = 0;
    virtual HRESULT __stdcall abi_TryGetMatrix3x2(hstring propertyName, Windows::Foundation::Numerics::float3x2 * value, winrt::Windows::UI::Composition::CompositionGetValueStatus * result) = 0;
    virtual HRESULT __stdcall abi_TryGetMatrix4x4(hstring propertyName, Windows::Foundation::Numerics::float4x4 * value, winrt::Windows::UI::Composition::CompositionGetValueStatus * result) = 0;
    virtual HRESULT __stdcall abi_TryGetQuaternion(hstring propertyName, Windows::Foundation::Numerics::quaternion * value, winrt::Windows::UI::Composition::CompositionGetValueStatus * result) = 0;
    virtual HRESULT __stdcall abi_TryGetScalar(hstring propertyName, float * value, winrt::Windows::UI::Composition::CompositionGetValueStatus * result) = 0;
    virtual HRESULT __stdcall abi_TryGetVector2(hstring propertyName, Windows::Foundation::Numerics::float2 * value, winrt::Windows::UI::Composition::CompositionGetValueStatus * result) = 0;
    virtual HRESULT __stdcall abi_TryGetVector3(hstring propertyName, Windows::Foundation::Numerics::float3 * value, winrt::Windows::UI::Composition::CompositionGetValueStatus * result) = 0;
    virtual HRESULT __stdcall abi_TryGetVector4(hstring propertyName, Windows::Foundation::Numerics::float4 * value, winrt::Windows::UI::Composition::CompositionGetValueStatus * result) = 0;
};

struct __declspec(uuid("de80731e-a211-4455-8880-7d0f3f6a44fd")) __declspec(novtable) ICompositionPropertySet2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_InsertBoolean(hstring propertyName, bool value) = 0;
    virtual HRESULT __stdcall abi_TryGetBoolean(hstring propertyName, bool * value, winrt::Windows::UI::Composition::CompositionGetValueStatus * result) = 0;
};

struct __declspec(uuid("0d00dad0-fb07-46fd-8c72-6280d1a3d1dd")) __declspec(novtable) ICompositionScopedBatch : Windows::IInspectable
{
    virtual HRESULT __stdcall get_IsActive(bool * value) = 0;
    virtual HRESULT __stdcall get_IsEnded(bool * value) = 0;
    virtual HRESULT __stdcall abi_End() = 0;
    virtual HRESULT __stdcall abi_Resume() = 0;
    virtual HRESULT __stdcall abi_Suspend() = 0;
    virtual HRESULT __stdcall add_Completed(Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::UI::Composition::CompositionBatchCompletedEventArgs> * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_Completed(event_token token) = 0;
};

struct __declspec(uuid("329e52e2-4335-49cc-b14a-37782d10f0c4")) __declspec(novtable) ICompositionShadow : Windows::IInspectable
{
};

struct __declspec(uuid("221f492f-dcba-4b91-999e-1dc217a01530")) __declspec(novtable) ICompositionShadowFactory : Windows::IInspectable
{
};

struct __declspec(uuid("1527540d-42c7-47a6-a408-668f79a90dfb")) __declspec(novtable) ICompositionSurface : Windows::IInspectable
{
};

struct __declspec(uuid("ad016d79-1e4c-4c0d-9c29-83338c87c162")) __declspec(novtable) ICompositionSurfaceBrush : Windows::IInspectable
{
    virtual HRESULT __stdcall get_BitmapInterpolationMode(winrt::Windows::UI::Composition::CompositionBitmapInterpolationMode * value) = 0;
    virtual HRESULT __stdcall put_BitmapInterpolationMode(winrt::Windows::UI::Composition::CompositionBitmapInterpolationMode value) = 0;
    virtual HRESULT __stdcall get_HorizontalAlignmentRatio(float * value) = 0;
    virtual HRESULT __stdcall put_HorizontalAlignmentRatio(float value) = 0;
    virtual HRESULT __stdcall get_Stretch(winrt::Windows::UI::Composition::CompositionStretch * value) = 0;
    virtual HRESULT __stdcall put_Stretch(winrt::Windows::UI::Composition::CompositionStretch value) = 0;
    virtual HRESULT __stdcall get_Surface(Windows::UI::Composition::ICompositionSurface ** value) = 0;
    virtual HRESULT __stdcall put_Surface(Windows::UI::Composition::ICompositionSurface * value) = 0;
    virtual HRESULT __stdcall get_VerticalAlignmentRatio(float * value) = 0;
    virtual HRESULT __stdcall put_VerticalAlignmentRatio(float value) = 0;
};

struct __declspec(uuid("d27174d5-64f5-4692-9dc7-71b61d7e5880")) __declspec(novtable) ICompositionSurfaceBrush2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AnchorPoint(Windows::Foundation::Numerics::float2 * value) = 0;
    virtual HRESULT __stdcall put_AnchorPoint(Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall get_CenterPoint(Windows::Foundation::Numerics::float2 * value) = 0;
    virtual HRESULT __stdcall put_CenterPoint(Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall get_Offset(Windows::Foundation::Numerics::float2 * value) = 0;
    virtual HRESULT __stdcall put_Offset(Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall get_RotationAngle(float * value) = 0;
    virtual HRESULT __stdcall put_RotationAngle(float value) = 0;
    virtual HRESULT __stdcall get_RotationAngleInDegrees(float * value) = 0;
    virtual HRESULT __stdcall put_RotationAngleInDegrees(float value) = 0;
    virtual HRESULT __stdcall get_Scale(Windows::Foundation::Numerics::float2 * value) = 0;
    virtual HRESULT __stdcall put_Scale(Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall get_TransformMatrix(Windows::Foundation::Numerics::float3x2 * value) = 0;
    virtual HRESULT __stdcall put_TransformMatrix(Windows::Foundation::Numerics::float3x2 value) = 0;
};

struct __declspec(uuid("a1bea8ba-d726-4663-8129-6b5e7927ffa6")) __declspec(novtable) ICompositionTarget : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Root(Windows::UI::Composition::IVisual ** value) = 0;
    virtual HRESULT __stdcall put_Root(Windows::UI::Composition::IVisual * value) = 0;
};

struct __declspec(uuid("b403ca50-7f8c-4e83-985f-cc45060036d8")) __declspec(novtable) ICompositor : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateColorKeyFrameAnimation(Windows::UI::Composition::IColorKeyFrameAnimation ** result) = 0;
    virtual HRESULT __stdcall abi_CreateColorBrush(Windows::UI::Composition::ICompositionColorBrush ** result) = 0;
    virtual HRESULT __stdcall abi_CreateColorBrushWithColor(Windows::UI::Color color, Windows::UI::Composition::ICompositionColorBrush ** result) = 0;
    virtual HRESULT __stdcall abi_CreateContainerVisual(Windows::UI::Composition::IContainerVisual ** result) = 0;
    virtual HRESULT __stdcall abi_CreateCubicBezierEasingFunction(Windows::Foundation::Numerics::float2 controlPoint1, Windows::Foundation::Numerics::float2 controlPoint2, Windows::UI::Composition::ICubicBezierEasingFunction ** result) = 0;
    virtual HRESULT __stdcall abi_CreateEffectFactory(Windows::Graphics::Effects::IGraphicsEffect * graphicsEffect, Windows::UI::Composition::ICompositionEffectFactory ** result) = 0;
    virtual HRESULT __stdcall abi_CreateEffectFactoryWithProperties(Windows::Graphics::Effects::IGraphicsEffect * graphicsEffect, Windows::Foundation::Collections::IIterable<hstring> * animatableProperties, Windows::UI::Composition::ICompositionEffectFactory ** result) = 0;
    virtual HRESULT __stdcall abi_CreateExpressionAnimation(Windows::UI::Composition::IExpressionAnimation ** result) = 0;
    virtual HRESULT __stdcall abi_CreateExpressionAnimationWithExpression(hstring expression, Windows::UI::Composition::IExpressionAnimation ** result) = 0;
    virtual HRESULT __stdcall abi_CreateInsetClip(Windows::UI::Composition::IInsetClip ** result) = 0;
    virtual HRESULT __stdcall abi_CreateInsetClipWithInsets(float leftInset, float topInset, float rightInset, float bottomInset, Windows::UI::Composition::IInsetClip ** result) = 0;
    virtual HRESULT __stdcall abi_CreateLinearEasingFunction(Windows::UI::Composition::ILinearEasingFunction ** result) = 0;
    virtual HRESULT __stdcall abi_CreatePropertySet(Windows::UI::Composition::ICompositionPropertySet ** result) = 0;
    virtual HRESULT __stdcall abi_CreateQuaternionKeyFrameAnimation(Windows::UI::Composition::IQuaternionKeyFrameAnimation ** result) = 0;
    virtual HRESULT __stdcall abi_CreateScalarKeyFrameAnimation(Windows::UI::Composition::IScalarKeyFrameAnimation ** result) = 0;
    virtual HRESULT __stdcall abi_CreateScopedBatch(winrt::Windows::UI::Composition::CompositionBatchTypes batchType, Windows::UI::Composition::ICompositionScopedBatch ** result) = 0;
    virtual HRESULT __stdcall abi_CreateSpriteVisual(Windows::UI::Composition::ISpriteVisual ** result) = 0;
    virtual HRESULT __stdcall abi_CreateSurfaceBrush(Windows::UI::Composition::ICompositionSurfaceBrush ** result) = 0;
    virtual HRESULT __stdcall abi_CreateSurfaceBrushWithSurface(Windows::UI::Composition::ICompositionSurface * surface, Windows::UI::Composition::ICompositionSurfaceBrush ** result) = 0;
    virtual HRESULT __stdcall abi_CreateTargetForCurrentView(Windows::UI::Composition::ICompositionTarget ** result) = 0;
    virtual HRESULT __stdcall abi_CreateVector2KeyFrameAnimation(Windows::UI::Composition::IVector2KeyFrameAnimation ** result) = 0;
    virtual HRESULT __stdcall abi_CreateVector3KeyFrameAnimation(Windows::UI::Composition::IVector3KeyFrameAnimation ** result) = 0;
    virtual HRESULT __stdcall abi_CreateVector4KeyFrameAnimation(Windows::UI::Composition::IVector4KeyFrameAnimation ** result) = 0;
    virtual HRESULT __stdcall abi_GetCommitBatch(winrt::Windows::UI::Composition::CompositionBatchTypes batchType, Windows::UI::Composition::ICompositionCommitBatch ** result) = 0;
};

struct __declspec(uuid("735081dc-5e24-45da-a38f-e32cc349a9a0")) __declspec(novtable) ICompositor2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateAmbientLight(Windows::UI::Composition::IAmbientLight ** result) = 0;
    virtual HRESULT __stdcall abi_CreateAnimationGroup(Windows::UI::Composition::ICompositionAnimationGroup ** result) = 0;
    virtual HRESULT __stdcall abi_CreateBackdropBrush(Windows::UI::Composition::ICompositionBackdropBrush ** result) = 0;
    virtual HRESULT __stdcall abi_CreateDistantLight(Windows::UI::Composition::IDistantLight ** result) = 0;
    virtual HRESULT __stdcall abi_CreateDropShadow(Windows::UI::Composition::IDropShadow ** result) = 0;
    virtual HRESULT __stdcall abi_CreateImplicitAnimationCollection(Windows::UI::Composition::IImplicitAnimationCollection ** result) = 0;
    virtual HRESULT __stdcall abi_CreateLayerVisual(Windows::UI::Composition::ILayerVisual ** result) = 0;
    virtual HRESULT __stdcall abi_CreateMaskBrush(Windows::UI::Composition::ICompositionMaskBrush ** result) = 0;
    virtual HRESULT __stdcall abi_CreateNineGridBrush(Windows::UI::Composition::ICompositionNineGridBrush ** result) = 0;
    virtual HRESULT __stdcall abi_CreatePointLight(Windows::UI::Composition::IPointLight ** result) = 0;
    virtual HRESULT __stdcall abi_CreateSpotLight(Windows::UI::Composition::ISpotLight ** result) = 0;
    virtual HRESULT __stdcall abi_CreateStepEasingFunction(Windows::UI::Composition::IStepEasingFunction ** result) = 0;
    virtual HRESULT __stdcall abi_CreateStepEasingFunctionWithStepCount(int32_t stepCount, Windows::UI::Composition::IStepEasingFunction ** result) = 0;
};

struct __declspec(uuid("02f6bc74-ed20-4773-afe6-d49b4a93db32")) __declspec(novtable) IContainerVisual : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Children(Windows::UI::Composition::IVisualCollection ** value) = 0;
};

struct __declspec(uuid("0363a65b-c7da-4d9a-95f4-69b5c8df670b")) __declspec(novtable) IContainerVisualFactory : Windows::IInspectable
{
};

struct __declspec(uuid("32350666-c1e8-44f9-96b8-c98acf0ae698")) __declspec(novtable) ICubicBezierEasingFunction : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ControlPoint1(Windows::Foundation::Numerics::float2 * value) = 0;
    virtual HRESULT __stdcall get_ControlPoint2(Windows::Foundation::Numerics::float2 * value) = 0;
};

struct __declspec(uuid("318cfafc-5ce3-4b55-ab5d-07a00353ac99")) __declspec(novtable) IDistantLight : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Color(Windows::UI::Color * value) = 0;
    virtual HRESULT __stdcall put_Color(Windows::UI::Color value) = 0;
    virtual HRESULT __stdcall get_CoordinateSpace(Windows::UI::Composition::IVisual ** value) = 0;
    virtual HRESULT __stdcall put_CoordinateSpace(Windows::UI::Composition::IVisual * value) = 0;
    virtual HRESULT __stdcall get_Direction(Windows::Foundation::Numerics::float3 * value) = 0;
    virtual HRESULT __stdcall put_Direction(Windows::Foundation::Numerics::float3 value) = 0;
};

struct __declspec(uuid("cb977c07-a154-4851-85e7-a8924c84fad8")) __declspec(novtable) IDropShadow : Windows::IInspectable
{
    virtual HRESULT __stdcall get_BlurRadius(float * value) = 0;
    virtual HRESULT __stdcall put_BlurRadius(float value) = 0;
    virtual HRESULT __stdcall get_Color(Windows::UI::Color * value) = 0;
    virtual HRESULT __stdcall put_Color(Windows::UI::Color value) = 0;
    virtual HRESULT __stdcall get_Mask(Windows::UI::Composition::ICompositionBrush ** value) = 0;
    virtual HRESULT __stdcall put_Mask(Windows::UI::Composition::ICompositionBrush * value) = 0;
    virtual HRESULT __stdcall get_Offset(Windows::Foundation::Numerics::float3 * value) = 0;
    virtual HRESULT __stdcall put_Offset(Windows::Foundation::Numerics::float3 value) = 0;
    virtual HRESULT __stdcall get_Opacity(float * value) = 0;
    virtual HRESULT __stdcall put_Opacity(float value) = 0;
};

struct __declspec(uuid("6acc5431-7d3d-4bf3-abb6-f44bdc4888c1")) __declspec(novtable) IExpressionAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Expression(hstring * value) = 0;
    virtual HRESULT __stdcall put_Expression(hstring value) = 0;
};

struct __declspec(uuid("0598a3ff-0a92-4c9d-a427-b25519250dbf")) __declspec(novtable) IImplicitAnimationCollection : Windows::IInspectable
{
};

struct __declspec(uuid("1e73e647-84c7-477a-b474-5880e0442e15")) __declspec(novtable) IInsetClip : Windows::IInspectable
{
    virtual HRESULT __stdcall get_BottomInset(float * value) = 0;
    virtual HRESULT __stdcall put_BottomInset(float value) = 0;
    virtual HRESULT __stdcall get_LeftInset(float * value) = 0;
    virtual HRESULT __stdcall put_LeftInset(float value) = 0;
    virtual HRESULT __stdcall get_RightInset(float * value) = 0;
    virtual HRESULT __stdcall put_RightInset(float value) = 0;
    virtual HRESULT __stdcall get_TopInset(float * value) = 0;
    virtual HRESULT __stdcall put_TopInset(float value) = 0;
};

struct __declspec(uuid("126e7f22-3ae9-4540-9a8a-deae8a4a4a84")) __declspec(novtable) IKeyFrameAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DelayTime(Windows::Foundation::TimeSpan * value) = 0;
    virtual HRESULT __stdcall put_DelayTime(Windows::Foundation::TimeSpan value) = 0;
    virtual HRESULT __stdcall get_Duration(Windows::Foundation::TimeSpan * value) = 0;
    virtual HRESULT __stdcall put_Duration(Windows::Foundation::TimeSpan value) = 0;
    virtual HRESULT __stdcall get_IterationBehavior(winrt::Windows::UI::Composition::AnimationIterationBehavior * value) = 0;
    virtual HRESULT __stdcall put_IterationBehavior(winrt::Windows::UI::Composition::AnimationIterationBehavior value) = 0;
    virtual HRESULT __stdcall get_IterationCount(int32_t * value) = 0;
    virtual HRESULT __stdcall put_IterationCount(int32_t value) = 0;
    virtual HRESULT __stdcall get_KeyFrameCount(int32_t * value) = 0;
    virtual HRESULT __stdcall get_StopBehavior(winrt::Windows::UI::Composition::AnimationStopBehavior * value) = 0;
    virtual HRESULT __stdcall put_StopBehavior(winrt::Windows::UI::Composition::AnimationStopBehavior value) = 0;
    virtual HRESULT __stdcall abi_InsertExpressionKeyFrame(float normalizedProgressKey, hstring value) = 0;
    virtual HRESULT __stdcall abi_InsertExpressionKeyFrameWithEasingFunction(float normalizedProgressKey, hstring value, Windows::UI::Composition::ICompositionEasingFunction * easingFunction) = 0;
};

struct __declspec(uuid("f4b488bb-2940-4ec0-a41a-eb6d801a2f18")) __declspec(novtable) IKeyFrameAnimation2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Direction(winrt::Windows::UI::Composition::AnimationDirection * value) = 0;
    virtual HRESULT __stdcall put_Direction(winrt::Windows::UI::Composition::AnimationDirection value) = 0;
};

struct __declspec(uuid("bf0803f8-712a-4fc1-8c87-970859ed8d2e")) __declspec(novtable) IKeyFrameAnimationFactory : Windows::IInspectable
{
};

struct __declspec(uuid("af843985-0444-4887-8e83-b40b253f822c")) __declspec(novtable) ILayerVisual : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Effect(Windows::UI::Composition::ICompositionEffectBrush ** value) = 0;
    virtual HRESULT __stdcall put_Effect(Windows::UI::Composition::ICompositionEffectBrush * value) = 0;
};

struct __declspec(uuid("9400975a-c7a6-46b3-acf7-1a268a0a117d")) __declspec(novtable) ILinearEasingFunction : Windows::IInspectable
{
};

struct __declspec(uuid("b18545b3-0c5a-4ab0-bedc-4f3546948272")) __declspec(novtable) IPointLight : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Color(Windows::UI::Color * value) = 0;
    virtual HRESULT __stdcall put_Color(Windows::UI::Color value) = 0;
    virtual HRESULT __stdcall get_ConstantAttenuation(float * value) = 0;
    virtual HRESULT __stdcall put_ConstantAttenuation(float value) = 0;
    virtual HRESULT __stdcall get_CoordinateSpace(Windows::UI::Composition::IVisual ** value) = 0;
    virtual HRESULT __stdcall put_CoordinateSpace(Windows::UI::Composition::IVisual * value) = 0;
    virtual HRESULT __stdcall get_LinearAttenuation(float * value) = 0;
    virtual HRESULT __stdcall put_LinearAttenuation(float value) = 0;
    virtual HRESULT __stdcall get_Offset(Windows::Foundation::Numerics::float3 * value) = 0;
    virtual HRESULT __stdcall put_Offset(Windows::Foundation::Numerics::float3 value) = 0;
    virtual HRESULT __stdcall get_QuadraticAttenuation(float * value) = 0;
    virtual HRESULT __stdcall put_QuadraticAttenuation(float value) = 0;
};

struct __declspec(uuid("404e5835-ecf6-4240-8520-671279cf36bc")) __declspec(novtable) IQuaternionKeyFrameAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_InsertKeyFrame(float normalizedProgressKey, Windows::Foundation::Numerics::quaternion value) = 0;
    virtual HRESULT __stdcall abi_InsertKeyFrameWithEasingFunction(float normalizedProgressKey, Windows::Foundation::Numerics::quaternion value, Windows::UI::Composition::ICompositionEasingFunction * easingFunction) = 0;
};

struct __declspec(uuid("3a31ac7d-28bf-4e7a-8524-71679d480f38")) __declspec(novtable) IRenderingDeviceReplacedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_GraphicsDevice(Windows::UI::Composition::ICompositionGraphicsDevice ** value) = 0;
};

struct __declspec(uuid("ae288fa9-252c-4b95-a725-bf85e38000a1")) __declspec(novtable) IScalarKeyFrameAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_InsertKeyFrame(float normalizedProgressKey, float value) = 0;
    virtual HRESULT __stdcall abi_InsertKeyFrameWithEasingFunction(float normalizedProgressKey, float value, Windows::UI::Composition::ICompositionEasingFunction * easingFunction) = 0;
};

struct __declspec(uuid("5a9fe273-44a1-4f95-a422-8fa5116bdb44")) __declspec(novtable) ISpotLight : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ConstantAttenuation(float * value) = 0;
    virtual HRESULT __stdcall put_ConstantAttenuation(float value) = 0;
    virtual HRESULT __stdcall get_CoordinateSpace(Windows::UI::Composition::IVisual ** value) = 0;
    virtual HRESULT __stdcall put_CoordinateSpace(Windows::UI::Composition::IVisual * value) = 0;
    virtual HRESULT __stdcall get_Direction(Windows::Foundation::Numerics::float3 * value) = 0;
    virtual HRESULT __stdcall put_Direction(Windows::Foundation::Numerics::float3 value) = 0;
    virtual HRESULT __stdcall get_InnerConeAngle(float * value) = 0;
    virtual HRESULT __stdcall put_InnerConeAngle(float value) = 0;
    virtual HRESULT __stdcall get_InnerConeAngleInDegrees(float * value) = 0;
    virtual HRESULT __stdcall put_InnerConeAngleInDegrees(float value) = 0;
    virtual HRESULT __stdcall get_InnerConeColor(Windows::UI::Color * value) = 0;
    virtual HRESULT __stdcall put_InnerConeColor(Windows::UI::Color value) = 0;
    virtual HRESULT __stdcall get_LinearAttenuation(float * value) = 0;
    virtual HRESULT __stdcall put_LinearAttenuation(float value) = 0;
    virtual HRESULT __stdcall get_Offset(Windows::Foundation::Numerics::float3 * value) = 0;
    virtual HRESULT __stdcall put_Offset(Windows::Foundation::Numerics::float3 value) = 0;
    virtual HRESULT __stdcall get_OuterConeAngle(float * value) = 0;
    virtual HRESULT __stdcall put_OuterConeAngle(float value) = 0;
    virtual HRESULT __stdcall get_OuterConeAngleInDegrees(float * value) = 0;
    virtual HRESULT __stdcall put_OuterConeAngleInDegrees(float value) = 0;
    virtual HRESULT __stdcall get_OuterConeColor(Windows::UI::Color * value) = 0;
    virtual HRESULT __stdcall put_OuterConeColor(Windows::UI::Color value) = 0;
    virtual HRESULT __stdcall get_QuadraticAttenuation(float * value) = 0;
    virtual HRESULT __stdcall put_QuadraticAttenuation(float value) = 0;
};

struct __declspec(uuid("08e05581-1ad1-4f97-9757-402d76e4233b")) __declspec(novtable) ISpriteVisual : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Brush(Windows::UI::Composition::ICompositionBrush ** value) = 0;
    virtual HRESULT __stdcall put_Brush(Windows::UI::Composition::ICompositionBrush * value) = 0;
};

struct __declspec(uuid("588c9664-997a-4850-91fe-53cb58f81ce9")) __declspec(novtable) ISpriteVisual2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Shadow(Windows::UI::Composition::ICompositionShadow ** value) = 0;
    virtual HRESULT __stdcall put_Shadow(Windows::UI::Composition::ICompositionShadow * value) = 0;
};

struct __declspec(uuid("d0caa74b-560c-4a0b-a5f6-206ca8c3ecd6")) __declspec(novtable) IStepEasingFunction : Windows::IInspectable
{
    virtual HRESULT __stdcall get_FinalStep(int32_t * value) = 0;
    virtual HRESULT __stdcall put_FinalStep(int32_t value) = 0;
    virtual HRESULT __stdcall get_InitialStep(int32_t * value) = 0;
    virtual HRESULT __stdcall put_InitialStep(int32_t value) = 0;
    virtual HRESULT __stdcall get_IsFinalStepSingleFrame(bool * value) = 0;
    virtual HRESULT __stdcall put_IsFinalStepSingleFrame(bool value) = 0;
    virtual HRESULT __stdcall get_IsInitialStepSingleFrame(bool * value) = 0;
    virtual HRESULT __stdcall put_IsInitialStepSingleFrame(bool value) = 0;
    virtual HRESULT __stdcall get_StepCount(int32_t * value) = 0;
    virtual HRESULT __stdcall put_StepCount(int32_t value) = 0;
};

struct __declspec(uuid("df414515-4e29-4f11-b55e-bf2a6eb36294")) __declspec(novtable) IVector2KeyFrameAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_InsertKeyFrame(float normalizedProgressKey, Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall abi_InsertKeyFrameWithEasingFunction(float normalizedProgressKey, Windows::Foundation::Numerics::float2 value, Windows::UI::Composition::ICompositionEasingFunction * easingFunction) = 0;
};

struct __declspec(uuid("c8039daa-a281-43c2-a73d-b68e3c533c40")) __declspec(novtable) IVector3KeyFrameAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_InsertKeyFrame(float normalizedProgressKey, Windows::Foundation::Numerics::float3 value) = 0;
    virtual HRESULT __stdcall abi_InsertKeyFrameWithEasingFunction(float normalizedProgressKey, Windows::Foundation::Numerics::float3 value, Windows::UI::Composition::ICompositionEasingFunction * easingFunction) = 0;
};

struct __declspec(uuid("2457945b-addd-4385-9606-b6a3d5e4e1b9")) __declspec(novtable) IVector4KeyFrameAnimation : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_InsertKeyFrame(float normalizedProgressKey, Windows::Foundation::Numerics::float4 value) = 0;
    virtual HRESULT __stdcall abi_InsertKeyFrameWithEasingFunction(float normalizedProgressKey, Windows::Foundation::Numerics::float4 value, Windows::UI::Composition::ICompositionEasingFunction * easingFunction) = 0;
};

struct __declspec(uuid("117e202d-a859-4c89-873b-c2aa566788e3")) __declspec(novtable) IVisual : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AnchorPoint(Windows::Foundation::Numerics::float2 * value) = 0;
    virtual HRESULT __stdcall put_AnchorPoint(Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall get_BackfaceVisibility(winrt::Windows::UI::Composition::CompositionBackfaceVisibility * value) = 0;
    virtual HRESULT __stdcall put_BackfaceVisibility(winrt::Windows::UI::Composition::CompositionBackfaceVisibility value) = 0;
    virtual HRESULT __stdcall get_BorderMode(winrt::Windows::UI::Composition::CompositionBorderMode * value) = 0;
    virtual HRESULT __stdcall put_BorderMode(winrt::Windows::UI::Composition::CompositionBorderMode value) = 0;
    virtual HRESULT __stdcall get_CenterPoint(Windows::Foundation::Numerics::float3 * value) = 0;
    virtual HRESULT __stdcall put_CenterPoint(Windows::Foundation::Numerics::float3 value) = 0;
    virtual HRESULT __stdcall get_Clip(Windows::UI::Composition::ICompositionClip ** value) = 0;
    virtual HRESULT __stdcall put_Clip(Windows::UI::Composition::ICompositionClip * value) = 0;
    virtual HRESULT __stdcall get_CompositeMode(winrt::Windows::UI::Composition::CompositionCompositeMode * value) = 0;
    virtual HRESULT __stdcall put_CompositeMode(winrt::Windows::UI::Composition::CompositionCompositeMode value) = 0;
    virtual HRESULT __stdcall get_IsVisible(bool * value) = 0;
    virtual HRESULT __stdcall put_IsVisible(bool value) = 0;
    virtual HRESULT __stdcall get_Offset(Windows::Foundation::Numerics::float3 * value) = 0;
    virtual HRESULT __stdcall put_Offset(Windows::Foundation::Numerics::float3 value) = 0;
    virtual HRESULT __stdcall get_Opacity(float * value) = 0;
    virtual HRESULT __stdcall put_Opacity(float value) = 0;
    virtual HRESULT __stdcall get_Orientation(Windows::Foundation::Numerics::quaternion * value) = 0;
    virtual HRESULT __stdcall put_Orientation(Windows::Foundation::Numerics::quaternion value) = 0;
    virtual HRESULT __stdcall get_Parent(Windows::UI::Composition::IContainerVisual ** value) = 0;
    virtual HRESULT __stdcall get_RotationAngle(float * value) = 0;
    virtual HRESULT __stdcall put_RotationAngle(float value) = 0;
    virtual HRESULT __stdcall get_RotationAngleInDegrees(float * value) = 0;
    virtual HRESULT __stdcall put_RotationAngleInDegrees(float value) = 0;
    virtual HRESULT __stdcall get_RotationAxis(Windows::Foundation::Numerics::float3 * value) = 0;
    virtual HRESULT __stdcall put_RotationAxis(Windows::Foundation::Numerics::float3 value) = 0;
    virtual HRESULT __stdcall get_Scale(Windows::Foundation::Numerics::float3 * value) = 0;
    virtual HRESULT __stdcall put_Scale(Windows::Foundation::Numerics::float3 value) = 0;
    virtual HRESULT __stdcall get_Size(Windows::Foundation::Numerics::float2 * value) = 0;
    virtual HRESULT __stdcall put_Size(Windows::Foundation::Numerics::float2 value) = 0;
    virtual HRESULT __stdcall get_TransformMatrix(Windows::Foundation::Numerics::float4x4 * value) = 0;
    virtual HRESULT __stdcall put_TransformMatrix(Windows::Foundation::Numerics::float4x4 value) = 0;
};

struct __declspec(uuid("8b745505-fd3e-4a98-84a8-e949468c6bcb")) __declspec(novtable) IVisualCollection : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Count(int32_t * value) = 0;
    virtual HRESULT __stdcall abi_InsertAbove(Windows::UI::Composition::IVisual * newChild, Windows::UI::Composition::IVisual * sibling) = 0;
    virtual HRESULT __stdcall abi_InsertAtBottom(Windows::UI::Composition::IVisual * newChild) = 0;
    virtual HRESULT __stdcall abi_InsertAtTop(Windows::UI::Composition::IVisual * newChild) = 0;
    virtual HRESULT __stdcall abi_InsertBelow(Windows::UI::Composition::IVisual * newChild, Windows::UI::Composition::IVisual * sibling) = 0;
    virtual HRESULT __stdcall abi_Remove(Windows::UI::Composition::IVisual * child) = 0;
    virtual HRESULT __stdcall abi_RemoveAll() = 0;
};

struct __declspec(uuid("ad0ff93e-b502-4eb5-87b4-9a38a71d0137")) __declspec(novtable) IVisualFactory : Windows::IInspectable
{
};

struct __declspec(uuid("338faa70-54c8-40a7-8029-c9ceeb0aa250")) __declspec(novtable) IVisualUnorderedCollection : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Count(int32_t * value) = 0;
    virtual HRESULT __stdcall abi_Add(Windows::UI::Composition::IVisual * newVisual) = 0;
    virtual HRESULT __stdcall abi_Remove(Windows::UI::Composition::IVisual * visual) = 0;
    virtual HRESULT __stdcall abi_RemoveAll() = 0;
};

}

namespace ABI {

template <> struct traits<Windows::UI::Composition::AmbientLight> { using default_interface = Windows::UI::Composition::IAmbientLight; };
template <> struct traits<Windows::UI::Composition::ColorKeyFrameAnimation> { using default_interface = Windows::UI::Composition::IColorKeyFrameAnimation; };
template <> struct traits<Windows::UI::Composition::CompositionAnimation> { using default_interface = Windows::UI::Composition::ICompositionAnimation; };
template <> struct traits<Windows::UI::Composition::CompositionAnimationGroup> { using default_interface = Windows::UI::Composition::ICompositionAnimationGroup; };
template <> struct traits<Windows::UI::Composition::CompositionBackdropBrush> { using default_interface = Windows::UI::Composition::ICompositionBackdropBrush; };
template <> struct traits<Windows::UI::Composition::CompositionBatchCompletedEventArgs> { using default_interface = Windows::UI::Composition::ICompositionBatchCompletedEventArgs; };
template <> struct traits<Windows::UI::Composition::CompositionBrush> { using default_interface = Windows::UI::Composition::ICompositionBrush; };
template <> struct traits<Windows::UI::Composition::CompositionClip> { using default_interface = Windows::UI::Composition::ICompositionClip; };
template <> struct traits<Windows::UI::Composition::CompositionColorBrush> { using default_interface = Windows::UI::Composition::ICompositionColorBrush; };
template <> struct traits<Windows::UI::Composition::CompositionCommitBatch> { using default_interface = Windows::UI::Composition::ICompositionCommitBatch; };
template <> struct traits<Windows::UI::Composition::CompositionDrawingSurface> { using default_interface = Windows::UI::Composition::ICompositionDrawingSurface; };
template <> struct traits<Windows::UI::Composition::CompositionEasingFunction> { using default_interface = Windows::UI::Composition::ICompositionEasingFunction; };
template <> struct traits<Windows::UI::Composition::CompositionEffectBrush> { using default_interface = Windows::UI::Composition::ICompositionEffectBrush; };
template <> struct traits<Windows::UI::Composition::CompositionEffectFactory> { using default_interface = Windows::UI::Composition::ICompositionEffectFactory; };
template <> struct traits<Windows::UI::Composition::CompositionEffectSourceParameter> { using default_interface = Windows::UI::Composition::ICompositionEffectSourceParameter; };
template <> struct traits<Windows::UI::Composition::CompositionGraphicsDevice> { using default_interface = Windows::UI::Composition::ICompositionGraphicsDevice; };
template <> struct traits<Windows::UI::Composition::CompositionLight> { using default_interface = Windows::UI::Composition::ICompositionLight; };
template <> struct traits<Windows::UI::Composition::CompositionMaskBrush> { using default_interface = Windows::UI::Composition::ICompositionMaskBrush; };
template <> struct traits<Windows::UI::Composition::CompositionNineGridBrush> { using default_interface = Windows::UI::Composition::ICompositionNineGridBrush; };
template <> struct traits<Windows::UI::Composition::CompositionObject> { using default_interface = Windows::UI::Composition::ICompositionObject; };
template <> struct traits<Windows::UI::Composition::CompositionPropertySet> { using default_interface = Windows::UI::Composition::ICompositionPropertySet; };
template <> struct traits<Windows::UI::Composition::CompositionScopedBatch> { using default_interface = Windows::UI::Composition::ICompositionScopedBatch; };
template <> struct traits<Windows::UI::Composition::CompositionShadow> { using default_interface = Windows::UI::Composition::ICompositionShadow; };
template <> struct traits<Windows::UI::Composition::CompositionSurfaceBrush> { using default_interface = Windows::UI::Composition::ICompositionSurfaceBrush; };
template <> struct traits<Windows::UI::Composition::CompositionTarget> { using default_interface = Windows::UI::Composition::ICompositionTarget; };
template <> struct traits<Windows::UI::Composition::Compositor> { using default_interface = Windows::UI::Composition::ICompositor; };
template <> struct traits<Windows::UI::Composition::ContainerVisual> { using default_interface = Windows::UI::Composition::IContainerVisual; };
template <> struct traits<Windows::UI::Composition::CubicBezierEasingFunction> { using default_interface = Windows::UI::Composition::ICubicBezierEasingFunction; };
template <> struct traits<Windows::UI::Composition::DistantLight> { using default_interface = Windows::UI::Composition::IDistantLight; };
template <> struct traits<Windows::UI::Composition::DropShadow> { using default_interface = Windows::UI::Composition::IDropShadow; };
template <> struct traits<Windows::UI::Composition::ExpressionAnimation> { using default_interface = Windows::UI::Composition::IExpressionAnimation; };
template <> struct traits<Windows::UI::Composition::ImplicitAnimationCollection> { using default_interface = Windows::UI::Composition::IImplicitAnimationCollection; };
template <> struct traits<Windows::UI::Composition::InsetClip> { using default_interface = Windows::UI::Composition::IInsetClip; };
template <> struct traits<Windows::UI::Composition::KeyFrameAnimation> { using default_interface = Windows::UI::Composition::IKeyFrameAnimation; };
template <> struct traits<Windows::UI::Composition::LayerVisual> { using default_interface = Windows::UI::Composition::ILayerVisual; };
template <> struct traits<Windows::UI::Composition::LinearEasingFunction> { using default_interface = Windows::UI::Composition::ILinearEasingFunction; };
template <> struct traits<Windows::UI::Composition::PointLight> { using default_interface = Windows::UI::Composition::IPointLight; };
template <> struct traits<Windows::UI::Composition::QuaternionKeyFrameAnimation> { using default_interface = Windows::UI::Composition::IQuaternionKeyFrameAnimation; };
template <> struct traits<Windows::UI::Composition::RenderingDeviceReplacedEventArgs> { using default_interface = Windows::UI::Composition::IRenderingDeviceReplacedEventArgs; };
template <> struct traits<Windows::UI::Composition::ScalarKeyFrameAnimation> { using default_interface = Windows::UI::Composition::IScalarKeyFrameAnimation; };
template <> struct traits<Windows::UI::Composition::SpotLight> { using default_interface = Windows::UI::Composition::ISpotLight; };
template <> struct traits<Windows::UI::Composition::SpriteVisual> { using default_interface = Windows::UI::Composition::ISpriteVisual; };
template <> struct traits<Windows::UI::Composition::StepEasingFunction> { using default_interface = Windows::UI::Composition::IStepEasingFunction; };
template <> struct traits<Windows::UI::Composition::Vector2KeyFrameAnimation> { using default_interface = Windows::UI::Composition::IVector2KeyFrameAnimation; };
template <> struct traits<Windows::UI::Composition::Vector3KeyFrameAnimation> { using default_interface = Windows::UI::Composition::IVector3KeyFrameAnimation; };
template <> struct traits<Windows::UI::Composition::Vector4KeyFrameAnimation> { using default_interface = Windows::UI::Composition::IVector4KeyFrameAnimation; };
template <> struct traits<Windows::UI::Composition::Visual> { using default_interface = Windows::UI::Composition::IVisual; };
template <> struct traits<Windows::UI::Composition::VisualCollection> { using default_interface = Windows::UI::Composition::IVisualCollection; };
template <> struct traits<Windows::UI::Composition::VisualUnorderedCollection> { using default_interface = Windows::UI::Composition::IVisualUnorderedCollection; };

}

namespace Windows::UI::Composition {

template <typename T> struct impl_IAmbientLight;
template <typename T> struct impl_IColorKeyFrameAnimation;
template <typename T> struct impl_ICompositionAnimation;
template <typename T> struct impl_ICompositionAnimation2;
template <typename T> struct impl_ICompositionAnimationBase;
template <typename T> struct impl_ICompositionAnimationFactory;
template <typename T> struct impl_ICompositionAnimationGroup;
template <typename T> struct impl_ICompositionBackdropBrush;
template <typename T> struct impl_ICompositionBatchCompletedEventArgs;
template <typename T> struct impl_ICompositionBrush;
template <typename T> struct impl_ICompositionBrushFactory;
template <typename T> struct impl_ICompositionClip;
template <typename T> struct impl_ICompositionClip2;
template <typename T> struct impl_ICompositionClipFactory;
template <typename T> struct impl_ICompositionColorBrush;
template <typename T> struct impl_ICompositionCommitBatch;
template <typename T> struct impl_ICompositionDrawingSurface;
template <typename T> struct impl_ICompositionEasingFunction;
template <typename T> struct impl_ICompositionEasingFunctionFactory;
template <typename T> struct impl_ICompositionEffectBrush;
template <typename T> struct impl_ICompositionEffectFactory;
template <typename T> struct impl_ICompositionEffectSourceParameter;
template <typename T> struct impl_ICompositionEffectSourceParameterFactory;
template <typename T> struct impl_ICompositionGraphicsDevice;
template <typename T> struct impl_ICompositionLight;
template <typename T> struct impl_ICompositionLightFactory;
template <typename T> struct impl_ICompositionMaskBrush;
template <typename T> struct impl_ICompositionNineGridBrush;
template <typename T> struct impl_ICompositionObject;
template <typename T> struct impl_ICompositionObject2;
template <typename T> struct impl_ICompositionObjectFactory;
template <typename T> struct impl_ICompositionPropertySet;
template <typename T> struct impl_ICompositionPropertySet2;
template <typename T> struct impl_ICompositionScopedBatch;
template <typename T> struct impl_ICompositionShadow;
template <typename T> struct impl_ICompositionShadowFactory;
template <typename T> struct impl_ICompositionSurface;
template <typename T> struct impl_ICompositionSurfaceBrush;
template <typename T> struct impl_ICompositionSurfaceBrush2;
template <typename T> struct impl_ICompositionTarget;
template <typename T> struct impl_ICompositor;
template <typename T> struct impl_ICompositor2;
template <typename T> struct impl_IContainerVisual;
template <typename T> struct impl_IContainerVisualFactory;
template <typename T> struct impl_ICubicBezierEasingFunction;
template <typename T> struct impl_IDistantLight;
template <typename T> struct impl_IDropShadow;
template <typename T> struct impl_IExpressionAnimation;
template <typename T> struct impl_IImplicitAnimationCollection;
template <typename T> struct impl_IInsetClip;
template <typename T> struct impl_IKeyFrameAnimation;
template <typename T> struct impl_IKeyFrameAnimation2;
template <typename T> struct impl_IKeyFrameAnimationFactory;
template <typename T> struct impl_ILayerVisual;
template <typename T> struct impl_ILinearEasingFunction;
template <typename T> struct impl_IPointLight;
template <typename T> struct impl_IQuaternionKeyFrameAnimation;
template <typename T> struct impl_IRenderingDeviceReplacedEventArgs;
template <typename T> struct impl_IScalarKeyFrameAnimation;
template <typename T> struct impl_ISpotLight;
template <typename T> struct impl_ISpriteVisual;
template <typename T> struct impl_ISpriteVisual2;
template <typename T> struct impl_IStepEasingFunction;
template <typename T> struct impl_IVector2KeyFrameAnimation;
template <typename T> struct impl_IVector3KeyFrameAnimation;
template <typename T> struct impl_IVector4KeyFrameAnimation;
template <typename T> struct impl_IVisual;
template <typename T> struct impl_IVisualCollection;
template <typename T> struct impl_IVisualFactory;
template <typename T> struct impl_IVisualUnorderedCollection;

}

namespace impl {

template <> struct traits<Windows::UI::Composition::IAmbientLight>
{
    using abi = ABI::Windows::UI::Composition::IAmbientLight;
    template <typename D> using consume = Windows::UI::Composition::impl_IAmbientLight<D>;
};

template <> struct traits<Windows::UI::Composition::IColorKeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::IColorKeyFrameAnimation;
    template <typename D> using consume = Windows::UI::Composition::impl_IColorKeyFrameAnimation<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionAnimation>
{
    using abi = ABI::Windows::UI::Composition::ICompositionAnimation;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionAnimation<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionAnimation2>
{
    using abi = ABI::Windows::UI::Composition::ICompositionAnimation2;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionAnimation2<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionAnimationBase>
{
    using abi = ABI::Windows::UI::Composition::ICompositionAnimationBase;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionAnimationBase<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionAnimationFactory>
{
    using abi = ABI::Windows::UI::Composition::ICompositionAnimationFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionAnimationFactory<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionAnimationGroup>
{
    using abi = ABI::Windows::UI::Composition::ICompositionAnimationGroup;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionAnimationGroup<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionBackdropBrush>
{
    using abi = ABI::Windows::UI::Composition::ICompositionBackdropBrush;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionBackdropBrush<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionBatchCompletedEventArgs>
{
    using abi = ABI::Windows::UI::Composition::ICompositionBatchCompletedEventArgs;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionBatchCompletedEventArgs<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionBrush>
{
    using abi = ABI::Windows::UI::Composition::ICompositionBrush;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionBrush<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionBrushFactory>
{
    using abi = ABI::Windows::UI::Composition::ICompositionBrushFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionBrushFactory<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionClip>
{
    using abi = ABI::Windows::UI::Composition::ICompositionClip;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionClip<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionClip2>
{
    using abi = ABI::Windows::UI::Composition::ICompositionClip2;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionClip2<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionClipFactory>
{
    using abi = ABI::Windows::UI::Composition::ICompositionClipFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionClipFactory<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionColorBrush>
{
    using abi = ABI::Windows::UI::Composition::ICompositionColorBrush;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionColorBrush<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionCommitBatch>
{
    using abi = ABI::Windows::UI::Composition::ICompositionCommitBatch;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionCommitBatch<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionDrawingSurface>
{
    using abi = ABI::Windows::UI::Composition::ICompositionDrawingSurface;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionDrawingSurface<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionEasingFunction>
{
    using abi = ABI::Windows::UI::Composition::ICompositionEasingFunction;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionEasingFunction<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionEasingFunctionFactory>
{
    using abi = ABI::Windows::UI::Composition::ICompositionEasingFunctionFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionEasingFunctionFactory<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionEffectBrush>
{
    using abi = ABI::Windows::UI::Composition::ICompositionEffectBrush;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionEffectBrush<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionEffectFactory>
{
    using abi = ABI::Windows::UI::Composition::ICompositionEffectFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionEffectFactory<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionEffectSourceParameter>
{
    using abi = ABI::Windows::UI::Composition::ICompositionEffectSourceParameter;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionEffectSourceParameter<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionEffectSourceParameterFactory>
{
    using abi = ABI::Windows::UI::Composition::ICompositionEffectSourceParameterFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionEffectSourceParameterFactory<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionGraphicsDevice>
{
    using abi = ABI::Windows::UI::Composition::ICompositionGraphicsDevice;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionGraphicsDevice<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionLight>
{
    using abi = ABI::Windows::UI::Composition::ICompositionLight;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionLight<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionLightFactory>
{
    using abi = ABI::Windows::UI::Composition::ICompositionLightFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionLightFactory<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionMaskBrush>
{
    using abi = ABI::Windows::UI::Composition::ICompositionMaskBrush;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionMaskBrush<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionNineGridBrush>
{
    using abi = ABI::Windows::UI::Composition::ICompositionNineGridBrush;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionNineGridBrush<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionObject>
{
    using abi = ABI::Windows::UI::Composition::ICompositionObject;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionObject<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionObject2>
{
    using abi = ABI::Windows::UI::Composition::ICompositionObject2;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionObject2<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionObjectFactory>
{
    using abi = ABI::Windows::UI::Composition::ICompositionObjectFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionObjectFactory<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionPropertySet>
{
    using abi = ABI::Windows::UI::Composition::ICompositionPropertySet;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionPropertySet<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionPropertySet2>
{
    using abi = ABI::Windows::UI::Composition::ICompositionPropertySet2;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionPropertySet2<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionScopedBatch>
{
    using abi = ABI::Windows::UI::Composition::ICompositionScopedBatch;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionScopedBatch<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionShadow>
{
    using abi = ABI::Windows::UI::Composition::ICompositionShadow;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionShadow<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionShadowFactory>
{
    using abi = ABI::Windows::UI::Composition::ICompositionShadowFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionShadowFactory<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionSurface>
{
    using abi = ABI::Windows::UI::Composition::ICompositionSurface;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionSurface<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionSurfaceBrush>
{
    using abi = ABI::Windows::UI::Composition::ICompositionSurfaceBrush;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionSurfaceBrush<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionSurfaceBrush2>
{
    using abi = ABI::Windows::UI::Composition::ICompositionSurfaceBrush2;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionSurfaceBrush2<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositionTarget>
{
    using abi = ABI::Windows::UI::Composition::ICompositionTarget;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositionTarget<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositor>
{
    using abi = ABI::Windows::UI::Composition::ICompositor;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositor<D>;
};

template <> struct traits<Windows::UI::Composition::ICompositor2>
{
    using abi = ABI::Windows::UI::Composition::ICompositor2;
    template <typename D> using consume = Windows::UI::Composition::impl_ICompositor2<D>;
};

template <> struct traits<Windows::UI::Composition::IContainerVisual>
{
    using abi = ABI::Windows::UI::Composition::IContainerVisual;
    template <typename D> using consume = Windows::UI::Composition::impl_IContainerVisual<D>;
};

template <> struct traits<Windows::UI::Composition::IContainerVisualFactory>
{
    using abi = ABI::Windows::UI::Composition::IContainerVisualFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_IContainerVisualFactory<D>;
};

template <> struct traits<Windows::UI::Composition::ICubicBezierEasingFunction>
{
    using abi = ABI::Windows::UI::Composition::ICubicBezierEasingFunction;
    template <typename D> using consume = Windows::UI::Composition::impl_ICubicBezierEasingFunction<D>;
};

template <> struct traits<Windows::UI::Composition::IDistantLight>
{
    using abi = ABI::Windows::UI::Composition::IDistantLight;
    template <typename D> using consume = Windows::UI::Composition::impl_IDistantLight<D>;
};

template <> struct traits<Windows::UI::Composition::IDropShadow>
{
    using abi = ABI::Windows::UI::Composition::IDropShadow;
    template <typename D> using consume = Windows::UI::Composition::impl_IDropShadow<D>;
};

template <> struct traits<Windows::UI::Composition::IExpressionAnimation>
{
    using abi = ABI::Windows::UI::Composition::IExpressionAnimation;
    template <typename D> using consume = Windows::UI::Composition::impl_IExpressionAnimation<D>;
};

template <> struct traits<Windows::UI::Composition::IImplicitAnimationCollection>
{
    using abi = ABI::Windows::UI::Composition::IImplicitAnimationCollection;
    template <typename D> using consume = Windows::UI::Composition::impl_IImplicitAnimationCollection<D>;
};

template <> struct traits<Windows::UI::Composition::IInsetClip>
{
    using abi = ABI::Windows::UI::Composition::IInsetClip;
    template <typename D> using consume = Windows::UI::Composition::impl_IInsetClip<D>;
};

template <> struct traits<Windows::UI::Composition::IKeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::IKeyFrameAnimation;
    template <typename D> using consume = Windows::UI::Composition::impl_IKeyFrameAnimation<D>;
};

template <> struct traits<Windows::UI::Composition::IKeyFrameAnimation2>
{
    using abi = ABI::Windows::UI::Composition::IKeyFrameAnimation2;
    template <typename D> using consume = Windows::UI::Composition::impl_IKeyFrameAnimation2<D>;
};

template <> struct traits<Windows::UI::Composition::IKeyFrameAnimationFactory>
{
    using abi = ABI::Windows::UI::Composition::IKeyFrameAnimationFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_IKeyFrameAnimationFactory<D>;
};

template <> struct traits<Windows::UI::Composition::ILayerVisual>
{
    using abi = ABI::Windows::UI::Composition::ILayerVisual;
    template <typename D> using consume = Windows::UI::Composition::impl_ILayerVisual<D>;
};

template <> struct traits<Windows::UI::Composition::ILinearEasingFunction>
{
    using abi = ABI::Windows::UI::Composition::ILinearEasingFunction;
    template <typename D> using consume = Windows::UI::Composition::impl_ILinearEasingFunction<D>;
};

template <> struct traits<Windows::UI::Composition::IPointLight>
{
    using abi = ABI::Windows::UI::Composition::IPointLight;
    template <typename D> using consume = Windows::UI::Composition::impl_IPointLight<D>;
};

template <> struct traits<Windows::UI::Composition::IQuaternionKeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::IQuaternionKeyFrameAnimation;
    template <typename D> using consume = Windows::UI::Composition::impl_IQuaternionKeyFrameAnimation<D>;
};

template <> struct traits<Windows::UI::Composition::IRenderingDeviceReplacedEventArgs>
{
    using abi = ABI::Windows::UI::Composition::IRenderingDeviceReplacedEventArgs;
    template <typename D> using consume = Windows::UI::Composition::impl_IRenderingDeviceReplacedEventArgs<D>;
};

template <> struct traits<Windows::UI::Composition::IScalarKeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::IScalarKeyFrameAnimation;
    template <typename D> using consume = Windows::UI::Composition::impl_IScalarKeyFrameAnimation<D>;
};

template <> struct traits<Windows::UI::Composition::ISpotLight>
{
    using abi = ABI::Windows::UI::Composition::ISpotLight;
    template <typename D> using consume = Windows::UI::Composition::impl_ISpotLight<D>;
};

template <> struct traits<Windows::UI::Composition::ISpriteVisual>
{
    using abi = ABI::Windows::UI::Composition::ISpriteVisual;
    template <typename D> using consume = Windows::UI::Composition::impl_ISpriteVisual<D>;
};

template <> struct traits<Windows::UI::Composition::ISpriteVisual2>
{
    using abi = ABI::Windows::UI::Composition::ISpriteVisual2;
    template <typename D> using consume = Windows::UI::Composition::impl_ISpriteVisual2<D>;
};

template <> struct traits<Windows::UI::Composition::IStepEasingFunction>
{
    using abi = ABI::Windows::UI::Composition::IStepEasingFunction;
    template <typename D> using consume = Windows::UI::Composition::impl_IStepEasingFunction<D>;
};

template <> struct traits<Windows::UI::Composition::IVector2KeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::IVector2KeyFrameAnimation;
    template <typename D> using consume = Windows::UI::Composition::impl_IVector2KeyFrameAnimation<D>;
};

template <> struct traits<Windows::UI::Composition::IVector3KeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::IVector3KeyFrameAnimation;
    template <typename D> using consume = Windows::UI::Composition::impl_IVector3KeyFrameAnimation<D>;
};

template <> struct traits<Windows::UI::Composition::IVector4KeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::IVector4KeyFrameAnimation;
    template <typename D> using consume = Windows::UI::Composition::impl_IVector4KeyFrameAnimation<D>;
};

template <> struct traits<Windows::UI::Composition::IVisual>
{
    using abi = ABI::Windows::UI::Composition::IVisual;
    template <typename D> using consume = Windows::UI::Composition::impl_IVisual<D>;
};

template <> struct traits<Windows::UI::Composition::IVisualCollection>
{
    using abi = ABI::Windows::UI::Composition::IVisualCollection;
    template <typename D> using consume = Windows::UI::Composition::impl_IVisualCollection<D>;
};

template <> struct traits<Windows::UI::Composition::IVisualFactory>
{
    using abi = ABI::Windows::UI::Composition::IVisualFactory;
    template <typename D> using consume = Windows::UI::Composition::impl_IVisualFactory<D>;
};

template <> struct traits<Windows::UI::Composition::IVisualUnorderedCollection>
{
    using abi = ABI::Windows::UI::Composition::IVisualUnorderedCollection;
    template <typename D> using consume = Windows::UI::Composition::impl_IVisualUnorderedCollection<D>;
};

template <> struct traits<Windows::UI::Composition::AmbientLight>
{
    using abi = ABI::Windows::UI::Composition::AmbientLight;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.AmbientLight"; }
};

template <> struct traits<Windows::UI::Composition::ColorKeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::ColorKeyFrameAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.ColorKeyFrameAnimation"; }
};

template <> struct traits<Windows::UI::Composition::CompositionAnimation>
{
    using abi = ABI::Windows::UI::Composition::CompositionAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionAnimation"; }
};

template <> struct traits<Windows::UI::Composition::CompositionAnimationGroup>
{
    using abi = ABI::Windows::UI::Composition::CompositionAnimationGroup;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionAnimationGroup"; }
};

template <> struct traits<Windows::UI::Composition::CompositionBackdropBrush>
{
    using abi = ABI::Windows::UI::Composition::CompositionBackdropBrush;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionBackdropBrush"; }
};

template <> struct traits<Windows::UI::Composition::CompositionBatchCompletedEventArgs>
{
    using abi = ABI::Windows::UI::Composition::CompositionBatchCompletedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionBatchCompletedEventArgs"; }
};

template <> struct traits<Windows::UI::Composition::CompositionBrush>
{
    using abi = ABI::Windows::UI::Composition::CompositionBrush;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionBrush"; }
};

template <> struct traits<Windows::UI::Composition::CompositionClip>
{
    using abi = ABI::Windows::UI::Composition::CompositionClip;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionClip"; }
};

template <> struct traits<Windows::UI::Composition::CompositionColorBrush>
{
    using abi = ABI::Windows::UI::Composition::CompositionColorBrush;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionColorBrush"; }
};

template <> struct traits<Windows::UI::Composition::CompositionCommitBatch>
{
    using abi = ABI::Windows::UI::Composition::CompositionCommitBatch;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionCommitBatch"; }
};

template <> struct traits<Windows::UI::Composition::CompositionDrawingSurface>
{
    using abi = ABI::Windows::UI::Composition::CompositionDrawingSurface;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionDrawingSurface"; }
};

template <> struct traits<Windows::UI::Composition::CompositionEasingFunction>
{
    using abi = ABI::Windows::UI::Composition::CompositionEasingFunction;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionEasingFunction"; }
};

template <> struct traits<Windows::UI::Composition::CompositionEffectBrush>
{
    using abi = ABI::Windows::UI::Composition::CompositionEffectBrush;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionEffectBrush"; }
};

template <> struct traits<Windows::UI::Composition::CompositionEffectFactory>
{
    using abi = ABI::Windows::UI::Composition::CompositionEffectFactory;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionEffectFactory"; }
};

template <> struct traits<Windows::UI::Composition::CompositionEffectSourceParameter>
{
    using abi = ABI::Windows::UI::Composition::CompositionEffectSourceParameter;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionEffectSourceParameter"; }
};

template <> struct traits<Windows::UI::Composition::CompositionGraphicsDevice>
{
    using abi = ABI::Windows::UI::Composition::CompositionGraphicsDevice;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionGraphicsDevice"; }
};

template <> struct traits<Windows::UI::Composition::CompositionLight>
{
    using abi = ABI::Windows::UI::Composition::CompositionLight;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionLight"; }
};

template <> struct traits<Windows::UI::Composition::CompositionMaskBrush>
{
    using abi = ABI::Windows::UI::Composition::CompositionMaskBrush;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionMaskBrush"; }
};

template <> struct traits<Windows::UI::Composition::CompositionNineGridBrush>
{
    using abi = ABI::Windows::UI::Composition::CompositionNineGridBrush;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionNineGridBrush"; }
};

template <> struct traits<Windows::UI::Composition::CompositionObject>
{
    using abi = ABI::Windows::UI::Composition::CompositionObject;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionObject"; }
};

template <> struct traits<Windows::UI::Composition::CompositionPropertySet>
{
    using abi = ABI::Windows::UI::Composition::CompositionPropertySet;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionPropertySet"; }
};

template <> struct traits<Windows::UI::Composition::CompositionScopedBatch>
{
    using abi = ABI::Windows::UI::Composition::CompositionScopedBatch;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionScopedBatch"; }
};

template <> struct traits<Windows::UI::Composition::CompositionShadow>
{
    using abi = ABI::Windows::UI::Composition::CompositionShadow;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionShadow"; }
};

template <> struct traits<Windows::UI::Composition::CompositionSurfaceBrush>
{
    using abi = ABI::Windows::UI::Composition::CompositionSurfaceBrush;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionSurfaceBrush"; }
};

template <> struct traits<Windows::UI::Composition::CompositionTarget>
{
    using abi = ABI::Windows::UI::Composition::CompositionTarget;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CompositionTarget"; }
};

template <> struct traits<Windows::UI::Composition::Compositor>
{
    using abi = ABI::Windows::UI::Composition::Compositor;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.Compositor"; }
};

template <> struct traits<Windows::UI::Composition::ContainerVisual>
{
    using abi = ABI::Windows::UI::Composition::ContainerVisual;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.ContainerVisual"; }
};

template <> struct traits<Windows::UI::Composition::CubicBezierEasingFunction>
{
    using abi = ABI::Windows::UI::Composition::CubicBezierEasingFunction;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.CubicBezierEasingFunction"; }
};

template <> struct traits<Windows::UI::Composition::DistantLight>
{
    using abi = ABI::Windows::UI::Composition::DistantLight;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.DistantLight"; }
};

template <> struct traits<Windows::UI::Composition::DropShadow>
{
    using abi = ABI::Windows::UI::Composition::DropShadow;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.DropShadow"; }
};

template <> struct traits<Windows::UI::Composition::ExpressionAnimation>
{
    using abi = ABI::Windows::UI::Composition::ExpressionAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.ExpressionAnimation"; }
};

template <> struct traits<Windows::UI::Composition::ImplicitAnimationCollection>
{
    using abi = ABI::Windows::UI::Composition::ImplicitAnimationCollection;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.ImplicitAnimationCollection"; }
};

template <> struct traits<Windows::UI::Composition::InsetClip>
{
    using abi = ABI::Windows::UI::Composition::InsetClip;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.InsetClip"; }
};

template <> struct traits<Windows::UI::Composition::KeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::KeyFrameAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.KeyFrameAnimation"; }
};

template <> struct traits<Windows::UI::Composition::LayerVisual>
{
    using abi = ABI::Windows::UI::Composition::LayerVisual;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.LayerVisual"; }
};

template <> struct traits<Windows::UI::Composition::LinearEasingFunction>
{
    using abi = ABI::Windows::UI::Composition::LinearEasingFunction;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.LinearEasingFunction"; }
};

template <> struct traits<Windows::UI::Composition::PointLight>
{
    using abi = ABI::Windows::UI::Composition::PointLight;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.PointLight"; }
};

template <> struct traits<Windows::UI::Composition::QuaternionKeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::QuaternionKeyFrameAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.QuaternionKeyFrameAnimation"; }
};

template <> struct traits<Windows::UI::Composition::RenderingDeviceReplacedEventArgs>
{
    using abi = ABI::Windows::UI::Composition::RenderingDeviceReplacedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.RenderingDeviceReplacedEventArgs"; }
};

template <> struct traits<Windows::UI::Composition::ScalarKeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::ScalarKeyFrameAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.ScalarKeyFrameAnimation"; }
};

template <> struct traits<Windows::UI::Composition::SpotLight>
{
    using abi = ABI::Windows::UI::Composition::SpotLight;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.SpotLight"; }
};

template <> struct traits<Windows::UI::Composition::SpriteVisual>
{
    using abi = ABI::Windows::UI::Composition::SpriteVisual;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.SpriteVisual"; }
};

template <> struct traits<Windows::UI::Composition::StepEasingFunction>
{
    using abi = ABI::Windows::UI::Composition::StepEasingFunction;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.StepEasingFunction"; }
};

template <> struct traits<Windows::UI::Composition::Vector2KeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::Vector2KeyFrameAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.Vector2KeyFrameAnimation"; }
};

template <> struct traits<Windows::UI::Composition::Vector3KeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::Vector3KeyFrameAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.Vector3KeyFrameAnimation"; }
};

template <> struct traits<Windows::UI::Composition::Vector4KeyFrameAnimation>
{
    using abi = ABI::Windows::UI::Composition::Vector4KeyFrameAnimation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.Vector4KeyFrameAnimation"; }
};

template <> struct traits<Windows::UI::Composition::Visual>
{
    using abi = ABI::Windows::UI::Composition::Visual;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.Visual"; }
};

template <> struct traits<Windows::UI::Composition::VisualCollection>
{
    using abi = ABI::Windows::UI::Composition::VisualCollection;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.VisualCollection"; }
};

template <> struct traits<Windows::UI::Composition::VisualUnorderedCollection>
{
    using abi = ABI::Windows::UI::Composition::VisualUnorderedCollection;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Composition.VisualUnorderedCollection"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Storage.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.System.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Storage.Streams.3.h"
#include "internal/Windows.Storage.FileProperties.3.h"
#include "internal/Windows.Storage.3.h"
#include "Windows.Foundation.h"
#include "Windows.Foundation.Collections.h"
#include "Windows.Storage.Search.h"
#include "Windows.Storage.Streams.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Storage {

template <typename L> ApplicationDataSetVersionHandler::ApplicationDataSetVersionHandler(L lambda) :
    ApplicationDataSetVersionHandler(impl::make_delegate<impl_ApplicationDataSetVersionHandler<L>, ApplicationDataSetVersionHandler>(std::forward<L>(lambda)))
{}

template <typename F> ApplicationDataSetVersionHandler::ApplicationDataSetVersionHandler(F * function) :
    ApplicationDataSetVersionHandler([=](auto && ... args) { function(args ...); })
{}

template <typename O, typename M> ApplicationDataSetVersionHandler::ApplicationDataSetVersionHandler(O * object, M method) :
    ApplicationDataSetVersionHandler([=](auto && ... args) { ((*object).*(method))(args ...); })
{}

inline void ApplicationDataSetVersionHandler::operator()(const Windows::Storage::SetVersionRequest & setVersionRequest) const
{
    check_hresult((*this)->abi_Invoke(get(setVersionRequest)));
}

template <typename L> StreamedFileDataRequestedHandler::StreamedFileDataRequestedHandler(L lambda) :
    StreamedFileDataRequestedHandler(impl::make_delegate<impl_StreamedFileDataRequestedHandler<L>, StreamedFileDataRequestedHandler>(std::forward<L>(lambda)))
{}

template <typename F> StreamedFileDataRequestedHandler::StreamedFileDataRequestedHandler(F * function) :
    StreamedFileDataRequestedHandler([=](auto && ... args) { function(args ...); })
{}

template <typename O, typename M> StreamedFileDataRequestedHandler::StreamedFileDataRequestedHandler(O * object, M method) :
    StreamedFileDataRequestedHandler([=](auto && ... args) { ((*object).*(method))(args ...); })
{}

inline void StreamedFileDataRequestedHandler::operator()(const Windows::Storage::StreamedFileDataRequest & stream) const
{
    check_hresult((*this)->abi_Invoke(get(stream)));
}

}

namespace impl {

template <typename D>
struct produce<D, Windows::Storage::IApplicationData> : produce_base<D, Windows::Storage::IApplicationData>
{
    HRESULT __stdcall get_Version(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Version());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetVersionAsync(uint32_t desiredVersion, abi_arg_in<Windows::Storage::ApplicationDataSetVersionHandler> handler, abi_arg_out<Windows::Foundation::IAsyncAction> setVersionOperation) noexcept override
    {
        try
        {
            *setVersionOperation = detach(this->shim().SetVersionAsync(desiredVersion, *reinterpret_cast<const Windows::Storage::ApplicationDataSetVersionHandler *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            *setVersionOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ClearAllAsync(abi_arg_out<Windows::Foundation::IAsyncAction> clearOperation) noexcept override
    {
        try
        {
            *clearOperation = detach(this->shim().ClearAsync());
            return S_OK;
        }
        catch (...)
        {
            *clearOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ClearAsync(Windows::Storage::ApplicationDataLocality locality, abi_arg_out<Windows::Foundation::IAsyncAction> clearOperation) noexcept override
    {
        try
        {
            *clearOperation = detach(this->shim().ClearAsync(locality));
            return S_OK;
        }
        catch (...)
        {
            *clearOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LocalSettings(abi_arg_out<Windows::Storage::IApplicationDataContainer> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LocalSettings());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RoamingSettings(abi_arg_out<Windows::Storage::IApplicationDataContainer> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RoamingSettings());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LocalFolder(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LocalFolder());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RoamingFolder(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RoamingFolder());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TemporaryFolder(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TemporaryFolder());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_DataChanged(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Storage::ApplicationData, Windows::IInspectable>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().DataChanged(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Storage::ApplicationData, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_DataChanged(event_token token) noexcept override
    {
        try
        {
            this->shim().DataChanged(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SignalDataChanged() noexcept override
    {
        try
        {
            this->shim().SignalDataChanged();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RoamingStorageQuota(uint64_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RoamingStorageQuota());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IApplicationData2> : produce_base<D, Windows::Storage::IApplicationData2>
{
    HRESULT __stdcall get_LocalCacheFolder(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LocalCacheFolder());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IApplicationData3> : produce_base<D, Windows::Storage::IApplicationData3>
{
    HRESULT __stdcall abi_GetPublisherCacheFolder(abi_arg_in<hstring> folderName, abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetPublisherCacheFolder(*reinterpret_cast<const hstring *>(&folderName)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ClearPublisherCacheFolderAsync(abi_arg_in<hstring> folderName, abi_arg_out<Windows::Foundation::IAsyncAction> clearOperation) noexcept override
    {
        try
        {
            *clearOperation = detach(this->shim().ClearPublisherCacheFolderAsync(*reinterpret_cast<const hstring *>(&folderName)));
            return S_OK;
        }
        catch (...)
        {
            *clearOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SharedLocalFolder(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SharedLocalFolder());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IApplicationDataContainer> : produce_base<D, Windows::Storage::IApplicationDataContainer>
{
    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Locality(Windows::Storage::ApplicationDataLocality * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Locality());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Values(abi_arg_out<Windows::Foundation::Collections::IPropertySet> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Values());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Containers(abi_arg_out<Windows::Foundation::Collections::IMapView<hstring, Windows::Storage::ApplicationDataContainer>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Containers());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateContainer(abi_arg_in<hstring> name, Windows::Storage::ApplicationDataCreateDisposition disposition, abi_arg_out<Windows::Storage::IApplicationDataContainer> container) noexcept override
    {
        try
        {
            *container = detach(this->shim().CreateContainer(*reinterpret_cast<const hstring *>(&name), disposition));
            return S_OK;
        }
        catch (...)
        {
            *container = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_DeleteContainer(abi_arg_in<hstring> name) noexcept override
    {
        try
        {
            this->shim().DeleteContainer(*reinterpret_cast<const hstring *>(&name));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IApplicationDataStatics> : produce_base<D, Windows::Storage::IApplicationDataStatics>
{
    HRESULT __stdcall get_Current(abi_arg_out<Windows::Storage::IApplicationData> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Current());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IApplicationDataStatics2> : produce_base<D, Windows::Storage::IApplicationDataStatics2>
{
    HRESULT __stdcall abi_GetForUserAsync(abi_arg_in<Windows::System::IUser> user, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::ApplicationData>> getForUserOperation) noexcept override
    {
        try
        {
            *getForUserOperation = detach(this->shim().GetForUserAsync(*reinterpret_cast<const Windows::System::User *>(&user)));
            return S_OK;
        }
        catch (...)
        {
            *getForUserOperation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::ICachedFileManagerStatics> : produce_base<D, Windows::Storage::ICachedFileManagerStatics>
{
    HRESULT __stdcall abi_DeferUpdates(abi_arg_in<Windows::Storage::IStorageFile> file) noexcept override
    {
        try
        {
            this->shim().DeferUpdates(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CompleteUpdatesAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_out<Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Provider::FileUpdateStatus>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CompleteUpdatesAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IDownloadsFolderStatics> : produce_base<D, Windows::Storage::IDownloadsFolderStatics>
{
    HRESULT __stdcall abi_CreateFileAsync(abi_arg_in<hstring> desiredName, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFileAsync(*reinterpret_cast<const hstring *>(&desiredName)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFolderAsync(abi_arg_in<hstring> desiredName, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFolderAsync(*reinterpret_cast<const hstring *>(&desiredName)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFileWithCollisionOptionAsync(abi_arg_in<hstring> desiredName, Windows::Storage::CreationCollisionOption option, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFileAsync(*reinterpret_cast<const hstring *>(&desiredName), option));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFolderWithCollisionOptionAsync(abi_arg_in<hstring> desiredName, Windows::Storage::CreationCollisionOption option, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFolderAsync(*reinterpret_cast<const hstring *>(&desiredName), option));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IDownloadsFolderStatics2> : produce_base<D, Windows::Storage::IDownloadsFolderStatics2>
{
    HRESULT __stdcall abi_CreateFileForUserAsync(abi_arg_in<Windows::System::IUser> user, abi_arg_in<hstring> desiredName, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFileForUserAsync(*reinterpret_cast<const Windows::System::User *>(&user), *reinterpret_cast<const hstring *>(&desiredName)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFolderForUserAsync(abi_arg_in<Windows::System::IUser> user, abi_arg_in<hstring> desiredName, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFolderForUserAsync(*reinterpret_cast<const Windows::System::User *>(&user), *reinterpret_cast<const hstring *>(&desiredName)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFileForUserWithCollisionOptionAsync(abi_arg_in<Windows::System::IUser> user, abi_arg_in<hstring> desiredName, Windows::Storage::CreationCollisionOption option, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFileForUserAsync(*reinterpret_cast<const Windows::System::User *>(&user), *reinterpret_cast<const hstring *>(&desiredName), option));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFolderForUserWithCollisionOptionAsync(abi_arg_in<Windows::System::IUser> user, abi_arg_in<hstring> desiredName, Windows::Storage::CreationCollisionOption option, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFolderForUserAsync(*reinterpret_cast<const Windows::System::User *>(&user), *reinterpret_cast<const hstring *>(&desiredName), option));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IFileIOStatics> : produce_base<D, Windows::Storage::IFileIOStatics>
{
    HRESULT __stdcall abi_ReadTextAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_out<Windows::Foundation::IAsyncOperation<hstring>> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().ReadTextAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file)));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadTextWithEncodingAsync(abi_arg_in<Windows::Storage::IStorageFile> file, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncOperation<hstring>> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().ReadTextAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), encoding));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteTextAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_in<hstring> contents, abi_arg_out<Windows::Foundation::IAsyncAction> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().WriteTextAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), *reinterpret_cast<const hstring *>(&contents)));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteTextWithEncodingAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_in<hstring> contents, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncAction> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().WriteTextAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), *reinterpret_cast<const hstring *>(&contents), encoding));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendTextAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_in<hstring> contents, abi_arg_out<Windows::Foundation::IAsyncAction> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().AppendTextAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), *reinterpret_cast<const hstring *>(&contents)));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendTextWithEncodingAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_in<hstring> contents, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncAction> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().AppendTextAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), *reinterpret_cast<const hstring *>(&contents), encoding));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadLinesAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>>> linesOperation) noexcept override
    {
        try
        {
            *linesOperation = detach(this->shim().ReadLinesAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file)));
            return S_OK;
        }
        catch (...)
        {
            *linesOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadLinesWithEncodingAsync(abi_arg_in<Windows::Storage::IStorageFile> file, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>>> linesOperation) noexcept override
    {
        try
        {
            *linesOperation = detach(this->shim().ReadLinesAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), encoding));
            return S_OK;
        }
        catch (...)
        {
            *linesOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteLinesAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_in<Windows::Foundation::Collections::IIterable<hstring>> lines, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().WriteLinesAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<hstring> *>(&lines)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteLinesWithEncodingAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_in<Windows::Foundation::Collections::IIterable<hstring>> lines, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().WriteLinesAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<hstring> *>(&lines), encoding));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendLinesAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_in<Windows::Foundation::Collections::IIterable<hstring>> lines, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().AppendLinesAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<hstring> *>(&lines)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendLinesWithEncodingAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_in<Windows::Foundation::Collections::IIterable<hstring>> lines, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().AppendLinesAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<hstring> *>(&lines), encoding));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadBufferAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ReadBufferAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteBufferAsync(abi_arg_in<Windows::Storage::IStorageFile> file, abi_arg_in<Windows::Storage::Streams::IBuffer> buffer, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().WriteBufferAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), *reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&buffer)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteBytesAsync(abi_arg_in<Windows::Storage::IStorageFile> file, uint32_t __bufferSize, abi_arg_in<uint8_t> * buffer, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().WriteBytesAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&file), array_ref<const uint8_t>(buffer, buffer + __bufferSize)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IKnownFoldersCameraRollStatics> : produce_base<D, Windows::Storage::IKnownFoldersCameraRollStatics>
{
    HRESULT __stdcall get_CameraRoll(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CameraRoll());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IKnownFoldersPlaylistsStatics> : produce_base<D, Windows::Storage::IKnownFoldersPlaylistsStatics>
{
    HRESULT __stdcall get_Playlists(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Playlists());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IKnownFoldersSavedPicturesStatics> : produce_base<D, Windows::Storage::IKnownFoldersSavedPicturesStatics>
{
    HRESULT __stdcall get_SavedPictures(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SavedPictures());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IKnownFoldersStatics> : produce_base<D, Windows::Storage::IKnownFoldersStatics>
{
    HRESULT __stdcall get_MusicLibrary(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MusicLibrary());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PicturesLibrary(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PicturesLibrary());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_VideosLibrary(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().VideosLibrary());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DocumentsLibrary(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DocumentsLibrary());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_HomeGroup(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HomeGroup());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RemovableDevices(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RemovableDevices());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MediaServerDevices(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MediaServerDevices());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IKnownFoldersStatics2> : produce_base<D, Windows::Storage::IKnownFoldersStatics2>
{
    HRESULT __stdcall get_Objects3D(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Objects3D());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AppCaptures(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AppCaptures());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RecordedCalls(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RecordedCalls());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IKnownFoldersStatics3> : produce_base<D, Windows::Storage::IKnownFoldersStatics3>
{
    HRESULT __stdcall abi_GetFolderForUserAsync(abi_arg_in<Windows::System::IUser> user, Windows::Storage::KnownFolderId folderId, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetFolderForUserAsync(*reinterpret_cast<const Windows::System::User *>(&user), folderId));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IPathIOStatics> : produce_base<D, Windows::Storage::IPathIOStatics>
{
    HRESULT __stdcall abi_ReadTextAsync(abi_arg_in<hstring> absolutePath, abi_arg_out<Windows::Foundation::IAsyncOperation<hstring>> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().ReadTextAsync(*reinterpret_cast<const hstring *>(&absolutePath)));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadTextWithEncodingAsync(abi_arg_in<hstring> absolutePath, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncOperation<hstring>> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().ReadTextAsync(*reinterpret_cast<const hstring *>(&absolutePath), encoding));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteTextAsync(abi_arg_in<hstring> absolutePath, abi_arg_in<hstring> contents, abi_arg_out<Windows::Foundation::IAsyncAction> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().WriteTextAsync(*reinterpret_cast<const hstring *>(&absolutePath), *reinterpret_cast<const hstring *>(&contents)));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteTextWithEncodingAsync(abi_arg_in<hstring> absolutePath, abi_arg_in<hstring> contents, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncAction> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().WriteTextAsync(*reinterpret_cast<const hstring *>(&absolutePath), *reinterpret_cast<const hstring *>(&contents), encoding));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendTextAsync(abi_arg_in<hstring> absolutePath, abi_arg_in<hstring> contents, abi_arg_out<Windows::Foundation::IAsyncAction> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().AppendTextAsync(*reinterpret_cast<const hstring *>(&absolutePath), *reinterpret_cast<const hstring *>(&contents)));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendTextWithEncodingAsync(abi_arg_in<hstring> absolutePath, abi_arg_in<hstring> contents, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncAction> textOperation) noexcept override
    {
        try
        {
            *textOperation = detach(this->shim().AppendTextAsync(*reinterpret_cast<const hstring *>(&absolutePath), *reinterpret_cast<const hstring *>(&contents), encoding));
            return S_OK;
        }
        catch (...)
        {
            *textOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadLinesAsync(abi_arg_in<hstring> absolutePath, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>>> linesOperation) noexcept override
    {
        try
        {
            *linesOperation = detach(this->shim().ReadLinesAsync(*reinterpret_cast<const hstring *>(&absolutePath)));
            return S_OK;
        }
        catch (...)
        {
            *linesOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadLinesWithEncodingAsync(abi_arg_in<hstring> absolutePath, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>>> linesOperation) noexcept override
    {
        try
        {
            *linesOperation = detach(this->shim().ReadLinesAsync(*reinterpret_cast<const hstring *>(&absolutePath), encoding));
            return S_OK;
        }
        catch (...)
        {
            *linesOperation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteLinesAsync(abi_arg_in<hstring> absolutePath, abi_arg_in<Windows::Foundation::Collections::IIterable<hstring>> lines, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().WriteLinesAsync(*reinterpret_cast<const hstring *>(&absolutePath), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<hstring> *>(&lines)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteLinesWithEncodingAsync(abi_arg_in<hstring> absolutePath, abi_arg_in<Windows::Foundation::Collections::IIterable<hstring>> lines, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().WriteLinesAsync(*reinterpret_cast<const hstring *>(&absolutePath), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<hstring> *>(&lines), encoding));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendLinesAsync(abi_arg_in<hstring> absolutePath, abi_arg_in<Windows::Foundation::Collections::IIterable<hstring>> lines, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().AppendLinesAsync(*reinterpret_cast<const hstring *>(&absolutePath), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<hstring> *>(&lines)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AppendLinesWithEncodingAsync(abi_arg_in<hstring> absolutePath, abi_arg_in<Windows::Foundation::Collections::IIterable<hstring>> lines, Windows::Storage::Streams::UnicodeEncoding encoding, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().AppendLinesAsync(*reinterpret_cast<const hstring *>(&absolutePath), *reinterpret_cast<const Windows::Foundation::Collections::IIterable<hstring> *>(&lines), encoding));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadBufferAsync(abi_arg_in<hstring> absolutePath, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ReadBufferAsync(*reinterpret_cast<const hstring *>(&absolutePath)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteBufferAsync(abi_arg_in<hstring> absolutePath, abi_arg_in<Windows::Storage::Streams::IBuffer> buffer, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().WriteBufferAsync(*reinterpret_cast<const hstring *>(&absolutePath), *reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&buffer)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_WriteBytesAsync(abi_arg_in<hstring> absolutePath, uint32_t __bufferSize, abi_arg_in<uint8_t> * buffer, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().WriteBytesAsync(*reinterpret_cast<const hstring *>(&absolutePath), array_ref<const uint8_t>(buffer, buffer + __bufferSize)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::ISetVersionDeferral> : produce_base<D, Windows::Storage::ISetVersionDeferral>
{
    HRESULT __stdcall abi_Complete() noexcept override
    {
        try
        {
            this->shim().Complete();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::ISetVersionRequest> : produce_base<D, Windows::Storage::ISetVersionRequest>
{
    HRESULT __stdcall get_CurrentVersion(uint32_t * currentVersion) noexcept override
    {
        try
        {
            *currentVersion = detach(this->shim().CurrentVersion());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DesiredVersion(uint32_t * desiredVersion) noexcept override
    {
        try
        {
            *desiredVersion = detach(this->shim().DesiredVersion());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Storage::ISetVersionDeferral> deferral) noexcept override
    {
        try
        {
            *deferral = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *deferral = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageFile> : produce_base<D, Windows::Storage::IStorageFile>
{
    HRESULT __stdcall get_FileType(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FileType());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ContentType(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ContentType());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_OpenAsync(Windows::Storage::FileAccessMode accessMode, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IRandomAccessStream>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().OpenAsync(accessMode));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_OpenTransactedWriteAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageStreamTransaction>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().OpenTransactedWriteAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CopyOverloadDefaultNameAndOptions(abi_arg_in<Windows::Storage::IStorageFolder> destinationFolder, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CopyAsync(*reinterpret_cast<const Windows::Storage::IStorageFolder *>(&destinationFolder)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CopyOverloadDefaultOptions(abi_arg_in<Windows::Storage::IStorageFolder> destinationFolder, abi_arg_in<hstring> desiredNewName, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CopyAsync(*reinterpret_cast<const Windows::Storage::IStorageFolder *>(&destinationFolder), *reinterpret_cast<const hstring *>(&desiredNewName)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CopyOverload(abi_arg_in<Windows::Storage::IStorageFolder> destinationFolder, abi_arg_in<hstring> desiredNewName, Windows::Storage::NameCollisionOption option, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CopyAsync(*reinterpret_cast<const Windows::Storage::IStorageFolder *>(&destinationFolder), *reinterpret_cast<const hstring *>(&desiredNewName), option));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CopyAndReplaceAsync(abi_arg_in<Windows::Storage::IStorageFile> fileToReplace, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CopyAndReplaceAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&fileToReplace)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MoveOverloadDefaultNameAndOptions(abi_arg_in<Windows::Storage::IStorageFolder> destinationFolder, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().MoveAsync(*reinterpret_cast<const Windows::Storage::IStorageFolder *>(&destinationFolder)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MoveOverloadDefaultOptions(abi_arg_in<Windows::Storage::IStorageFolder> destinationFolder, abi_arg_in<hstring> desiredNewName, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().MoveAsync(*reinterpret_cast<const Windows::Storage::IStorageFolder *>(&destinationFolder), *reinterpret_cast<const hstring *>(&desiredNewName)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MoveOverload(abi_arg_in<Windows::Storage::IStorageFolder> destinationFolder, abi_arg_in<hstring> desiredNewName, Windows::Storage::NameCollisionOption option, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().MoveAsync(*reinterpret_cast<const Windows::Storage::IStorageFolder *>(&destinationFolder), *reinterpret_cast<const hstring *>(&desiredNewName), option));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_MoveAndReplaceAsync(abi_arg_in<Windows::Storage::IStorageFile> fileToReplace, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().MoveAndReplaceAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&fileToReplace)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageFile2> : produce_base<D, Windows::Storage::IStorageFile2>
{
    HRESULT __stdcall abi_OpenWithOptionsAsync(Windows::Storage::FileAccessMode accessMode, Windows::Storage::StorageOpenOptions options, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IRandomAccessStream>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().OpenAsync(accessMode, options));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_OpenTransactedWriteWithOptionsAsync(Windows::Storage::StorageOpenOptions options, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageStreamTransaction>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().OpenTransactedWriteAsync(options));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageFilePropertiesWithAvailability> : produce_base<D, Windows::Storage::IStorageFilePropertiesWithAvailability>
{
    HRESULT __stdcall get_IsAvailable(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsAvailable());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageFileStatics> : produce_base<D, Windows::Storage::IStorageFileStatics>
{
    HRESULT __stdcall abi_GetFileFromPathAsync(abi_arg_in<hstring> path, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetFileFromPathAsync(*reinterpret_cast<const hstring *>(&path)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetFileFromApplicationUriAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetFileFromApplicationUriAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateStreamedFileAsync(abi_arg_in<hstring> displayNameWithExtension, abi_arg_in<Windows::Storage::StreamedFileDataRequestedHandler> dataRequested, abi_arg_in<Windows::Storage::Streams::IRandomAccessStreamReference> thumbnail, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateStreamedFileAsync(*reinterpret_cast<const hstring *>(&displayNameWithExtension), *reinterpret_cast<const Windows::Storage::StreamedFileDataRequestedHandler *>(&dataRequested), *reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStreamReference *>(&thumbnail)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReplaceWithStreamedFileAsync(abi_arg_in<Windows::Storage::IStorageFile> fileToReplace, abi_arg_in<Windows::Storage::StreamedFileDataRequestedHandler> dataRequested, abi_arg_in<Windows::Storage::Streams::IRandomAccessStreamReference> thumbnail, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ReplaceWithStreamedFileAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&fileToReplace), *reinterpret_cast<const Windows::Storage::StreamedFileDataRequestedHandler *>(&dataRequested), *reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStreamReference *>(&thumbnail)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateStreamedFileFromUriAsync(abi_arg_in<hstring> displayNameWithExtension, abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_in<Windows::Storage::Streams::IRandomAccessStreamReference> thumbnail, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateStreamedFileFromUriAsync(*reinterpret_cast<const hstring *>(&displayNameWithExtension), *reinterpret_cast<const Windows::Foundation::Uri *>(&uri), *reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStreamReference *>(&thumbnail)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReplaceWithStreamedFileFromUriAsync(abi_arg_in<Windows::Storage::IStorageFile> fileToReplace, abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_in<Windows::Storage::Streams::IRandomAccessStreamReference> thumbnail, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ReplaceWithStreamedFileFromUriAsync(*reinterpret_cast<const Windows::Storage::IStorageFile *>(&fileToReplace), *reinterpret_cast<const Windows::Foundation::Uri *>(&uri), *reinterpret_cast<const Windows::Storage::Streams::IRandomAccessStreamReference *>(&thumbnail)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageFolder> : produce_base<D, Windows::Storage::IStorageFolder>
{
    HRESULT __stdcall abi_CreateFileAsyncOverloadDefaultOptions(abi_arg_in<hstring> desiredName, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFileAsync(*reinterpret_cast<const hstring *>(&desiredName)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFileAsync(abi_arg_in<hstring> desiredName, Windows::Storage::CreationCollisionOption options, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFileAsync(*reinterpret_cast<const hstring *>(&desiredName), options));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFolderAsyncOverloadDefaultOptions(abi_arg_in<hstring> desiredName, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFolderAsync(*reinterpret_cast<const hstring *>(&desiredName)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CreateFolderAsync(abi_arg_in<hstring> desiredName, Windows::Storage::CreationCollisionOption options, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CreateFolderAsync(*reinterpret_cast<const hstring *>(&desiredName), options));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetFileAsync(abi_arg_in<hstring> name, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetFileAsync(*reinterpret_cast<const hstring *>(&name)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetFolderAsync(abi_arg_in<hstring> name, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetFolderAsync(*reinterpret_cast<const hstring *>(&name)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetItemAsync(abi_arg_in<hstring> name, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::IStorageItem>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetItemAsync(*reinterpret_cast<const hstring *>(&name)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetFilesAsyncOverloadDefaultOptionsStartAndCount(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::StorageFile>>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetFilesAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetFoldersAsyncOverloadDefaultOptionsStartAndCount(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::StorageFolder>>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetFoldersAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetItemsAsyncOverloadDefaultStartAndCount(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::IStorageItem>>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetItemsAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageFolder2> : produce_base<D, Windows::Storage::IStorageFolder2>
{
    HRESULT __stdcall abi_TryGetItemAsync(abi_arg_in<hstring> name, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::IStorageItem>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().TryGetItemAsync(*reinterpret_cast<const hstring *>(&name)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageFolderStatics> : produce_base<D, Windows::Storage::IStorageFolderStatics>
{
    HRESULT __stdcall abi_GetFolderFromPathAsync(abi_arg_in<hstring> path, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetFolderFromPathAsync(*reinterpret_cast<const hstring *>(&path)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageItem> : produce_base<D, Windows::Storage::IStorageItem>
{
    HRESULT __stdcall abi_RenameAsyncOverloadDefaultOptions(abi_arg_in<hstring> desiredName, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().RenameAsync(*reinterpret_cast<const hstring *>(&desiredName)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RenameAsync(abi_arg_in<hstring> desiredName, Windows::Storage::NameCollisionOption option, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().RenameAsync(*reinterpret_cast<const hstring *>(&desiredName), option));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_DeleteAsyncOverloadDefaultOptions(abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().DeleteAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_DeleteAsync(Windows::Storage::StorageDeleteOption option, abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().DeleteAsync(option));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetBasicPropertiesAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::BasicProperties>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetBasicPropertiesAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Path(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Path());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Attributes(Windows::Storage::FileAttributes * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Attributes());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DateCreated(abi_arg_out<Windows::Foundation::DateTime> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DateCreated());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_IsOfType(Windows::Storage::StorageItemTypes type, bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsOfType(type));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageItem2> : produce_base<D, Windows::Storage::IStorageItem2>
{
    HRESULT __stdcall abi_GetParentAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetParentAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_IsEqual(abi_arg_in<Windows::Storage::IStorageItem> item, bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsEqual(*reinterpret_cast<const Windows::Storage::IStorageItem *>(&item)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageItemProperties> : produce_base<D, Windows::Storage::IStorageItemProperties>
{
    HRESULT __stdcall abi_GetThumbnailAsyncOverloadDefaultSizeDefaultOptions(Windows::Storage::FileProperties::ThumbnailMode mode, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetThumbnailAsync(mode));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetThumbnailAsyncOverloadDefaultOptions(Windows::Storage::FileProperties::ThumbnailMode mode, uint32_t requestedSize, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetThumbnailAsync(mode, requestedSize));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetThumbnailAsync(Windows::Storage::FileProperties::ThumbnailMode mode, uint32_t requestedSize, Windows::Storage::FileProperties::ThumbnailOptions options, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetThumbnailAsync(mode, requestedSize, options));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DisplayName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DisplayName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DisplayType(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DisplayType());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FolderRelativeId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FolderRelativeId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Properties(abi_arg_out<Windows::Storage::FileProperties::IStorageItemContentProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Properties());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageItemProperties2> : produce_base<D, Windows::Storage::IStorageItemProperties2>
{
    HRESULT __stdcall abi_GetScaledImageAsThumbnailAsyncOverloadDefaultSizeDefaultOptions(Windows::Storage::FileProperties::ThumbnailMode mode, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetScaledImageAsThumbnailAsync(mode));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetScaledImageAsThumbnailAsyncOverloadDefaultOptions(Windows::Storage::FileProperties::ThumbnailMode mode, uint32_t requestedSize, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetScaledImageAsThumbnailAsync(mode, requestedSize));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetScaledImageAsThumbnailAsync(Windows::Storage::FileProperties::ThumbnailMode mode, uint32_t requestedSize, Windows::Storage::FileProperties::ThumbnailOptions options, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetScaledImageAsThumbnailAsync(mode, requestedSize, options));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageItemPropertiesWithProvider> : produce_base<D, Windows::Storage::IStorageItemPropertiesWithProvider>
{
    HRESULT __stdcall get_Provider(abi_arg_out<Windows::Storage::IStorageProvider> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Provider());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageLibrary> : produce_base<D, Windows::Storage::IStorageLibrary>
{
    HRESULT __stdcall abi_RequestAddFolderAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().RequestAddFolderAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RequestRemoveFolderAsync(abi_arg_in<Windows::Storage::IStorageFolder> folder, abi_arg_out<Windows::Foundation::IAsyncOperation<bool>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().RequestRemoveFolderAsync(*reinterpret_cast<const Windows::Storage::StorageFolder *>(&folder)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Folders(abi_arg_out<Windows::Foundation::Collections::IObservableVector<Windows::Storage::StorageFolder>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Folders());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SaveFolder(abi_arg_out<Windows::Storage::IStorageFolder> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SaveFolder());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_DefinitionChanged(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Storage::StorageLibrary, Windows::IInspectable>> handler, event_token * eventCookie) noexcept override
    {
        try
        {
            *eventCookie = detach(this->shim().DefinitionChanged(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Storage::StorageLibrary, Windows::IInspectable> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_DefinitionChanged(event_token eventCookie) noexcept override
    {
        try
        {
            this->shim().DefinitionChanged(eventCookie);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageLibrary2> : produce_base<D, Windows::Storage::IStorageLibrary2>
{
    HRESULT __stdcall get_ChangeTracker(abi_arg_out<Windows::Storage::IStorageLibraryChangeTracker> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ChangeTracker());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageLibraryChange> : produce_base<D, Windows::Storage::IStorageLibraryChange>
{
    HRESULT __stdcall get_ChangeType(Windows::Storage::StorageLibraryChangeType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ChangeType());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Path(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Path());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PreviousPath(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PreviousPath());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_IsOfType(Windows::Storage::StorageItemTypes type, bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().IsOfType(type));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetStorageItemAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::IStorageItem>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetStorageItemAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageLibraryChangeReader> : produce_base<D, Windows::Storage::IStorageLibraryChangeReader>
{
    HRESULT __stdcall abi_ReadBatchAsync(abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::StorageLibraryChange>>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ReadBatchAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_AcceptChangesAsync(abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().AcceptChangesAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageLibraryChangeTracker> : produce_base<D, Windows::Storage::IStorageLibraryChangeTracker>
{
    HRESULT __stdcall abi_GetChangeReader(abi_arg_out<Windows::Storage::IStorageLibraryChangeReader> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetChangeReader());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Enable() noexcept override
    {
        try
        {
            this->shim().Enable();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Reset() noexcept override
    {
        try
        {
            this->shim().Reset();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageLibraryStatics> : produce_base<D, Windows::Storage::IStorageLibraryStatics>
{
    HRESULT __stdcall abi_GetLibraryAsync(Windows::Storage::KnownLibraryId libraryId, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageLibrary>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetLibraryAsync(libraryId));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageLibraryStatics2> : produce_base<D, Windows::Storage::IStorageLibraryStatics2>
{
    HRESULT __stdcall abi_GetLibraryForUserAsync(abi_arg_in<Windows::System::IUser> user, Windows::Storage::KnownLibraryId libraryId, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::StorageLibrary>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().GetLibraryForUserAsync(*reinterpret_cast<const Windows::System::User *>(&user), libraryId));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageProvider> : produce_base<D, Windows::Storage::IStorageProvider>
{
    HRESULT __stdcall get_Id(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Id());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DisplayName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DisplayName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStorageStreamTransaction> : produce_base<D, Windows::Storage::IStorageStreamTransaction>
{
    HRESULT __stdcall get_Stream(abi_arg_out<Windows::Storage::Streams::IRandomAccessStream> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Stream());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CommitAsync(abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().CommitAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::IStreamedFileDataRequest> : produce_base<D, Windows::Storage::IStreamedFileDataRequest>
{
    HRESULT __stdcall abi_FailAndClose(Windows::Storage::StreamedFileFailureMode failureMode) noexcept override
    {
        try
        {
            this->shim().FailAndClose(failureMode);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::ISystemAudioProperties> : produce_base<D, Windows::Storage::ISystemAudioProperties>
{
    HRESULT __stdcall get_EncodingBitrate(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EncodingBitrate());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::ISystemGPSProperties> : produce_base<D, Windows::Storage::ISystemGPSProperties>
{
    HRESULT __stdcall get_LatitudeDecimal(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LatitudeDecimal());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_LongitudeDecimal(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().LongitudeDecimal());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::ISystemImageProperties> : produce_base<D, Windows::Storage::ISystemImageProperties>
{
    HRESULT __stdcall get_HorizontalSize(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().HorizontalSize());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_VerticalSize(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().VerticalSize());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::ISystemMediaProperties> : produce_base<D, Windows::Storage::ISystemMediaProperties>
{
    HRESULT __stdcall get_Duration(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Duration());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Producer(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Producer());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Publisher(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Publisher());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SubTitle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SubTitle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Writer(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Writer());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Year(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Year());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::ISystemMusicProperties> : produce_base<D, Windows::Storage::ISystemMusicProperties>
{
    HRESULT __stdcall get_AlbumArtist(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AlbumArtist());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AlbumTitle(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AlbumTitle());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Artist(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Artist());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Composer(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Composer());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Conductor(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Conductor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DisplayArtist(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DisplayArtist());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Genre(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Genre());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TrackNumber(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TrackNumber());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::ISystemPhotoProperties> : produce_base<D, Windows::Storage::ISystemPhotoProperties>
{
    HRESULT __stdcall get_CameraManufacturer(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CameraManufacturer());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_CameraModel(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CameraModel());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DateTaken(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DateTaken());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Orientation(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Orientation());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PeopleNames(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PeopleNames());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::ISystemProperties> : produce_base<D, Windows::Storage::ISystemProperties>
{
    HRESULT __stdcall get_Author(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Author());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Comment(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Comment());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ItemNameDisplay(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ItemNameDisplay());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Keywords(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Keywords());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Rating(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Rating());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Title(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Title());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Audio(abi_arg_out<Windows::Storage::ISystemAudioProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Audio());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_GPS(abi_arg_out<Windows::Storage::ISystemGPSProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GPS());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Media(abi_arg_out<Windows::Storage::ISystemMediaProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Media());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Music(abi_arg_out<Windows::Storage::ISystemMusicProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Music());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Photo(abi_arg_out<Windows::Storage::ISystemPhotoProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Photo());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Video(abi_arg_out<Windows::Storage::ISystemVideoProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Video());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Image(abi_arg_out<Windows::Storage::ISystemImageProperties> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Image());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Storage::ISystemVideoProperties> : produce_base<D, Windows::Storage::ISystemVideoProperties>
{
    HRESULT __stdcall get_Director(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Director());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FrameHeight(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FrameHeight());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FrameWidth(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FrameWidth());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Orientation(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Orientation());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_TotalBitrate(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TotalBitrate());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Storage {

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageLibrary> impl_IStorageLibraryStatics<D>::GetLibraryAsync(Windows::Storage::KnownLibraryId libraryId) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageLibrary> operation;
    check_hresult(static_cast<const IStorageLibraryStatics &>(static_cast<const D &>(*this))->abi_GetLibraryAsync(libraryId, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageLibrary> impl_IStorageLibraryStatics2<D>::GetLibraryForUserAsync(const Windows::System::User & user, Windows::Storage::KnownLibraryId libraryId) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageLibrary> operation;
    check_hresult(static_cast<const IStorageLibraryStatics2 &>(static_cast<const D &>(*this))->abi_GetLibraryForUserAsync(get(user), libraryId, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> impl_IStorageLibrary<D>::RequestAddFolderAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> operation;
    check_hresult(static_cast<const IStorageLibrary &>(static_cast<const D &>(*this))->abi_RequestAddFolderAsync(put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<bool> impl_IStorageLibrary<D>::RequestRemoveFolderAsync(const Windows::Storage::StorageFolder & folder) const
{
    Windows::Foundation::IAsyncOperation<bool> operation;
    check_hresult(static_cast<const IStorageLibrary &>(static_cast<const D &>(*this))->abi_RequestRemoveFolderAsync(get(folder), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::Collections::IObservableVector<Windows::Storage::StorageFolder> impl_IStorageLibrary<D>::Folders() const
{
    Windows::Foundation::Collections::IObservableVector<Windows::Storage::StorageFolder> value;
    check_hresult(static_cast<const IStorageLibrary &>(static_cast<const D &>(*this))->get_Folders(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IStorageLibrary<D>::SaveFolder() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IStorageLibrary &>(static_cast<const D &>(*this))->get_SaveFolder(put(value)));
    return value;
}

template <typename D> event_token impl_IStorageLibrary<D>::DefinitionChanged(const Windows::Foundation::TypedEventHandler<Windows::Storage::StorageLibrary, Windows::IInspectable> & handler) const
{
    event_token eventCookie {};
    check_hresult(static_cast<const IStorageLibrary &>(static_cast<const D &>(*this))->add_DefinitionChanged(get(handler), &eventCookie));
    return eventCookie;
}

template <typename D> event_revoker<IStorageLibrary> impl_IStorageLibrary<D>::DefinitionChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Storage::StorageLibrary, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IStorageLibrary>(this, &ABI::Windows::Storage::IStorageLibrary::remove_DefinitionChanged, DefinitionChanged(handler));
}

template <typename D> void impl_IStorageLibrary<D>::DefinitionChanged(event_token eventCookie) const
{
    check_hresult(static_cast<const IStorageLibrary &>(static_cast<const D &>(*this))->remove_DefinitionChanged(eventCookie));
}

template <typename D> Windows::Storage::StorageLibraryChangeTracker impl_IStorageLibrary2<D>::ChangeTracker() const
{
    Windows::Storage::StorageLibraryChangeTracker value { nullptr };
    check_hresult(static_cast<const IStorageLibrary2 &>(static_cast<const D &>(*this))->get_ChangeTracker(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersStatics<D>::MusicLibrary() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersStatics &>(static_cast<const D &>(*this))->get_MusicLibrary(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersStatics<D>::PicturesLibrary() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersStatics &>(static_cast<const D &>(*this))->get_PicturesLibrary(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersStatics<D>::VideosLibrary() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersStatics &>(static_cast<const D &>(*this))->get_VideosLibrary(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersStatics<D>::DocumentsLibrary() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersStatics &>(static_cast<const D &>(*this))->get_DocumentsLibrary(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersStatics<D>::HomeGroup() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersStatics &>(static_cast<const D &>(*this))->get_HomeGroup(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersStatics<D>::RemovableDevices() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersStatics &>(static_cast<const D &>(*this))->get_RemovableDevices(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersStatics<D>::MediaServerDevices() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersStatics &>(static_cast<const D &>(*this))->get_MediaServerDevices(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersStatics2<D>::Objects3D() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersStatics2 &>(static_cast<const D &>(*this))->get_Objects3D(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersStatics2<D>::AppCaptures() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersStatics2 &>(static_cast<const D &>(*this))->get_AppCaptures(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersStatics2<D>::RecordedCalls() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersStatics2 &>(static_cast<const D &>(*this))->get_RecordedCalls(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> impl_IKnownFoldersStatics3<D>::GetFolderForUserAsync(const Windows::System::User & user, Windows::Storage::KnownFolderId folderId) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> operation;
    check_hresult(static_cast<const IKnownFoldersStatics3 &>(static_cast<const D &>(*this))->abi_GetFolderForUserAsync(get(user), folderId, put(operation)));
    return operation;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersPlaylistsStatics<D>::Playlists() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersPlaylistsStatics &>(static_cast<const D &>(*this))->get_Playlists(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersCameraRollStatics<D>::CameraRoll() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersCameraRollStatics &>(static_cast<const D &>(*this))->get_CameraRoll(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IKnownFoldersSavedPicturesStatics<D>::SavedPictures() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IKnownFoldersSavedPicturesStatics &>(static_cast<const D &>(*this))->get_SavedPictures(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IDownloadsFolderStatics<D>::CreateFileAsync(hstring_ref desiredName) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IDownloadsFolderStatics &>(static_cast<const D &>(*this))->abi_CreateFileAsync(get(desiredName), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> impl_IDownloadsFolderStatics<D>::CreateFolderAsync(hstring_ref desiredName) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> operation;
    check_hresult(static_cast<const IDownloadsFolderStatics &>(static_cast<const D &>(*this))->abi_CreateFolderAsync(get(desiredName), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IDownloadsFolderStatics<D>::CreateFileAsync(hstring_ref desiredName, Windows::Storage::CreationCollisionOption option) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IDownloadsFolderStatics &>(static_cast<const D &>(*this))->abi_CreateFileWithCollisionOptionAsync(get(desiredName), option, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> impl_IDownloadsFolderStatics<D>::CreateFolderAsync(hstring_ref desiredName, Windows::Storage::CreationCollisionOption option) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> operation;
    check_hresult(static_cast<const IDownloadsFolderStatics &>(static_cast<const D &>(*this))->abi_CreateFolderWithCollisionOptionAsync(get(desiredName), option, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IDownloadsFolderStatics2<D>::CreateFileForUserAsync(const Windows::System::User & user, hstring_ref desiredName) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IDownloadsFolderStatics2 &>(static_cast<const D &>(*this))->abi_CreateFileForUserAsync(get(user), get(desiredName), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> impl_IDownloadsFolderStatics2<D>::CreateFolderForUserAsync(const Windows::System::User & user, hstring_ref desiredName) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> operation;
    check_hresult(static_cast<const IDownloadsFolderStatics2 &>(static_cast<const D &>(*this))->abi_CreateFolderForUserAsync(get(user), get(desiredName), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IDownloadsFolderStatics2<D>::CreateFileForUserAsync(const Windows::System::User & user, hstring_ref desiredName, Windows::Storage::CreationCollisionOption option) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IDownloadsFolderStatics2 &>(static_cast<const D &>(*this))->abi_CreateFileForUserWithCollisionOptionAsync(get(user), get(desiredName), option, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> impl_IDownloadsFolderStatics2<D>::CreateFolderForUserAsync(const Windows::System::User & user, hstring_ref desiredName, Windows::Storage::CreationCollisionOption option) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> operation;
    check_hresult(static_cast<const IDownloadsFolderStatics2 &>(static_cast<const D &>(*this))->abi_CreateFolderForUserWithCollisionOptionAsync(get(user), get(desiredName), option, put(operation)));
    return operation;
}

template <typename D> Windows::Storage::StorageLibraryChangeType impl_IStorageLibraryChange<D>::ChangeType() const
{
    Windows::Storage::StorageLibraryChangeType value {};
    check_hresult(static_cast<const IStorageLibraryChange &>(static_cast<const D &>(*this))->get_ChangeType(&value));
    return value;
}

template <typename D> hstring impl_IStorageLibraryChange<D>::Path() const
{
    hstring value;
    check_hresult(static_cast<const IStorageLibraryChange &>(static_cast<const D &>(*this))->get_Path(put(value)));
    return value;
}

template <typename D> hstring impl_IStorageLibraryChange<D>::PreviousPath() const
{
    hstring value;
    check_hresult(static_cast<const IStorageLibraryChange &>(static_cast<const D &>(*this))->get_PreviousPath(put(value)));
    return value;
}

template <typename D> bool impl_IStorageLibraryChange<D>::IsOfType(Windows::Storage::StorageItemTypes type) const
{
    bool value {};
    check_hresult(static_cast<const IStorageLibraryChange &>(static_cast<const D &>(*this))->abi_IsOfType(type, &value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::IStorageItem> impl_IStorageLibraryChange<D>::GetStorageItemAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::IStorageItem> operation;
    check_hresult(static_cast<const IStorageLibraryChange &>(static_cast<const D &>(*this))->abi_GetStorageItemAsync(put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IStorageItem<D>::RenameAsync(hstring_ref desiredName) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IStorageItem &>(static_cast<const D &>(*this))->abi_RenameAsyncOverloadDefaultOptions(get(desiredName), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IStorageItem<D>::RenameAsync(hstring_ref desiredName, Windows::Storage::NameCollisionOption option) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IStorageItem &>(static_cast<const D &>(*this))->abi_RenameAsync(get(desiredName), option, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IStorageItem<D>::DeleteAsync() const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IStorageItem &>(static_cast<const D &>(*this))->abi_DeleteAsyncOverloadDefaultOptions(put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IStorageItem<D>::DeleteAsync(Windows::Storage::StorageDeleteOption option) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IStorageItem &>(static_cast<const D &>(*this))->abi_DeleteAsync(option, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::BasicProperties> impl_IStorageItem<D>::GetBasicPropertiesAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::BasicProperties> operation;
    check_hresult(static_cast<const IStorageItem &>(static_cast<const D &>(*this))->abi_GetBasicPropertiesAsync(put(operation)));
    return operation;
}

template <typename D> hstring impl_IStorageItem<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const IStorageItem &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> hstring impl_IStorageItem<D>::Path() const
{
    hstring value;
    check_hresult(static_cast<const IStorageItem &>(static_cast<const D &>(*this))->get_Path(put(value)));
    return value;
}

template <typename D> Windows::Storage::FileAttributes impl_IStorageItem<D>::Attributes() const
{
    Windows::Storage::FileAttributes value {};
    check_hresult(static_cast<const IStorageItem &>(static_cast<const D &>(*this))->get_Attributes(&value));
    return value;
}

template <typename D> Windows::Foundation::DateTime impl_IStorageItem<D>::DateCreated() const
{
    Windows::Foundation::DateTime value {};
    check_hresult(static_cast<const IStorageItem &>(static_cast<const D &>(*this))->get_DateCreated(put(value)));
    return value;
}

template <typename D> bool impl_IStorageItem<D>::IsOfType(Windows::Storage::StorageItemTypes type) const
{
    bool value {};
    check_hresult(static_cast<const IStorageItem &>(static_cast<const D &>(*this))->abi_IsOfType(type, &value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::StorageLibraryChange>> impl_IStorageLibraryChangeReader<D>::ReadBatchAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::StorageLibraryChange>> operation;
    check_hresult(static_cast<const IStorageLibraryChangeReader &>(static_cast<const D &>(*this))->abi_ReadBatchAsync(put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IStorageLibraryChangeReader<D>::AcceptChangesAsync() const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IStorageLibraryChangeReader &>(static_cast<const D &>(*this))->abi_AcceptChangesAsync(put(operation)));
    return operation;
}

template <typename D> Windows::Storage::StorageLibraryChangeReader impl_IStorageLibraryChangeTracker<D>::GetChangeReader() const
{
    Windows::Storage::StorageLibraryChangeReader value { nullptr };
    check_hresult(static_cast<const IStorageLibraryChangeTracker &>(static_cast<const D &>(*this))->abi_GetChangeReader(put(value)));
    return value;
}

template <typename D> void impl_IStorageLibraryChangeTracker<D>::Enable() const
{
    check_hresult(static_cast<const IStorageLibraryChangeTracker &>(static_cast<const D &>(*this))->abi_Enable());
}

template <typename D> void impl_IStorageLibraryChangeTracker<D>::Reset() const
{
    check_hresult(static_cast<const IStorageLibraryChangeTracker &>(static_cast<const D &>(*this))->abi_Reset());
}

template <typename D> void impl_IStreamedFileDataRequest<D>::FailAndClose(Windows::Storage::StreamedFileFailureMode failureMode) const
{
    check_hresult(static_cast<const IStreamedFileDataRequest &>(static_cast<const D &>(*this))->abi_FailAndClose(failureMode));
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFileStatics<D>::GetFileFromPathAsync(hstring_ref path) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFileStatics &>(static_cast<const D &>(*this))->abi_GetFileFromPathAsync(get(path), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFileStatics<D>::GetFileFromApplicationUriAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFileStatics &>(static_cast<const D &>(*this))->abi_GetFileFromApplicationUriAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFileStatics<D>::CreateStreamedFileAsync(hstring_ref displayNameWithExtension, const Windows::Storage::StreamedFileDataRequestedHandler & dataRequested, const Windows::Storage::Streams::IRandomAccessStreamReference & thumbnail) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFileStatics &>(static_cast<const D &>(*this))->abi_CreateStreamedFileAsync(get(displayNameWithExtension), get(dataRequested), get(thumbnail), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFileStatics<D>::ReplaceWithStreamedFileAsync(const Windows::Storage::IStorageFile & fileToReplace, const Windows::Storage::StreamedFileDataRequestedHandler & dataRequested, const Windows::Storage::Streams::IRandomAccessStreamReference & thumbnail) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFileStatics &>(static_cast<const D &>(*this))->abi_ReplaceWithStreamedFileAsync(get(fileToReplace), get(dataRequested), get(thumbnail), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFileStatics<D>::CreateStreamedFileFromUriAsync(hstring_ref displayNameWithExtension, const Windows::Foundation::Uri & uri, const Windows::Storage::Streams::IRandomAccessStreamReference & thumbnail) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFileStatics &>(static_cast<const D &>(*this))->abi_CreateStreamedFileFromUriAsync(get(displayNameWithExtension), get(uri), get(thumbnail), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFileStatics<D>::ReplaceWithStreamedFileFromUriAsync(const Windows::Storage::IStorageFile & fileToReplace, const Windows::Foundation::Uri & uri, const Windows::Storage::Streams::IRandomAccessStreamReference & thumbnail) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFileStatics &>(static_cast<const D &>(*this))->abi_ReplaceWithStreamedFileFromUriAsync(get(fileToReplace), get(uri), get(thumbnail), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFolder<D>::CreateFileAsync(hstring_ref desiredName) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFolder &>(static_cast<const D &>(*this))->abi_CreateFileAsyncOverloadDefaultOptions(get(desiredName), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFolder<D>::CreateFileAsync(hstring_ref desiredName, Windows::Storage::CreationCollisionOption options) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFolder &>(static_cast<const D &>(*this))->abi_CreateFileAsync(get(desiredName), options, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> impl_IStorageFolder<D>::CreateFolderAsync(hstring_ref desiredName) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> operation;
    check_hresult(static_cast<const IStorageFolder &>(static_cast<const D &>(*this))->abi_CreateFolderAsyncOverloadDefaultOptions(get(desiredName), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> impl_IStorageFolder<D>::CreateFolderAsync(hstring_ref desiredName, Windows::Storage::CreationCollisionOption options) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> operation;
    check_hresult(static_cast<const IStorageFolder &>(static_cast<const D &>(*this))->abi_CreateFolderAsync(get(desiredName), options, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFolder<D>::GetFileAsync(hstring_ref name) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFolder &>(static_cast<const D &>(*this))->abi_GetFileAsync(get(name), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> impl_IStorageFolder<D>::GetFolderAsync(hstring_ref name) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> operation;
    check_hresult(static_cast<const IStorageFolder &>(static_cast<const D &>(*this))->abi_GetFolderAsync(get(name), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::IStorageItem> impl_IStorageFolder<D>::GetItemAsync(hstring_ref name) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::IStorageItem> operation;
    check_hresult(static_cast<const IStorageFolder &>(static_cast<const D &>(*this))->abi_GetItemAsync(get(name), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::StorageFile>> impl_IStorageFolder<D>::GetFilesAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::StorageFile>> operation;
    check_hresult(static_cast<const IStorageFolder &>(static_cast<const D &>(*this))->abi_GetFilesAsyncOverloadDefaultOptionsStartAndCount(put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::StorageFolder>> impl_IStorageFolder<D>::GetFoldersAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::StorageFolder>> operation;
    check_hresult(static_cast<const IStorageFolder &>(static_cast<const D &>(*this))->abi_GetFoldersAsyncOverloadDefaultOptionsStartAndCount(put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::IStorageItem>> impl_IStorageFolder<D>::GetItemsAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Storage::IStorageItem>> operation;
    check_hresult(static_cast<const IStorageFolder &>(static_cast<const D &>(*this))->abi_GetItemsAsyncOverloadDefaultStartAndCount(put(operation)));
    return operation;
}

template <typename D> hstring impl_IStorageFile<D>::FileType() const
{
    hstring value;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->get_FileType(put(value)));
    return value;
}

template <typename D> hstring impl_IStorageFile<D>::ContentType() const
{
    hstring value;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->get_ContentType(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IRandomAccessStream> impl_IStorageFile<D>::OpenAsync(Windows::Storage::FileAccessMode accessMode) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IRandomAccessStream> operation;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->abi_OpenAsync(accessMode, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageStreamTransaction> impl_IStorageFile<D>::OpenTransactedWriteAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageStreamTransaction> operation;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->abi_OpenTransactedWriteAsync(put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFile<D>::CopyAsync(const Windows::Storage::IStorageFolder & destinationFolder) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->abi_CopyOverloadDefaultNameAndOptions(get(destinationFolder), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFile<D>::CopyAsync(const Windows::Storage::IStorageFolder & destinationFolder, hstring_ref desiredNewName) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->abi_CopyOverloadDefaultOptions(get(destinationFolder), get(desiredNewName), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> impl_IStorageFile<D>::CopyAsync(const Windows::Storage::IStorageFolder & destinationFolder, hstring_ref desiredNewName, Windows::Storage::NameCollisionOption option) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> operation;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->abi_CopyOverload(get(destinationFolder), get(desiredNewName), option, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IStorageFile<D>::CopyAndReplaceAsync(const Windows::Storage::IStorageFile & fileToReplace) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->abi_CopyAndReplaceAsync(get(fileToReplace), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IStorageFile<D>::MoveAsync(const Windows::Storage::IStorageFolder & destinationFolder) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->abi_MoveOverloadDefaultNameAndOptions(get(destinationFolder), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IStorageFile<D>::MoveAsync(const Windows::Storage::IStorageFolder & destinationFolder, hstring_ref desiredNewName) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->abi_MoveOverloadDefaultOptions(get(destinationFolder), get(desiredNewName), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IStorageFile<D>::MoveAsync(const Windows::Storage::IStorageFolder & destinationFolder, hstring_ref desiredNewName, Windows::Storage::NameCollisionOption option) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->abi_MoveOverload(get(destinationFolder), get(desiredNewName), option, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IStorageFile<D>::MoveAndReplaceAsync(const Windows::Storage::IStorageFile & fileToReplace) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IStorageFile &>(static_cast<const D &>(*this))->abi_MoveAndReplaceAsync(get(fileToReplace), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> impl_IStorageFolderStatics<D>::GetFolderFromPathAsync(hstring_ref path) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> operation;
    check_hresult(static_cast<const IStorageFolderStatics &>(static_cast<const D &>(*this))->abi_GetFolderFromPathAsync(get(path), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> impl_IStorageItem2<D>::GetParentAsync() const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> operation;
    check_hresult(static_cast<const IStorageItem2 &>(static_cast<const D &>(*this))->abi_GetParentAsync(put(operation)));
    return operation;
}

template <typename D> bool impl_IStorageItem2<D>::IsEqual(const Windows::Storage::IStorageItem & item) const
{
    bool value {};
    check_hresult(static_cast<const IStorageItem2 &>(static_cast<const D &>(*this))->abi_IsEqual(get(item), &value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> impl_IStorageItemProperties<D>::GetThumbnailAsync(Windows::Storage::FileProperties::ThumbnailMode mode) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> operation;
    check_hresult(static_cast<const IStorageItemProperties &>(static_cast<const D &>(*this))->abi_GetThumbnailAsyncOverloadDefaultSizeDefaultOptions(mode, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> impl_IStorageItemProperties<D>::GetThumbnailAsync(Windows::Storage::FileProperties::ThumbnailMode mode, uint32_t requestedSize) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> operation;
    check_hresult(static_cast<const IStorageItemProperties &>(static_cast<const D &>(*this))->abi_GetThumbnailAsyncOverloadDefaultOptions(mode, requestedSize, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> impl_IStorageItemProperties<D>::GetThumbnailAsync(Windows::Storage::FileProperties::ThumbnailMode mode, uint32_t requestedSize, Windows::Storage::FileProperties::ThumbnailOptions options) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> operation;
    check_hresult(static_cast<const IStorageItemProperties &>(static_cast<const D &>(*this))->abi_GetThumbnailAsync(mode, requestedSize, options, put(operation)));
    return operation;
}

template <typename D> hstring impl_IStorageItemProperties<D>::DisplayName() const
{
    hstring value;
    check_hresult(static_cast<const IStorageItemProperties &>(static_cast<const D &>(*this))->get_DisplayName(put(value)));
    return value;
}

template <typename D> hstring impl_IStorageItemProperties<D>::DisplayType() const
{
    hstring value;
    check_hresult(static_cast<const IStorageItemProperties &>(static_cast<const D &>(*this))->get_DisplayType(put(value)));
    return value;
}

template <typename D> hstring impl_IStorageItemProperties<D>::FolderRelativeId() const
{
    hstring value;
    check_hresult(static_cast<const IStorageItemProperties &>(static_cast<const D &>(*this))->get_FolderRelativeId(put(value)));
    return value;
}

template <typename D> Windows::Storage::FileProperties::StorageItemContentProperties impl_IStorageItemProperties<D>::Properties() const
{
    Windows::Storage::FileProperties::StorageItemContentProperties value { nullptr };
    check_hresult(static_cast<const IStorageItemProperties &>(static_cast<const D &>(*this))->get_Properties(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> impl_IStorageItemProperties2<D>::GetScaledImageAsThumbnailAsync(Windows::Storage::FileProperties::ThumbnailMode mode) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> operation;
    check_hresult(static_cast<const IStorageItemProperties2 &>(static_cast<const D &>(*this))->abi_GetScaledImageAsThumbnailAsyncOverloadDefaultSizeDefaultOptions(mode, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> impl_IStorageItemProperties2<D>::GetScaledImageAsThumbnailAsync(Windows::Storage::FileProperties::ThumbnailMode mode, uint32_t requestedSize) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> operation;
    check_hresult(static_cast<const IStorageItemProperties2 &>(static_cast<const D &>(*this))->abi_GetScaledImageAsThumbnailAsyncOverloadDefaultOptions(mode, requestedSize, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> impl_IStorageItemProperties2<D>::GetScaledImageAsThumbnailAsync(Windows::Storage::FileProperties::ThumbnailMode mode, uint32_t requestedSize, Windows::Storage::FileProperties::ThumbnailOptions options) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::FileProperties::StorageItemThumbnail> operation;
    check_hresult(static_cast<const IStorageItemProperties2 &>(static_cast<const D &>(*this))->abi_GetScaledImageAsThumbnailAsync(mode, requestedSize, options, put(operation)));
    return operation;
}

template <typename D> Windows::Storage::StorageProvider impl_IStorageItemPropertiesWithProvider<D>::Provider() const
{
    Windows::Storage::StorageProvider value { nullptr };
    check_hresult(static_cast<const IStorageItemPropertiesWithProvider &>(static_cast<const D &>(*this))->get_Provider(put(value)));
    return value;
}

template <typename D> bool impl_IStorageFilePropertiesWithAvailability<D>::IsAvailable() const
{
    bool value {};
    check_hresult(static_cast<const IStorageFilePropertiesWithAvailability &>(static_cast<const D &>(*this))->get_IsAvailable(&value));
    return value;
}

template <typename D> hstring impl_IStorageProvider<D>::Id() const
{
    hstring value;
    check_hresult(static_cast<const IStorageProvider &>(static_cast<const D &>(*this))->get_Id(put(value)));
    return value;
}

template <typename D> hstring impl_IStorageProvider<D>::DisplayName() const
{
    hstring value;
    check_hresult(static_cast<const IStorageProvider &>(static_cast<const D &>(*this))->get_DisplayName(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::IStorageItem> impl_IStorageFolder2<D>::TryGetItemAsync(hstring_ref name) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::IStorageItem> operation;
    check_hresult(static_cast<const IStorageFolder2 &>(static_cast<const D &>(*this))->abi_TryGetItemAsync(get(name), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IRandomAccessStream> impl_IStorageFile2<D>::OpenAsync(Windows::Storage::FileAccessMode accessMode, Windows::Storage::StorageOpenOptions options) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IRandomAccessStream> operation;
    check_hresult(static_cast<const IStorageFile2 &>(static_cast<const D &>(*this))->abi_OpenWithOptionsAsync(accessMode, options, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::StorageStreamTransaction> impl_IStorageFile2<D>::OpenTransactedWriteAsync(Windows::Storage::StorageOpenOptions options) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::StorageStreamTransaction> operation;
    check_hresult(static_cast<const IStorageFile2 &>(static_cast<const D &>(*this))->abi_OpenTransactedWriteWithOptionsAsync(options, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<hstring> impl_IFileIOStatics<D>::ReadTextAsync(const Windows::Storage::IStorageFile & file) const
{
    Windows::Foundation::IAsyncOperation<hstring> textOperation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_ReadTextAsync(get(file), put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncOperation<hstring> impl_IFileIOStatics<D>::ReadTextAsync(const Windows::Storage::IStorageFile & file, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncOperation<hstring> textOperation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_ReadTextWithEncodingAsync(get(file), encoding, put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFileIOStatics<D>::WriteTextAsync(const Windows::Storage::IStorageFile & file, hstring_ref contents) const
{
    Windows::Foundation::IAsyncAction textOperation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_WriteTextAsync(get(file), get(contents), put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFileIOStatics<D>::WriteTextAsync(const Windows::Storage::IStorageFile & file, hstring_ref contents, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncAction textOperation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_WriteTextWithEncodingAsync(get(file), get(contents), encoding, put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFileIOStatics<D>::AppendTextAsync(const Windows::Storage::IStorageFile & file, hstring_ref contents) const
{
    Windows::Foundation::IAsyncAction textOperation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_AppendTextAsync(get(file), get(contents), put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFileIOStatics<D>::AppendTextAsync(const Windows::Storage::IStorageFile & file, hstring_ref contents, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncAction textOperation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_AppendTextWithEncodingAsync(get(file), get(contents), encoding, put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> impl_IFileIOStatics<D>::ReadLinesAsync(const Windows::Storage::IStorageFile & file) const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> linesOperation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_ReadLinesAsync(get(file), put(linesOperation)));
    return linesOperation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> impl_IFileIOStatics<D>::ReadLinesAsync(const Windows::Storage::IStorageFile & file, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> linesOperation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_ReadLinesWithEncodingAsync(get(file), encoding, put(linesOperation)));
    return linesOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFileIOStatics<D>::WriteLinesAsync(const Windows::Storage::IStorageFile & file, const Windows::Foundation::Collections::IIterable<hstring> & lines) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_WriteLinesAsync(get(file), get(lines), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFileIOStatics<D>::WriteLinesAsync(const Windows::Storage::IStorageFile & file, const Windows::Foundation::Collections::IIterable<hstring> & lines, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_WriteLinesWithEncodingAsync(get(file), get(lines), encoding, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFileIOStatics<D>::AppendLinesAsync(const Windows::Storage::IStorageFile & file, const Windows::Foundation::Collections::IIterable<hstring> & lines) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_AppendLinesAsync(get(file), get(lines), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFileIOStatics<D>::AppendLinesAsync(const Windows::Storage::IStorageFile & file, const Windows::Foundation::Collections::IIterable<hstring> & lines, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_AppendLinesWithEncodingAsync(get(file), get(lines), encoding, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> impl_IFileIOStatics<D>::ReadBufferAsync(const Windows::Storage::IStorageFile & file) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> operation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_ReadBufferAsync(get(file), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFileIOStatics<D>::WriteBufferAsync(const Windows::Storage::IStorageFile & file, const Windows::Storage::Streams::IBuffer & buffer) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_WriteBufferAsync(get(file), get(buffer), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IFileIOStatics<D>::WriteBytesAsync(const Windows::Storage::IStorageFile & file, array_ref<const uint8_t> buffer) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IFileIOStatics &>(static_cast<const D &>(*this))->abi_WriteBytesAsync(get(file), buffer.size(), get(buffer), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<hstring> impl_IPathIOStatics<D>::ReadTextAsync(hstring_ref absolutePath) const
{
    Windows::Foundation::IAsyncOperation<hstring> textOperation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_ReadTextAsync(get(absolutePath), put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncOperation<hstring> impl_IPathIOStatics<D>::ReadTextAsync(hstring_ref absolutePath, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncOperation<hstring> textOperation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_ReadTextWithEncodingAsync(get(absolutePath), encoding, put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IPathIOStatics<D>::WriteTextAsync(hstring_ref absolutePath, hstring_ref contents) const
{
    Windows::Foundation::IAsyncAction textOperation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_WriteTextAsync(get(absolutePath), get(contents), put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IPathIOStatics<D>::WriteTextAsync(hstring_ref absolutePath, hstring_ref contents, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncAction textOperation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_WriteTextWithEncodingAsync(get(absolutePath), get(contents), encoding, put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IPathIOStatics<D>::AppendTextAsync(hstring_ref absolutePath, hstring_ref contents) const
{
    Windows::Foundation::IAsyncAction textOperation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_AppendTextAsync(get(absolutePath), get(contents), put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IPathIOStatics<D>::AppendTextAsync(hstring_ref absolutePath, hstring_ref contents, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncAction textOperation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_AppendTextWithEncodingAsync(get(absolutePath), get(contents), encoding, put(textOperation)));
    return textOperation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> impl_IPathIOStatics<D>::ReadLinesAsync(hstring_ref absolutePath) const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> linesOperation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_ReadLinesAsync(get(absolutePath), put(linesOperation)));
    return linesOperation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> impl_IPathIOStatics<D>::ReadLinesAsync(hstring_ref absolutePath, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> linesOperation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_ReadLinesWithEncodingAsync(get(absolutePath), encoding, put(linesOperation)));
    return linesOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IPathIOStatics<D>::WriteLinesAsync(hstring_ref absolutePath, const Windows::Foundation::Collections::IIterable<hstring> & lines) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_WriteLinesAsync(get(absolutePath), get(lines), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IPathIOStatics<D>::WriteLinesAsync(hstring_ref absolutePath, const Windows::Foundation::Collections::IIterable<hstring> & lines, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_WriteLinesWithEncodingAsync(get(absolutePath), get(lines), encoding, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IPathIOStatics<D>::AppendLinesAsync(hstring_ref absolutePath, const Windows::Foundation::Collections::IIterable<hstring> & lines) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_AppendLinesAsync(get(absolutePath), get(lines), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IPathIOStatics<D>::AppendLinesAsync(hstring_ref absolutePath, const Windows::Foundation::Collections::IIterable<hstring> & lines, Windows::Storage::Streams::UnicodeEncoding encoding) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_AppendLinesWithEncodingAsync(get(absolutePath), get(lines), encoding, put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> impl_IPathIOStatics<D>::ReadBufferAsync(hstring_ref absolutePath) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> operation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_ReadBufferAsync(get(absolutePath), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IPathIOStatics<D>::WriteBufferAsync(hstring_ref absolutePath, const Windows::Storage::Streams::IBuffer & buffer) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_WriteBufferAsync(get(absolutePath), get(buffer), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IPathIOStatics<D>::WriteBytesAsync(hstring_ref absolutePath, array_ref<const uint8_t> buffer) const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IPathIOStatics &>(static_cast<const D &>(*this))->abi_WriteBytesAsync(get(absolutePath), buffer.size(), get(buffer), put(operation)));
    return operation;
}

template <typename D> void impl_ICachedFileManagerStatics<D>::DeferUpdates(const Windows::Storage::IStorageFile & file) const
{
    check_hresult(static_cast<const ICachedFileManagerStatics &>(static_cast<const D &>(*this))->abi_DeferUpdates(get(file)));
}

template <typename D> Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Provider::FileUpdateStatus> impl_ICachedFileManagerStatics<D>::CompleteUpdatesAsync(const Windows::Storage::IStorageFile & file) const
{
    Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Provider::FileUpdateStatus> operation;
    check_hresult(static_cast<const ICachedFileManagerStatics &>(static_cast<const D &>(*this))->abi_CompleteUpdatesAsync(get(file), put(operation)));
    return operation;
}

template <typename D> hstring impl_ISystemAudioProperties<D>::EncodingBitrate() const
{
    hstring value;
    check_hresult(static_cast<const ISystemAudioProperties &>(static_cast<const D &>(*this))->get_EncodingBitrate(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemGPSProperties<D>::LatitudeDecimal() const
{
    hstring value;
    check_hresult(static_cast<const ISystemGPSProperties &>(static_cast<const D &>(*this))->get_LatitudeDecimal(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemGPSProperties<D>::LongitudeDecimal() const
{
    hstring value;
    check_hresult(static_cast<const ISystemGPSProperties &>(static_cast<const D &>(*this))->get_LongitudeDecimal(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemImageProperties<D>::HorizontalSize() const
{
    hstring value;
    check_hresult(static_cast<const ISystemImageProperties &>(static_cast<const D &>(*this))->get_HorizontalSize(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemImageProperties<D>::VerticalSize() const
{
    hstring value;
    check_hresult(static_cast<const ISystemImageProperties &>(static_cast<const D &>(*this))->get_VerticalSize(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMediaProperties<D>::Duration() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMediaProperties &>(static_cast<const D &>(*this))->get_Duration(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMediaProperties<D>::Producer() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMediaProperties &>(static_cast<const D &>(*this))->get_Producer(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMediaProperties<D>::Publisher() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMediaProperties &>(static_cast<const D &>(*this))->get_Publisher(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMediaProperties<D>::SubTitle() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMediaProperties &>(static_cast<const D &>(*this))->get_SubTitle(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMediaProperties<D>::Writer() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMediaProperties &>(static_cast<const D &>(*this))->get_Writer(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMediaProperties<D>::Year() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMediaProperties &>(static_cast<const D &>(*this))->get_Year(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMusicProperties<D>::AlbumArtist() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMusicProperties &>(static_cast<const D &>(*this))->get_AlbumArtist(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMusicProperties<D>::AlbumTitle() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMusicProperties &>(static_cast<const D &>(*this))->get_AlbumTitle(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMusicProperties<D>::Artist() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMusicProperties &>(static_cast<const D &>(*this))->get_Artist(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMusicProperties<D>::Composer() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMusicProperties &>(static_cast<const D &>(*this))->get_Composer(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMusicProperties<D>::Conductor() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMusicProperties &>(static_cast<const D &>(*this))->get_Conductor(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMusicProperties<D>::DisplayArtist() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMusicProperties &>(static_cast<const D &>(*this))->get_DisplayArtist(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMusicProperties<D>::Genre() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMusicProperties &>(static_cast<const D &>(*this))->get_Genre(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemMusicProperties<D>::TrackNumber() const
{
    hstring value;
    check_hresult(static_cast<const ISystemMusicProperties &>(static_cast<const D &>(*this))->get_TrackNumber(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemPhotoProperties<D>::CameraManufacturer() const
{
    hstring value;
    check_hresult(static_cast<const ISystemPhotoProperties &>(static_cast<const D &>(*this))->get_CameraManufacturer(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemPhotoProperties<D>::CameraModel() const
{
    hstring value;
    check_hresult(static_cast<const ISystemPhotoProperties &>(static_cast<const D &>(*this))->get_CameraModel(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemPhotoProperties<D>::DateTaken() const
{
    hstring value;
    check_hresult(static_cast<const ISystemPhotoProperties &>(static_cast<const D &>(*this))->get_DateTaken(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemPhotoProperties<D>::Orientation() const
{
    hstring value;
    check_hresult(static_cast<const ISystemPhotoProperties &>(static_cast<const D &>(*this))->get_Orientation(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemPhotoProperties<D>::PeopleNames() const
{
    hstring value;
    check_hresult(static_cast<const ISystemPhotoProperties &>(static_cast<const D &>(*this))->get_PeopleNames(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemVideoProperties<D>::Director() const
{
    hstring value;
    check_hresult(static_cast<const ISystemVideoProperties &>(static_cast<const D &>(*this))->get_Director(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemVideoProperties<D>::FrameHeight() const
{
    hstring value;
    check_hresult(static_cast<const ISystemVideoProperties &>(static_cast<const D &>(*this))->get_FrameHeight(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemVideoProperties<D>::FrameWidth() const
{
    hstring value;
    check_hresult(static_cast<const ISystemVideoProperties &>(static_cast<const D &>(*this))->get_FrameWidth(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemVideoProperties<D>::Orientation() const
{
    hstring value;
    check_hresult(static_cast<const ISystemVideoProperties &>(static_cast<const D &>(*this))->get_Orientation(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemVideoProperties<D>::TotalBitrate() const
{
    hstring value;
    check_hresult(static_cast<const ISystemVideoProperties &>(static_cast<const D &>(*this))->get_TotalBitrate(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemProperties<D>::Author() const
{
    hstring value;
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_Author(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemProperties<D>::Comment() const
{
    hstring value;
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_Comment(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemProperties<D>::ItemNameDisplay() const
{
    hstring value;
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_ItemNameDisplay(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemProperties<D>::Keywords() const
{
    hstring value;
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_Keywords(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemProperties<D>::Rating() const
{
    hstring value;
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_Rating(put(value)));
    return value;
}

template <typename D> hstring impl_ISystemProperties<D>::Title() const
{
    hstring value;
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_Title(put(value)));
    return value;
}

template <typename D> Windows::Storage::SystemAudioProperties impl_ISystemProperties<D>::Audio() const
{
    Windows::Storage::SystemAudioProperties value { nullptr };
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_Audio(put(value)));
    return value;
}

template <typename D> Windows::Storage::SystemGPSProperties impl_ISystemProperties<D>::GPS() const
{
    Windows::Storage::SystemGPSProperties value { nullptr };
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_GPS(put(value)));
    return value;
}

template <typename D> Windows::Storage::SystemMediaProperties impl_ISystemProperties<D>::Media() const
{
    Windows::Storage::SystemMediaProperties value { nullptr };
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_Media(put(value)));
    return value;
}

template <typename D> Windows::Storage::SystemMusicProperties impl_ISystemProperties<D>::Music() const
{
    Windows::Storage::SystemMusicProperties value { nullptr };
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_Music(put(value)));
    return value;
}

template <typename D> Windows::Storage::SystemPhotoProperties impl_ISystemProperties<D>::Photo() const
{
    Windows::Storage::SystemPhotoProperties value { nullptr };
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_Photo(put(value)));
    return value;
}

template <typename D> Windows::Storage::SystemVideoProperties impl_ISystemProperties<D>::Video() const
{
    Windows::Storage::SystemVideoProperties value { nullptr };
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_Video(put(value)));
    return value;
}

template <typename D> Windows::Storage::SystemImageProperties impl_ISystemProperties<D>::Image() const
{
    Windows::Storage::SystemImageProperties value { nullptr };
    check_hresult(static_cast<const ISystemProperties &>(static_cast<const D &>(*this))->get_Image(put(value)));
    return value;
}

template <typename D> Windows::Storage::Streams::IRandomAccessStream impl_IStorageStreamTransaction<D>::Stream() const
{
    Windows::Storage::Streams::IRandomAccessStream value;
    check_hresult(static_cast<const IStorageStreamTransaction &>(static_cast<const D &>(*this))->get_Stream(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IStorageStreamTransaction<D>::CommitAsync() const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IStorageStreamTransaction &>(static_cast<const D &>(*this))->abi_CommitAsync(put(operation)));
    return operation;
}

template <typename D> Windows::Storage::ApplicationData impl_IApplicationDataStatics<D>::Current() const
{
    Windows::Storage::ApplicationData value { nullptr };
    check_hresult(static_cast<const IApplicationDataStatics &>(static_cast<const D &>(*this))->get_Current(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::ApplicationData> impl_IApplicationDataStatics2<D>::GetForUserAsync(const Windows::System::User & user) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::ApplicationData> getForUserOperation;
    check_hresult(static_cast<const IApplicationDataStatics2 &>(static_cast<const D &>(*this))->abi_GetForUserAsync(get(user), put(getForUserOperation)));
    return getForUserOperation;
}

template <typename D> uint32_t impl_IApplicationData<D>::Version() const
{
    uint32_t value {};
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->get_Version(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IApplicationData<D>::SetVersionAsync(uint32_t desiredVersion, const Windows::Storage::ApplicationDataSetVersionHandler & handler) const
{
    Windows::Foundation::IAsyncAction setVersionOperation;
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->abi_SetVersionAsync(desiredVersion, get(handler), put(setVersionOperation)));
    return setVersionOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IApplicationData<D>::ClearAsync() const
{
    Windows::Foundation::IAsyncAction clearOperation;
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->abi_ClearAllAsync(put(clearOperation)));
    return clearOperation;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IApplicationData<D>::ClearAsync(Windows::Storage::ApplicationDataLocality locality) const
{
    Windows::Foundation::IAsyncAction clearOperation;
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->abi_ClearAsync(locality, put(clearOperation)));
    return clearOperation;
}

template <typename D> Windows::Storage::ApplicationDataContainer impl_IApplicationData<D>::LocalSettings() const
{
    Windows::Storage::ApplicationDataContainer value { nullptr };
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->get_LocalSettings(put(value)));
    return value;
}

template <typename D> Windows::Storage::ApplicationDataContainer impl_IApplicationData<D>::RoamingSettings() const
{
    Windows::Storage::ApplicationDataContainer value { nullptr };
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->get_RoamingSettings(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IApplicationData<D>::LocalFolder() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->get_LocalFolder(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IApplicationData<D>::RoamingFolder() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->get_RoamingFolder(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IApplicationData<D>::TemporaryFolder() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->get_TemporaryFolder(put(value)));
    return value;
}

template <typename D> event_token impl_IApplicationData<D>::DataChanged(const Windows::Foundation::TypedEventHandler<Windows::Storage::ApplicationData, Windows::IInspectable> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->add_DataChanged(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IApplicationData> impl_IApplicationData<D>::DataChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Storage::ApplicationData, Windows::IInspectable> & handler) const
{
    return impl::make_event_revoker<D, IApplicationData>(this, &ABI::Windows::Storage::IApplicationData::remove_DataChanged, DataChanged(handler));
}

template <typename D> void impl_IApplicationData<D>::DataChanged(event_token token) const
{
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->remove_DataChanged(token));
}

template <typename D> void impl_IApplicationData<D>::SignalDataChanged() const
{
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->abi_SignalDataChanged());
}

template <typename D> uint64_t impl_IApplicationData<D>::RoamingStorageQuota() const
{
    uint64_t value {};
    check_hresult(static_cast<const IApplicationData &>(static_cast<const D &>(*this))->get_RoamingStorageQuota(&value));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IApplicationData2<D>::LocalCacheFolder() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IApplicationData2 &>(static_cast<const D &>(*this))->get_LocalCacheFolder(put(value)));
    return value;
}

template <typename D> Windows::Storage::StorageFolder impl_IApplicationData3<D>::GetPublisherCacheFolder(hstring_ref folderName) const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IApplicationData3 &>(static_cast<const D &>(*this))->abi_GetPublisherCacheFolder(get(folderName), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IApplicationData3<D>::ClearPublisherCacheFolderAsync(hstring_ref folderName) const
{
    Windows::Foundation::IAsyncAction clearOperation;
    check_hresult(static_cast<const IApplicationData3 &>(static_cast<const D &>(*this))->abi_ClearPublisherCacheFolderAsync(get(folderName), put(clearOperation)));
    return clearOperation;
}

template <typename D> Windows::Storage::StorageFolder impl_IApplicationData3<D>::SharedLocalFolder() const
{
    Windows::Storage::StorageFolder value { nullptr };
    check_hresult(static_cast<const IApplicationData3 &>(static_cast<const D &>(*this))->get_SharedLocalFolder(put(value)));
    return value;
}

template <typename D> uint32_t impl_ISetVersionRequest<D>::CurrentVersion() const
{
    uint32_t currentVersion {};
    check_hresult(static_cast<const ISetVersionRequest &>(static_cast<const D &>(*this))->get_CurrentVersion(&currentVersion));
    return currentVersion;
}

template <typename D> uint32_t impl_ISetVersionRequest<D>::DesiredVersion() const
{
    uint32_t desiredVersion {};
    check_hresult(static_cast<const ISetVersionRequest &>(static_cast<const D &>(*this))->get_DesiredVersion(&desiredVersion));
    return desiredVersion;
}

template <typename D> Windows::Storage::SetVersionDeferral impl_ISetVersionRequest<D>::GetDeferral() const
{
    Windows::Storage::SetVersionDeferral deferral { nullptr };
    check_hresult(static_cast<const ISetVersionRequest &>(static_cast<const D &>(*this))->abi_GetDeferral(put(deferral)));
    return deferral;
}

template <typename D> void impl_ISetVersionDeferral<D>::Complete() const
{
    check_hresult(static_cast<const ISetVersionDeferral &>(static_cast<const D &>(*this))->abi_Complete());
}

template <typename D> hstring impl_IApplicationDataContainer<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const IApplicationDataContainer &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> Windows::Storage::ApplicationDataLocality impl_IApplicationDataContainer<D>::Locality() const
{
    Windows::Storage::ApplicationDataLocality value {};
    check_hresult(static_cast<const IApplicationDataContainer &>(static_cast<const D &>(*this))->get_Locality(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IPropertySet impl_IApplicationDataContainer<D>::Values() const
{
    Windows::Foundation::Collections::IPropertySet value;
    check_hresult(static_cast<const IApplicationDataContainer &>(static_cast<const D &>(*this))->get_Values(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IMapView<hstring, Windows::Storage::ApplicationDataContainer> impl_IApplicationDataContainer<D>::Containers() const
{
    Windows::Foundation::Collections::IMapView<hstring, Windows::Storage::ApplicationDataContainer> value;
    check_hresult(static_cast<const IApplicationDataContainer &>(static_cast<const D &>(*this))->get_Containers(put(value)));
    return value;
}

template <typename D> Windows::Storage::ApplicationDataContainer impl_IApplicationDataContainer<D>::CreateContainer(hstring_ref name, Windows::Storage::ApplicationDataCreateDisposition disposition) const
{
    Windows::Storage::ApplicationDataContainer container { nullptr };
    check_hresult(static_cast<const IApplicationDataContainer &>(static_cast<const D &>(*this))->abi_CreateContainer(get(name), disposition, put(container)));
    return container;
}

template <typename D> void impl_IApplicationDataContainer<D>::DeleteContainer(hstring_ref name) const
{
    check_hresult(static_cast<const IApplicationDataContainer &>(static_cast<const D &>(*this))->abi_DeleteContainer(get(name)));
}

inline Windows::Storage::ApplicationData ApplicationData::Current()
{
    return get_activation_factory<ApplicationData, IApplicationDataStatics>().Current();
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::ApplicationData> ApplicationData::GetForUserAsync(const Windows::System::User & user)
{
    return get_activation_factory<ApplicationData, IApplicationDataStatics2>().GetForUserAsync(user);
}

inline ApplicationDataCompositeValue::ApplicationDataCompositeValue() :
    ApplicationDataCompositeValue(activate_instance<ApplicationDataCompositeValue>())
{}

inline void CachedFileManager::DeferUpdates(const Windows::Storage::IStorageFile & file)
{
    get_activation_factory<CachedFileManager, ICachedFileManagerStatics>().DeferUpdates(file);
}

inline Windows::Foundation::IAsyncOperation<winrt::Windows::Storage::Provider::FileUpdateStatus> CachedFileManager::CompleteUpdatesAsync(const Windows::Storage::IStorageFile & file)
{
    return get_activation_factory<CachedFileManager, ICachedFileManagerStatics>().CompleteUpdatesAsync(file);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> DownloadsFolder::CreateFileAsync(hstring_ref desiredName)
{
    return get_activation_factory<DownloadsFolder, IDownloadsFolderStatics>().CreateFileAsync(desiredName);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> DownloadsFolder::CreateFolderAsync(hstring_ref desiredName)
{
    return get_activation_factory<DownloadsFolder, IDownloadsFolderStatics>().CreateFolderAsync(desiredName);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> DownloadsFolder::CreateFileAsync(hstring_ref desiredName, Windows::Storage::CreationCollisionOption option)
{
    return get_activation_factory<DownloadsFolder, IDownloadsFolderStatics>().CreateFileAsync(desiredName, option);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> DownloadsFolder::CreateFolderAsync(hstring_ref desiredName, Windows::Storage::CreationCollisionOption option)
{
    return get_activation_factory<DownloadsFolder, IDownloadsFolderStatics>().CreateFolderAsync(desiredName, option);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> DownloadsFolder::CreateFileForUserAsync(const Windows::System::User & user, hstring_ref desiredName)
{
    return get_activation_factory<DownloadsFolder, IDownloadsFolderStatics2>().CreateFileForUserAsync(user, desiredName);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> DownloadsFolder::CreateFolderForUserAsync(const Windows::System::User & user, hstring_ref desiredName)
{
    return get_activation_factory<DownloadsFolder, IDownloadsFolderStatics2>().CreateFolderForUserAsync(user, desiredName);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> DownloadsFolder::CreateFileForUserAsync(const Windows::System::User & user, hstring_ref desiredName, Windows::Storage::CreationCollisionOption option)
{
    return get_activation_factory<DownloadsFolder, IDownloadsFolderStatics2>().CreateFileForUserAsync(user, desiredName, option);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> DownloadsFolder::CreateFolderForUserAsync(const Windows::System::User & user, hstring_ref desiredName, Windows::Storage::CreationCollisionOption option)
{
    return get_activation_factory<DownloadsFolder, IDownloadsFolderStatics2>().CreateFolderForUserAsync(user, desiredName, option);
}

inline Windows::Foundation::IAsyncOperation<hstring> FileIO::ReadTextAsync(const Windows::Storage::IStorageFile & file)
{
    return get_activation_factory<FileIO, IFileIOStatics>().ReadTextAsync(file);
}

inline Windows::Foundation::IAsyncOperation<hstring> FileIO::ReadTextAsync(const Windows::Storage::IStorageFile & file, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<FileIO, IFileIOStatics>().ReadTextAsync(file, encoding);
}

inline Windows::Foundation::IAsyncAction FileIO::WriteTextAsync(const Windows::Storage::IStorageFile & file, hstring_ref contents)
{
    return get_activation_factory<FileIO, IFileIOStatics>().WriteTextAsync(file, contents);
}

inline Windows::Foundation::IAsyncAction FileIO::WriteTextAsync(const Windows::Storage::IStorageFile & file, hstring_ref contents, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<FileIO, IFileIOStatics>().WriteTextAsync(file, contents, encoding);
}

inline Windows::Foundation::IAsyncAction FileIO::AppendTextAsync(const Windows::Storage::IStorageFile & file, hstring_ref contents)
{
    return get_activation_factory<FileIO, IFileIOStatics>().AppendTextAsync(file, contents);
}

inline Windows::Foundation::IAsyncAction FileIO::AppendTextAsync(const Windows::Storage::IStorageFile & file, hstring_ref contents, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<FileIO, IFileIOStatics>().AppendTextAsync(file, contents, encoding);
}

inline Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> FileIO::ReadLinesAsync(const Windows::Storage::IStorageFile & file)
{
    return get_activation_factory<FileIO, IFileIOStatics>().ReadLinesAsync(file);
}

inline Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> FileIO::ReadLinesAsync(const Windows::Storage::IStorageFile & file, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<FileIO, IFileIOStatics>().ReadLinesAsync(file, encoding);
}

inline Windows::Foundation::IAsyncAction FileIO::WriteLinesAsync(const Windows::Storage::IStorageFile & file, const Windows::Foundation::Collections::IIterable<hstring> & lines)
{
    return get_activation_factory<FileIO, IFileIOStatics>().WriteLinesAsync(file, lines);
}

inline Windows::Foundation::IAsyncAction FileIO::WriteLinesAsync(const Windows::Storage::IStorageFile & file, const Windows::Foundation::Collections::IIterable<hstring> & lines, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<FileIO, IFileIOStatics>().WriteLinesAsync(file, lines, encoding);
}

inline Windows::Foundation::IAsyncAction FileIO::AppendLinesAsync(const Windows::Storage::IStorageFile & file, const Windows::Foundation::Collections::IIterable<hstring> & lines)
{
    return get_activation_factory<FileIO, IFileIOStatics>().AppendLinesAsync(file, lines);
}

inline Windows::Foundation::IAsyncAction FileIO::AppendLinesAsync(const Windows::Storage::IStorageFile & file, const Windows::Foundation::Collections::IIterable<hstring> & lines, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<FileIO, IFileIOStatics>().AppendLinesAsync(file, lines, encoding);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> FileIO::ReadBufferAsync(const Windows::Storage::IStorageFile & file)
{
    return get_activation_factory<FileIO, IFileIOStatics>().ReadBufferAsync(file);
}

inline Windows::Foundation::IAsyncAction FileIO::WriteBufferAsync(const Windows::Storage::IStorageFile & file, const Windows::Storage::Streams::IBuffer & buffer)
{
    return get_activation_factory<FileIO, IFileIOStatics>().WriteBufferAsync(file, buffer);
}

inline Windows::Foundation::IAsyncAction FileIO::WriteBytesAsync(const Windows::Storage::IStorageFile & file, array_ref<const uint8_t> buffer)
{
    return get_activation_factory<FileIO, IFileIOStatics>().WriteBytesAsync(file, buffer);
}

inline Windows::Storage::StorageFolder KnownFolders::CameraRoll()
{
    return get_activation_factory<KnownFolders, IKnownFoldersCameraRollStatics>().CameraRoll();
}

inline Windows::Storage::StorageFolder KnownFolders::Playlists()
{
    return get_activation_factory<KnownFolders, IKnownFoldersPlaylistsStatics>().Playlists();
}

inline Windows::Storage::StorageFolder KnownFolders::SavedPictures()
{
    return get_activation_factory<KnownFolders, IKnownFoldersSavedPicturesStatics>().SavedPictures();
}

inline Windows::Storage::StorageFolder KnownFolders::MusicLibrary()
{
    return get_activation_factory<KnownFolders, IKnownFoldersStatics>().MusicLibrary();
}

inline Windows::Storage::StorageFolder KnownFolders::PicturesLibrary()
{
    return get_activation_factory<KnownFolders, IKnownFoldersStatics>().PicturesLibrary();
}

inline Windows::Storage::StorageFolder KnownFolders::VideosLibrary()
{
    return get_activation_factory<KnownFolders, IKnownFoldersStatics>().VideosLibrary();
}

inline Windows::Storage::StorageFolder KnownFolders::DocumentsLibrary()
{
    return get_activation_factory<KnownFolders, IKnownFoldersStatics>().DocumentsLibrary();
}

inline Windows::Storage::StorageFolder KnownFolders::HomeGroup()
{
    return get_activation_factory<KnownFolders, IKnownFoldersStatics>().HomeGroup();
}

inline Windows::Storage::StorageFolder KnownFolders::RemovableDevices()
{
    return get_activation_factory<KnownFolders, IKnownFoldersStatics>().RemovableDevices();
}

inline Windows::Storage::StorageFolder KnownFolders::MediaServerDevices()
{
    return get_activation_factory<KnownFolders, IKnownFoldersStatics>().MediaServerDevices();
}

inline Windows::Storage::StorageFolder KnownFolders::Objects3D()
{
    return get_activation_factory<KnownFolders, IKnownFoldersStatics2>().Objects3D();
}

inline Windows::Storage::StorageFolder KnownFolders::AppCaptures()
{
    return get_activation_factory<KnownFolders, IKnownFoldersStatics2>().AppCaptures();
}

inline Windows::Storage::StorageFolder KnownFolders::RecordedCalls()
{
    return get_activation_factory<KnownFolders, IKnownFoldersStatics2>().RecordedCalls();
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> KnownFolders::GetFolderForUserAsync(const Windows::System::User & user, Windows::Storage::KnownFolderId folderId)
{
    return get_activation_factory<KnownFolders, IKnownFoldersStatics3>().GetFolderForUserAsync(user, folderId);
}

inline Windows::Foundation::IAsyncOperation<hstring> PathIO::ReadTextAsync(hstring_ref absolutePath)
{
    return get_activation_factory<PathIO, IPathIOStatics>().ReadTextAsync(absolutePath);
}

inline Windows::Foundation::IAsyncOperation<hstring> PathIO::ReadTextAsync(hstring_ref absolutePath, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<PathIO, IPathIOStatics>().ReadTextAsync(absolutePath, encoding);
}

inline Windows::Foundation::IAsyncAction PathIO::WriteTextAsync(hstring_ref absolutePath, hstring_ref contents)
{
    return get_activation_factory<PathIO, IPathIOStatics>().WriteTextAsync(absolutePath, contents);
}

inline Windows::Foundation::IAsyncAction PathIO::WriteTextAsync(hstring_ref absolutePath, hstring_ref contents, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<PathIO, IPathIOStatics>().WriteTextAsync(absolutePath, contents, encoding);
}

inline Windows::Foundation::IAsyncAction PathIO::AppendTextAsync(hstring_ref absolutePath, hstring_ref contents)
{
    return get_activation_factory<PathIO, IPathIOStatics>().AppendTextAsync(absolutePath, contents);
}

inline Windows::Foundation::IAsyncAction PathIO::AppendTextAsync(hstring_ref absolutePath, hstring_ref contents, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<PathIO, IPathIOStatics>().AppendTextAsync(absolutePath, contents, encoding);
}

inline Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> PathIO::ReadLinesAsync(hstring_ref absolutePath)
{
    return get_activation_factory<PathIO, IPathIOStatics>().ReadLinesAsync(absolutePath);
}

inline Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVector<hstring>> PathIO::ReadLinesAsync(hstring_ref absolutePath, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<PathIO, IPathIOStatics>().ReadLinesAsync(absolutePath, encoding);
}

inline Windows::Foundation::IAsyncAction PathIO::WriteLinesAsync(hstring_ref absolutePath, const Windows::Foundation::Collections::IIterable<hstring> & lines)
{
    return get_activation_factory<PathIO, IPathIOStatics>().WriteLinesAsync(absolutePath, lines);
}

inline Windows::Foundation::IAsyncAction PathIO::WriteLinesAsync(hstring_ref absolutePath, const Windows::Foundation::Collections::IIterable<hstring> & lines, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<PathIO, IPathIOStatics>().WriteLinesAsync(absolutePath, lines, encoding);
}

inline Windows::Foundation::IAsyncAction PathIO::AppendLinesAsync(hstring_ref absolutePath, const Windows::Foundation::Collections::IIterable<hstring> & lines)
{
    return get_activation_factory<PathIO, IPathIOStatics>().AppendLinesAsync(absolutePath, lines);
}

inline Windows::Foundation::IAsyncAction PathIO::AppendLinesAsync(hstring_ref absolutePath, const Windows::Foundation::Collections::IIterable<hstring> & lines, Windows::Storage::Streams::UnicodeEncoding encoding)
{
    return get_activation_factory<PathIO, IPathIOStatics>().AppendLinesAsync(absolutePath, lines, encoding);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> PathIO::ReadBufferAsync(hstring_ref absolutePath)
{
    return get_activation_factory<PathIO, IPathIOStatics>().ReadBufferAsync(absolutePath);
}

inline Windows::Foundation::IAsyncAction PathIO::WriteBufferAsync(hstring_ref absolutePath, const Windows::Storage::Streams::IBuffer & buffer)
{
    return get_activation_factory<PathIO, IPathIOStatics>().WriteBufferAsync(absolutePath, buffer);
}

inline Windows::Foundation::IAsyncAction PathIO::WriteBytesAsync(hstring_ref absolutePath, array_ref<const uint8_t> buffer)
{
    return get_activation_factory<PathIO, IPathIOStatics>().WriteBytesAsync(absolutePath, buffer);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> StorageFile::GetFileFromPathAsync(hstring_ref path)
{
    return get_activation_factory<StorageFile, IStorageFileStatics>().GetFileFromPathAsync(path);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> StorageFile::GetFileFromApplicationUriAsync(const Windows::Foundation::Uri & uri)
{
    return get_activation_factory<StorageFile, IStorageFileStatics>().GetFileFromApplicationUriAsync(uri);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> StorageFile::CreateStreamedFileAsync(hstring_ref displayNameWithExtension, const Windows::Storage::StreamedFileDataRequestedHandler & dataRequested, const Windows::Storage::Streams::IRandomAccessStreamReference & thumbnail)
{
    return get_activation_factory<StorageFile, IStorageFileStatics>().CreateStreamedFileAsync(displayNameWithExtension, dataRequested, thumbnail);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> StorageFile::ReplaceWithStreamedFileAsync(const Windows::Storage::IStorageFile & fileToReplace, const Windows::Storage::StreamedFileDataRequestedHandler & dataRequested, const Windows::Storage::Streams::IRandomAccessStreamReference & thumbnail)
{
    return get_activation_factory<StorageFile, IStorageFileStatics>().ReplaceWithStreamedFileAsync(fileToReplace, dataRequested, thumbnail);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> StorageFile::CreateStreamedFileFromUriAsync(hstring_ref displayNameWithExtension, const Windows::Foundation::Uri & uri, const Windows::Storage::Streams::IRandomAccessStreamReference & thumbnail)
{
    return get_activation_factory<StorageFile, IStorageFileStatics>().CreateStreamedFileFromUriAsync(displayNameWithExtension, uri, thumbnail);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFile> StorageFile::ReplaceWithStreamedFileFromUriAsync(const Windows::Storage::IStorageFile & fileToReplace, const Windows::Foundation::Uri & uri, const Windows::Storage::Streams::IRandomAccessStreamReference & thumbnail)
{
    return get_activation_factory<StorageFile, IStorageFileStatics>().ReplaceWithStreamedFileFromUriAsync(fileToReplace, uri, thumbnail);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageFolder> StorageFolder::GetFolderFromPathAsync(hstring_ref path)
{
    return get_activation_factory<StorageFolder, IStorageFolderStatics>().GetFolderFromPathAsync(path);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageLibrary> StorageLibrary::GetLibraryAsync(Windows::Storage::KnownLibraryId libraryId)
{
    return get_activation_factory<StorageLibrary, IStorageLibraryStatics>().GetLibraryAsync(libraryId);
}

inline Windows::Foundation::IAsyncOperation<Windows::Storage::StorageLibrary> StorageLibrary::GetLibraryForUserAsync(const Windows::System::User & user, Windows::Storage::KnownLibraryId libraryId)
{
    return get_activation_factory<StorageLibrary, IStorageLibraryStatics2>().GetLibraryForUserAsync(user, libraryId);
}

inline hstring SystemProperties::Author()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().Author();
}

inline hstring SystemProperties::Comment()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().Comment();
}

inline hstring SystemProperties::ItemNameDisplay()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().ItemNameDisplay();
}

inline hstring SystemProperties::Keywords()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().Keywords();
}

inline hstring SystemProperties::Rating()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().Rating();
}

inline hstring SystemProperties::Title()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().Title();
}

inline Windows::Storage::SystemAudioProperties SystemProperties::Audio()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().Audio();
}

inline Windows::Storage::SystemGPSProperties SystemProperties::GPS()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().GPS();
}

inline Windows::Storage::SystemMediaProperties SystemProperties::Media()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().Media();
}

inline Windows::Storage::SystemMusicProperties SystemProperties::Music()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().Music();
}

inline Windows::Storage::SystemPhotoProperties SystemProperties::Photo()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().Photo();
}

inline Windows::Storage::SystemVideoProperties SystemProperties::Video()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().Video();
}

inline Windows::Storage::SystemImageProperties SystemProperties::Image()
{
    return get_activation_factory<SystemProperties, ISystemProperties>().Image();
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.MediaProperties.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Media.MediaProperties.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_5ee3189c_7dbf_5998_ad07_5414fb82567c
#define WINRT_GENERIC_5ee3189c_7dbf_5998_ad07_5414fb82567c
template <> struct __declspec(uuid("5ee3189c-7dbf-5998-ad07-5414fb82567c")) __declspec(novtable) IMap<GUID, Windows::IInspectable> : impl_IMap<GUID, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_3bda1540_d089_5a1a_8f0d_94eba8068e58
#define WINRT_GENERIC_3bda1540_d089_5a1a_8f0d_94eba8068e58
template <> struct __declspec(uuid("3bda1540-d089-5a1a-8f0d-94eba8068e58")) __declspec(novtable) IKeyValuePair<GUID, Windows::IInspectable> : impl_IKeyValuePair<GUID, Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_d4f86f16_c6cf_57c8_9743_5ec20c31ab79
#define WINRT_GENERIC_d4f86f16_c6cf_57c8_9743_5ec20c31ab79
template <> struct __declspec(uuid("d4f86f16-c6cf-57c8-9743-5ec20c31ab79")) __declspec(novtable) IAsyncOperation<Windows::Media::MediaProperties::MediaEncodingProfile> : impl_IAsyncOperation<Windows::Media::MediaProperties::MediaEncodingProfile> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_e4d2c732_bbc1_5ef4_869f_5007ceb55f6e
#define WINRT_GENERIC_e4d2c732_bbc1_5ef4_869f_5007ceb55f6e
template <> struct __declspec(uuid("e4d2c732-bbc1-5ef4-869f-5007ceb55f6e")) __declspec(novtable) IMapView<GUID, Windows::IInspectable> : impl_IMapView<GUID, Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_37296fc1_86da_58a0_90c0_c807bd94395e
#define WINRT_GENERIC_37296fc1_86da_58a0_90c0_c807bd94395e
template <> struct __declspec(uuid("37296fc1-86da-58a0-90c0-c807bd94395e")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::MediaProperties::MediaEncodingProfile> : impl_AsyncOperationCompletedHandler<Windows::Media::MediaProperties::MediaEncodingProfile> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_f3b20528_e3b3_5331_b2d0_0c2623aee785
#define WINRT_GENERIC_f3b20528_e3b3_5331_b2d0_0c2623aee785
template <> struct __declspec(uuid("f3b20528-e3b3-5331-b2d0-0c2623aee785")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<GUID, Windows::IInspectable>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<GUID, Windows::IInspectable>> {};
#endif

#ifndef WINRT_GENERIC_4f25059a_0b9a_5f25_9b9e_4b9f1d22ff65
#define WINRT_GENERIC_4f25059a_0b9a_5f25_9b9e_4b9f1d22ff65
template <> struct __declspec(uuid("4f25059a-0b9a-5f25-9b9e-4b9f1d22ff65")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<GUID, Windows::IInspectable>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<GUID, Windows::IInspectable>> {};
#endif


}

namespace Windows::Media::MediaProperties {

template <typename D>
struct WINRT_EBO impl_IAudioEncodingProperties
{
    void Bitrate(uint32_t value) const;
    uint32_t Bitrate() const;
    void ChannelCount(uint32_t value) const;
    uint32_t ChannelCount() const;
    void SampleRate(uint32_t value) const;
    uint32_t SampleRate() const;
    void BitsPerSample(uint32_t value) const;
    uint32_t BitsPerSample() const;
};

template <typename D>
struct WINRT_EBO impl_IAudioEncodingPropertiesStatics
{
    Windows::Media::MediaProperties::AudioEncodingProperties CreateAac(uint32_t sampleRate, uint32_t channelCount, uint32_t bitrate) const;
    Windows::Media::MediaProperties::AudioEncodingProperties CreateAacAdts(uint32_t sampleRate, uint32_t channelCount, uint32_t bitrate) const;
    Windows::Media::MediaProperties::AudioEncodingProperties CreateMp3(uint32_t sampleRate, uint32_t channelCount, uint32_t bitrate) const;
    Windows::Media::MediaProperties::AudioEncodingProperties CreatePcm(uint32_t sampleRate, uint32_t channelCount, uint32_t bitsPerSample) const;
    Windows::Media::MediaProperties::AudioEncodingProperties CreateWma(uint32_t sampleRate, uint32_t channelCount, uint32_t bitrate) const;
};

template <typename D>
struct WINRT_EBO impl_IAudioEncodingPropertiesWithFormatUserData
{
    void SetFormatUserData(array_ref<const uint8_t> value) const;
    void GetFormatUserData(com_array<uint8_t> & value) const;
};

template <typename D>
struct WINRT_EBO impl_IContainerEncodingProperties
{
};

template <typename D>
struct WINRT_EBO impl_IH264ProfileIdsStatics
{
    int32_t ConstrainedBaseline() const;
    int32_t Baseline() const;
    int32_t Extended() const;
    int32_t Main() const;
    int32_t High() const;
    int32_t High10() const;
    int32_t High422() const;
    int32_t High444() const;
    int32_t StereoHigh() const;
    int32_t MultiviewHigh() const;
};

template <typename D>
struct WINRT_EBO impl_IImageEncodingProperties
{
    void Width(uint32_t value) const;
    uint32_t Width() const;
    void Height(uint32_t value) const;
    uint32_t Height() const;
};

template <typename D>
struct WINRT_EBO impl_IImageEncodingPropertiesStatics
{
    Windows::Media::MediaProperties::ImageEncodingProperties CreateJpeg() const;
    Windows::Media::MediaProperties::ImageEncodingProperties CreatePng() const;
    Windows::Media::MediaProperties::ImageEncodingProperties CreateJpegXR() const;
};

template <typename D>
struct WINRT_EBO impl_IImageEncodingPropertiesStatics2
{
    Windows::Media::MediaProperties::ImageEncodingProperties CreateUncompressed(Windows::Media::MediaProperties::MediaPixelFormat format) const;
    Windows::Media::MediaProperties::ImageEncodingProperties CreateBmp() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaEncodingProfile
{
    void Audio(const Windows::Media::MediaProperties::AudioEncodingProperties & value) const;
    Windows::Media::MediaProperties::AudioEncodingProperties Audio() const;
    void Video(const Windows::Media::MediaProperties::VideoEncodingProperties & value) const;
    Windows::Media::MediaProperties::VideoEncodingProperties Video() const;
    void Container(const Windows::Media::MediaProperties::ContainerEncodingProperties & value) const;
    Windows::Media::MediaProperties::ContainerEncodingProperties Container() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaEncodingProfileStatics
{
    Windows::Media::MediaProperties::MediaEncodingProfile CreateM4a(Windows::Media::MediaProperties::AudioEncodingQuality quality) const;
    Windows::Media::MediaProperties::MediaEncodingProfile CreateMp3(Windows::Media::MediaProperties::AudioEncodingQuality quality) const;
    Windows::Media::MediaProperties::MediaEncodingProfile CreateWma(Windows::Media::MediaProperties::AudioEncodingQuality quality) const;
    Windows::Media::MediaProperties::MediaEncodingProfile CreateMp4(Windows::Media::MediaProperties::VideoEncodingQuality quality) const;
    Windows::Media::MediaProperties::MediaEncodingProfile CreateWmv(Windows::Media::MediaProperties::VideoEncodingQuality quality) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::MediaProperties::MediaEncodingProfile> CreateFromFileAsync(const Windows::Storage::IStorageFile & file) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::MediaProperties::MediaEncodingProfile> CreateFromStreamAsync(const Windows::Storage::Streams::IRandomAccessStream & stream) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaEncodingProfileStatics2
{
    Windows::Media::MediaProperties::MediaEncodingProfile CreateWav(Windows::Media::MediaProperties::AudioEncodingQuality quality) const;
    Windows::Media::MediaProperties::MediaEncodingProfile CreateAvi(Windows::Media::MediaProperties::VideoEncodingQuality quality) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaEncodingProperties
{
    Windows::Media::MediaProperties::MediaPropertySet Properties() const;
    hstring Type() const;
    void Subtype(hstring_ref value) const;
    hstring Subtype() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaEncodingSubtypesStatics
{
    hstring Aac() const;
    hstring AacAdts() const;
    hstring Ac3() const;
    hstring AmrNb() const;
    hstring AmrWb() const;
    hstring Argb32() const;
    hstring Asf() const;
    hstring Avi() const;
    hstring Bgra8() const;
    hstring Bmp() const;
    hstring Eac3() const;
    hstring Float() const;
    hstring Gif() const;
    hstring H263() const;
    hstring H264() const;
    hstring H264Es() const;
    hstring Hevc() const;
    hstring HevcEs() const;
    hstring Iyuv() const;
    hstring Jpeg() const;
    hstring JpegXr() const;
    hstring Mjpg() const;
    hstring Mpeg() const;
    hstring Mpeg1() const;
    hstring Mpeg2() const;
    hstring Mp3() const;
    hstring Mpeg4() const;
    hstring Nv12() const;
    hstring Pcm() const;
    hstring Png() const;
    hstring Rgb24() const;
    hstring Rgb32() const;
    hstring Tiff() const;
    hstring Wave() const;
    hstring Wma8() const;
    hstring Wma9() const;
    hstring Wmv3() const;
    hstring Wvc1() const;
    hstring Yuy2() const;
    hstring Yv12() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaRatio
{
    void Numerator(uint32_t value) const;
    uint32_t Numerator() const;
    void Denominator(uint32_t value) const;
    uint32_t Denominator() const;
};

template <typename D>
struct WINRT_EBO impl_IMpeg2ProfileIdsStatics
{
    int32_t Simple() const;
    int32_t Main() const;
    int32_t SignalNoiseRatioScalable() const;
    int32_t SpatiallyScalable() const;
    int32_t High() const;
};

template <typename D>
struct WINRT_EBO impl_IVideoEncodingProperties
{
    void Bitrate(uint32_t value) const;
    uint32_t Bitrate() const;
    void Width(uint32_t value) const;
    uint32_t Width() const;
    void Height(uint32_t value) const;
    uint32_t Height() const;
    Windows::Media::MediaProperties::MediaRatio FrameRate() const;
    Windows::Media::MediaProperties::MediaRatio PixelAspectRatio() const;
};

template <typename D>
struct WINRT_EBO impl_IVideoEncodingProperties2
{
    void SetFormatUserData(array_ref<const uint8_t> value) const;
    void GetFormatUserData(com_array<uint8_t> & value) const;
    void ProfileId(int32_t value) const;
    int32_t ProfileId() const;
};

template <typename D>
struct WINRT_EBO impl_IVideoEncodingProperties3
{
    Windows::Media::MediaProperties::StereoscopicVideoPackingMode StereoscopicVideoPackingMode() const;
};

template <typename D>
struct WINRT_EBO impl_IVideoEncodingPropertiesStatics
{
    Windows::Media::MediaProperties::VideoEncodingProperties CreateH264() const;
    Windows::Media::MediaProperties::VideoEncodingProperties CreateMpeg2() const;
    Windows::Media::MediaProperties::VideoEncodingProperties CreateUncompressed(hstring_ref subtype, uint32_t width, uint32_t height) const;
};

struct IAudioEncodingProperties :
    Windows::IInspectable,
    impl::consume<IAudioEncodingProperties>,
    impl::require<IAudioEncodingProperties, Windows::Media::MediaProperties::IMediaEncodingProperties>
{
    IAudioEncodingProperties(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAudioEncodingProperties>(m_ptr); }
};

struct IAudioEncodingPropertiesStatics :
    Windows::IInspectable,
    impl::consume<IAudioEncodingPropertiesStatics>
{
    IAudioEncodingPropertiesStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAudioEncodingPropertiesStatics>(m_ptr); }
};

struct IAudioEncodingPropertiesWithFormatUserData :
    Windows::IInspectable,
    impl::consume<IAudioEncodingPropertiesWithFormatUserData>
{
    IAudioEncodingPropertiesWithFormatUserData(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAudioEncodingPropertiesWithFormatUserData>(m_ptr); }
};

struct IContainerEncodingProperties :
    Windows::IInspectable,
    impl::consume<IContainerEncodingProperties>,
    impl::require<IContainerEncodingProperties, Windows::Media::MediaProperties::IMediaEncodingProperties>
{
    IContainerEncodingProperties(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContainerEncodingProperties>(m_ptr); }
};

struct IH264ProfileIdsStatics :
    Windows::IInspectable,
    impl::consume<IH264ProfileIdsStatics>
{
    IH264ProfileIdsStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IH264ProfileIdsStatics>(m_ptr); }
};

struct IImageEncodingProperties :
    Windows::IInspectable,
    impl::consume<IImageEncodingProperties>,
    impl::require<IImageEncodingProperties, Windows::Media::MediaProperties::IMediaEncodingProperties>
{
    IImageEncodingProperties(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IImageEncodingProperties>(m_ptr); }
};

struct IImageEncodingPropertiesStatics :
    Windows::IInspectable,
    impl::consume<IImageEncodingPropertiesStatics>
{
    IImageEncodingPropertiesStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IImageEncodingPropertiesStatics>(m_ptr); }
};

struct IImageEncodingPropertiesStatics2 :
    Windows::IInspectable,
    impl::consume<IImageEncodingPropertiesStatics2>
{
    IImageEncodingPropertiesStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IImageEncodingPropertiesStatics2>(m_ptr); }
};

struct IMediaEncodingProfile :
    Windows::IInspectable,
    impl::consume<IMediaEncodingProfile>
{
    IMediaEncodingProfile(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaEncodingProfile>(m_ptr); }
};

struct IMediaEncodingProfileStatics :
    Windows::IInspectable,
    impl::consume<IMediaEncodingProfileStatics>
{
    IMediaEncodingProfileStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaEncodingProfileStatics>(m_ptr); }
};

struct IMediaEncodingProfileStatics2 :
    Windows::IInspectable,
    impl::consume<IMediaEncodingProfileStatics2>
{
    IMediaEncodingProfileStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaEncodingProfileStatics2>(m_ptr); }
};

struct IMediaEncodingProperties :
    Windows::IInspectable,
    impl::consume<IMediaEncodingProperties>
{
    IMediaEncodingProperties(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaEncodingProperties>(m_ptr); }
};

struct IMediaEncodingSubtypesStatics :
    Windows::IInspectable,
    impl::consume<IMediaEncodingSubtypesStatics>
{
    IMediaEncodingSubtypesStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaEncodingSubtypesStatics>(m_ptr); }
};

struct IMediaRatio :
    Windows::IInspectable,
    impl::consume<IMediaRatio>
{
    IMediaRatio(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaRatio>(m_ptr); }
};

struct IMpeg2ProfileIdsStatics :
    Windows::IInspectable,
    impl::consume<IMpeg2ProfileIdsStatics>
{
    IMpeg2ProfileIdsStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMpeg2ProfileIdsStatics>(m_ptr); }
};

struct IVideoEncodingProperties :
    Windows::IInspectable,
    impl::consume<IVideoEncodingProperties>,
    impl::require<IVideoEncodingProperties, Windows::Media::MediaProperties::IMediaEncodingProperties>
{
    IVideoEncodingProperties(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoEncodingProperties>(m_ptr); }
};

struct IVideoEncodingProperties2 :
    Windows::IInspectable,
    impl::consume<IVideoEncodingProperties2>
{
    IVideoEncodingProperties2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoEncodingProperties2>(m_ptr); }
};

struct IVideoEncodingProperties3 :
    Windows::IInspectable,
    impl::consume<IVideoEncodingProperties3>
{
    IVideoEncodingProperties3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoEncodingProperties3>(m_ptr); }
};

struct IVideoEncodingPropertiesStatics :
    Windows::IInspectable,
    impl::consume<IVideoEncodingPropertiesStatics>
{
    IVideoEncodingPropertiesStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoEncodingPropertiesStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Controls.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.UI.Xaml.Controls.1.h"
#include "Windows.UI.Xaml.2.h"
#include "Windows.UI.Xaml.Controls.Primitives.2.h"
#include "Windows.UI.Xaml.Data.2.h"
#include "Windows.UI.Xaml.Media.2.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
#define WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
template <> struct __declspec(uuid("cdb5efb3-5788-509d-9be1-71ccb8a3362a")) __declspec(novtable) IAsyncOperation<bool> : impl_IAsyncOperation<bool> {};
#endif

#ifndef WINRT_GENERIC_3e1fe603_f897_5263_b328_0806426b8a79
#define WINRT_GENERIC_3e1fe603_f897_5263_b328_0806426b8a79
template <> struct __declspec(uuid("3e1fe603-f897-5263-b328-0806426b8a79")) __declspec(novtable) IAsyncOperation<hstring> : impl_IAsyncOperation<hstring> {};
#endif

#ifndef WINRT_GENERIC_5541d8a7_497c_5aa4_86fc_7713adbf2a2c
#define WINRT_GENERIC_5541d8a7_497c_5aa4_86fc_7713adbf2a2c
template <> struct __declspec(uuid("5541d8a7-497c-5aa4-86fc-7713adbf2a2c")) __declspec(novtable) IReference<Windows::Foundation::DateTime> : impl_IReference<Windows::Foundation::DateTime> {};
#endif

#ifndef WINRT_GENERIC_604d0c4c_91de_5c2a_935f_362f13eaf800
#define WINRT_GENERIC_604d0c4c_91de_5c2a_935f_362f13eaf800
template <> struct __declspec(uuid("604d0c4c-91de-5c2a-935f-362f13eaf800")) __declspec(novtable) IReference<Windows::Foundation::TimeSpan> : impl_IReference<Windows::Foundation::TimeSpan> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
#define WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
template <> struct __declspec(uuid("2f13c006-a03a-5f69-b090-75a43e33423e")) __declspec(novtable) IVectorView<hstring> : impl_IVectorView<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
#define WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
template <> struct __declspec(uuid("c50898f6-c536-5f47-8583-8b2c2438a13b")) __declspec(novtable) EventHandler<Windows::IInspectable> : impl_EventHandler<Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_548cefbd_bc8a_5fa0_8df2_957440fc8bf4
#define WINRT_GENERIC_548cefbd_bc8a_5fa0_8df2_957440fc8bf4
template <> struct __declspec(uuid("548cefbd-bc8a-5fa0-8df2-957440fc8bf4")) __declspec(novtable) IReference<int32_t> : impl_IReference<int32_t> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
#define WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
template <> struct __declspec(uuid("e2fcc7c1-3bfc-5a0b-b2b0-72e769d1cb7e")) __declspec(novtable) IIterable<hstring> : impl_IIterable<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_abf53c57_ee50_5342_b52a_26e3b8cc024f
#define WINRT_GENERIC_abf53c57_ee50_5342_b52a_26e3b8cc024f
template <> struct __declspec(uuid("abf53c57-ee50-5342-b52a-26e3b8cc024f")) __declspec(novtable) IAsyncOperation<Windows::IInspectable> : impl_IAsyncOperation<Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_2f2d6c29_5473_5f3e_92e7_96572bb990e2
#define WINRT_GENERIC_2f2d6c29_5473_5f3e_92e7_96572bb990e2
template <> struct __declspec(uuid("2f2d6c29-5473-5f3e-92e7-96572bb990e2")) __declspec(novtable) IReference<double> : impl_IReference<double> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_b0d63b78_78ad_5e31_b6d8_e32a0e16c447
#define WINRT_GENERIC_b0d63b78_78ad_5e31_b6d8_e32a0e16c447
template <> struct __declspec(uuid("b0d63b78-78ad-5e31-b6d8-e32a0e16c447")) __declspec(novtable) IIterable<Windows::Foundation::Uri> : impl_IIterable<Windows::Foundation::Uri> {};
#endif

#ifndef WINRT_GENERIC_a6487363_b074_5c60_ab16_866dce4ee54d
#define WINRT_GENERIC_a6487363_b074_5c60_ab16_866dce4ee54d
template <> struct __declspec(uuid("a6487363-b074-5c60-ab16-866dce4ee54d")) __declspec(novtable) IVectorView<Windows::IInspectable> : impl_IVectorView<Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_719cc2ba_3e76_5def_9f1a_38d85a145ea8
#define WINRT_GENERIC_719cc2ba_3e76_5def_9f1a_38d85a145ea8
template <> struct __declspec(uuid("719cc2ba-3e76-5def-9f1a-38d85a145ea8")) __declspec(novtable) IReference<float> : impl_IReference<float> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_0d82bd8d_fe62_5d67_a7b9_7886dd75bc4e
#define WINRT_GENERIC_0d82bd8d_fe62_5d67_a7b9_7886dd75bc4e
template <> struct __declspec(uuid("0d82bd8d-fe62-5d67-a7b9-7886dd75bc4e")) __declspec(novtable) IVector<Windows::Foundation::Uri> : impl_IVector<Windows::Foundation::Uri> {};
#endif

#ifndef WINRT_GENERIC_4b8385bd_a2cd_5ff1_bf74_7ea580423e50
#define WINRT_GENERIC_4b8385bd_a2cd_5ff1_bf74_7ea580423e50
template <> struct __declspec(uuid("4b8385bd-a2cd-5ff1-bf74-7ea580423e50")) __declspec(novtable) IVectorView<Windows::Foundation::Uri> : impl_IVectorView<Windows::Foundation::Uri> {};
#endif

#ifndef WINRT_GENERIC_42e26ae1_d357_57e8_bb48_f75c9ff69d91
#define WINRT_GENERIC_42e26ae1_d357_57e8_bb48_f75c9ff69d91
template <> struct __declspec(uuid("42e26ae1-d357-57e8-bb48-f75c9ff69d91")) __declspec(novtable) IIterable<Windows::UI::Xaml::UIElement> : impl_IIterable<Windows::UI::Xaml::UIElement> {};
#endif

#ifndef WINRT_GENERIC_6e137874_dd39_5b4f_a7ec_2ea69e4c2229
#define WINRT_GENERIC_6e137874_dd39_5b4f_a7ec_2ea69e4c2229
template <> struct __declspec(uuid("6e137874-dd39-5b4f-a7ec-2ea69e4c2229")) __declspec(novtable) IVector<Windows::UI::Xaml::Controls::ColumnDefinition> : impl_IVector<Windows::UI::Xaml::Controls::ColumnDefinition> {};
#endif

#ifndef WINRT_GENERIC_a99329f3_4130_55cc_a4f0_c2ba43ca0735
#define WINRT_GENERIC_a99329f3_4130_55cc_a4f0_c2ba43ca0735
template <> struct __declspec(uuid("a99329f3-4130-55cc-a4f0-c2ba43ca0735")) __declspec(novtable) IIterable<Windows::UI::Xaml::Controls::ColumnDefinition> : impl_IIterable<Windows::UI::Xaml::Controls::ColumnDefinition> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_d01fb083_5e61_5c12_a18f_62947158faa8
#define WINRT_GENERIC_d01fb083_5e61_5c12_a18f_62947158faa8
template <> struct __declspec(uuid("d01fb083-5e61-5c12-a18f-62947158faa8")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_b32bdca4_5e52_5b27_bc5d_d66a1a268c2a
#define WINRT_GENERIC_b32bdca4_5e52_5b27_bc5d_d66a1a268c2a
template <> struct __declspec(uuid("b32bdca4-5e52-5b27-bc5d-d66a1a268c2a")) __declspec(novtable) IVector<Windows::IInspectable> : impl_IVector<Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_7b81c56a_0985_518d_baa9_0da9ae009f65
#define WINRT_GENERIC_7b81c56a_0985_518d_baa9_0da9ae009f65
template <> struct __declspec(uuid("7b81c56a-0985-518d-baa9-0da9ae009f65")) __declspec(novtable) IObservableVector<Windows::IInspectable> : impl_IObservableVector<Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_092b849b_60b1_52be_a44a_6fe8e933cbe4
#define WINRT_GENERIC_092b849b_60b1_52be_a44a_6fe8e933cbe4
template <> struct __declspec(uuid("092b849b-60b1-52be-a44a-6fe8e933cbe4")) __declspec(novtable) IIterable<Windows::IInspectable> : impl_IIterable<Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_62225981_7a0d_5d38_8088_7c6bb6d959be
#define WINRT_GENERIC_62225981_7a0d_5d38_8088_7c6bb6d959be
template <> struct __declspec(uuid("62225981-7a0d-5d38-8088-7c6bb6d959be")) __declspec(novtable) IVector<Windows::UI::Xaml::Controls::RowDefinition> : impl_IVector<Windows::UI::Xaml::Controls::RowDefinition> {};
#endif

#ifndef WINRT_GENERIC_abef522a_7378_504f_9406_97d9f42643a7
#define WINRT_GENERIC_abef522a_7378_504f_9406_97d9f42643a7
template <> struct __declspec(uuid("abef522a-7378-504f-9406-97d9f42643a7")) __declspec(novtable) IIterable<Windows::UI::Xaml::Controls::RowDefinition> : impl_IIterable<Windows::UI::Xaml::Controls::RowDefinition> {};
#endif

#ifndef WINRT_GENERIC_b4c1e3ac_8768_5b9d_a661_f63330b8507b
#define WINRT_GENERIC_b4c1e3ac_8768_5b9d_a661_f63330b8507b
template <> struct __declspec(uuid("b4c1e3ac-8768-5b9d-a661-f63330b8507b")) __declspec(novtable) IVector<Windows::UI::Xaml::UIElement> : impl_IVector<Windows::UI::Xaml::UIElement> {};
#endif

#ifndef WINRT_GENERIC_8144f56c_1f13_5a8d_835f_5e0c9325bff1
#define WINRT_GENERIC_8144f56c_1f13_5a8d_835f_5e0c9325bff1
template <> struct __declspec(uuid("8144f56c-1f13-5a8d-835f-5e0c9325bff1")) __declspec(novtable) IObservableVector<Windows::UI::Xaml::Controls::GroupStyle> : impl_IObservableVector<Windows::UI::Xaml::Controls::GroupStyle> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_c2925ff8_71f0_59d3_ba13_862b226eeba2
#define WINRT_GENERIC_c2925ff8_71f0_59d3_ba13_862b226eeba2
template <> struct __declspec(uuid("c2925ff8-71f0-59d3-ba13-862b226eeba2")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::MediaTransportControls, Windows::UI::Xaml::Media::MediaTransportControlsThumbnailRequestedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::MediaTransportControls, Windows::UI::Xaml::Media::MediaTransportControlsThumbnailRequestedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_297dde84_d0c7_5d21_b1ed_f96c4ea4772f
#define WINRT_GENERIC_297dde84_d0c7_5d21_b1ed_f96c4ea4772f
template <> struct __declspec(uuid("297dde84-d0c7-5d21-b1ed-f96c4ea4772f")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_c080b01b_eec0_542c_b1f1_d00e207ee1e0
#define WINRT_GENERIC_c080b01b_eec0_542c_b1f1_d00e207ee1e0
template <> struct __declspec(uuid("c080b01b-eec0-542c-b1f1-d00e207ee1e0")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_e6750b95_305f_52fd_bb80_cfcf72bc5421
#define WINRT_GENERIC_e6750b95_305f_52fd_bb80_cfcf72bc5421
template <> struct __declspec(uuid("e6750b95-305f-52fd-bb80-cfcf72bc5421")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_b0b3c248_7604_5108_aec9_6f3aecca2737
#define WINRT_GENERIC_b0b3c248_7604_5108_aec9_6f3aecca2737
template <> struct __declspec(uuid("b0b3c248-7604-5108-aec9-6f3aecca2737")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_fad2ffb9_d2d9_563c_88ca_1323b133fbf3
#define WINRT_GENERIC_fad2ffb9_d2d9_563c_88ca_1323b133fbf3
template <> struct __declspec(uuid("fad2ffb9-d2d9-563c-88ca-1323b133fbf3")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_98fee2a4_211d_5a3d_a832_c5ddeb8444a9
#define WINRT_GENERIC_98fee2a4_211d_5a3d_a832_c5ddeb8444a9
template <> struct __declspec(uuid("98fee2a4-211d-5a3d-a832-c5ddeb8444a9")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_61107067_2cfb_5de1_92b6_d332c17f756e
#define WINRT_GENERIC_61107067_2cfb_5de1_92b6_d332c17f756e
template <> struct __declspec(uuid("61107067-2cfb-5de1-92b6-d332c17f756e")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_b9ac0e9e_5b32_52b7_a8f9_b85e4be14b16
#define WINRT_GENERIC_b9ac0e9e_5b32_52b7_a8f9_b85e4be14b16
template <> struct __declspec(uuid("b9ac0e9e-5b32-52b7-a8f9-b85e4be14b16")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_b6b53bf8_1ac8_51c4_bafc_95f8e01637b0
#define WINRT_GENERIC_b6b53bf8_1ac8_51c4_bafc_95f8e01637b0
template <> struct __declspec(uuid("b6b53bf8-1ac8-51c4-bafc-95f8e01637b0")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_1e65e112_e634_55c3_befb_dbf5cfcb30b1
#define WINRT_GENERIC_1e65e112_e634_55c3_befb_dbf5cfcb30b1
template <> struct __declspec(uuid("1e65e112-e634-55c3-befb-dbf5cfcb30b1")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_c788089d_37ab_5ba2_b865_5a309acdfc4d
#define WINRT_GENERIC_c788089d_37ab_5ba2_b865_5a309acdfc4d
template <> struct __declspec(uuid("c788089d-37ab-5ba2-b865-5a309acdfc4d")) __declspec(novtable) IAsyncOperation<Windows::UI::Xaml::Data::LoadMoreItemsResult> : impl_IAsyncOperation<Windows::UI::Xaml::Data::LoadMoreItemsResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_d0b26b06_16e8_5767_a60b_ee3e32e43dfb
#define WINRT_GENERIC_d0b26b06_16e8_5767_a60b_ee3e32e43dfb
template <> struct __declspec(uuid("d0b26b06-16e8-5767-a60b-ee3e32e43dfb")) __declspec(novtable) IVectorView<Windows::UI::Xaml::Data::ItemIndexRange> : impl_IVectorView<Windows::UI::Xaml::Data::ItemIndexRange> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_586d1c88_e27e_58ad_8e2f_7e6e83d81e40
#define WINRT_GENERIC_586d1c88_e27e_58ad_8e2f_7e6e83d81e40
template <> struct __declspec(uuid("586d1c88-e27e-58ad-8e2f-7e6e83d81e40")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_f06fc999_61e1_5d3f_b0ac_69f2ee9e4d64
#define WINRT_GENERIC_f06fc999_61e1_5d3f_b0ac_69f2ee9e4d64
template <> struct __declspec(uuid("f06fc999-61e1-5d3f-b0ac-69f2ee9e4d64")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs> {};
#endif

#ifndef WINRT_GENERIC_4f5971d1_bae9_56f4_acd6_0a8246a6f255
#define WINRT_GENERIC_4f5971d1_bae9_56f4_acd6_0a8246a6f255
template <> struct __declspec(uuid("4f5971d1-bae9-56f4-acd6-0a8246a6f255")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_7bca64fd_150c_5d50_b56b_9f4f474c5930
#define WINRT_GENERIC_7bca64fd_150c_5d50_b56b_9f4f474c5930
template <> struct __declspec(uuid("7bca64fd-150c-5d50-b56b-9f4f474c5930")) __declspec(novtable) IVectorView<float> : impl_IVectorView<float> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_6a74874e_f6b3_5c39_9e5f_1751b782bb32
#define WINRT_GENERIC_6a74874e_f6b3_5c39_9e5f_1751b782bb32
template <> struct __declspec(uuid("6a74874e-f6b3-5c39-9e5f-1751b782bb32")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::CalendarView, Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::CalendarView, Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_135a5f72_a818_54a8_b955_dff2593a3bf5
#define WINRT_GENERIC_135a5f72_a818_54a8_b955_dff2593a3bf5
template <> struct __declspec(uuid("135a5f72-a818-54a8-b955-dff2593a3bf5")) __declspec(novtable) IVectorView<Windows::Foundation::DateTime> : impl_IVectorView<Windows::Foundation::DateTime> {};
#endif

#ifndef WINRT_GENERIC_8e47087a_3ce3_57dc_a583_7db9bf188fc4
#define WINRT_GENERIC_8e47087a_3ce3_57dc_a583_7db9bf188fc4
template <> struct __declspec(uuid("8e47087a-3ce3-57dc-a583-7db9bf188fc4")) __declspec(novtable) IVector<Windows::UI::Xaml::Controls::HubSection> : impl_IVector<Windows::UI::Xaml::Controls::HubSection> {};
#endif

#ifndef WINRT_GENERIC_558c4082_463a_5c3d_b51e_10921b4a4d6c
#define WINRT_GENERIC_558c4082_463a_5c3d_b51e_10921b4a4d6c
template <> struct __declspec(uuid("558c4082-463a-5c3d-b51e-10921b4a4d6c")) __declspec(novtable) IIterable<Windows::UI::Xaml::Controls::HubSection> : impl_IIterable<Windows::UI::Xaml::Controls::HubSection> {};
#endif

#ifndef WINRT_GENERIC_f7f1c37b_b4df_5128_a476_fc8399bc10af
#define WINRT_GENERIC_f7f1c37b_b4df_5128_a476_fc8399bc10af
template <> struct __declspec(uuid("f7f1c37b-b4df-5128-a476-fc8399bc10af")) __declspec(novtable) IVector<Windows::UI::Xaml::Controls::MenuFlyoutItemBase> : impl_IVector<Windows::UI::Xaml::Controls::MenuFlyoutItemBase> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_b402b0ca_beca_5537_8192_8f30f7cb5d0e
#define WINRT_GENERIC_b402b0ca_beca_5537_8192_8f30f7cb5d0e
template <> struct __declspec(uuid("b402b0ca-beca-5537-8192-8f30f7cb5d0e")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::MediaElement, Windows::UI::Xaml::Media::PartialMediaFailureDetectedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::MediaElement, Windows::UI::Xaml::Media::PartialMediaFailureDetectedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_98055b5a_36bb_5962_971f_8b87619eb17e
#define WINRT_GENERIC_98055b5a_36bb_5962_971f_8b87619eb17e
template <> struct __declspec(uuid("98055b5a-36bb-5962-971f-8b87619eb17e")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_e7b42a9a_f140_52ad_a658_e237b9a3dcca
#define WINRT_GENERIC_e7b42a9a_f140_52ad_a658_e237b9a3dcca
template <> struct __declspec(uuid("e7b42a9a-f140-52ad-a658-e237b9a3dcca")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_b9cc891c_4745_5a25_9845_e44d13425a38
#define WINRT_GENERIC_b9cc891c_4745_5a25_9845_e44d13425a38
template <> struct __declspec(uuid("b9cc891c-4745-5a25-9845-e44d13425a38")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_a16f2d07_ead3_53e4_9490_75bdbaeb7a5b
#define WINRT_GENERIC_a16f2d07_ead3_53e4_9490_75bdbaeb7a5b
template <> struct __declspec(uuid("a16f2d07-ead3-53e4-9490-75bdbaeb7a5b")) __declspec(novtable) IAsyncOperation<Windows::ApplicationModel::DataTransfer::DataPackage> : impl_IAsyncOperation<Windows::ApplicationModel::DataTransfer::DataPackage> {};
#endif

#ifndef WINRT_GENERIC_411136f7_770d_599c_8545_6d053a6a1799
#define WINRT_GENERIC_411136f7_770d_599c_8545_6d053a6a1799
template <> struct __declspec(uuid("411136f7-770d-599c-8545-6d053a6a1799")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_ecdc76ef_a99b_5ce7_b9a4_c85e66fed1ee
#define WINRT_GENERIC_ecdc76ef_a99b_5ce7_b9a4_c85e66fed1ee
template <> struct __declspec(uuid("ecdc76ef-a99b-5ce7-b9a4-c85e66fed1ee")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_d9f52e0d_21fb_5a0b_b4c6_7d162af7fb9c
#define WINRT_GENERIC_d9f52e0d_21fb_5a0b_b4c6_7d162af7fb9c
template <> struct __declspec(uuid("d9f52e0d-21fb-5a0b-b4c6-7d162af7fb9c")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::IInspectable> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_f00e9fbf_d30e_5854_8927_c9512abd8118
#define WINRT_GENERIC_f00e9fbf_d30e_5854_8927_c9512abd8118
template <> struct __declspec(uuid("f00e9fbf-d30e-5854-8927-c9512abd8118")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_ee0e5bc7_4440_5970_a878_2d351e00931a
#define WINRT_GENERIC_ee0e5bc7_4440_5970_a878_2d351e00931a
template <> struct __declspec(uuid("ee0e5bc7-4440-5970-a878-2d351e00931a")) __declspec(novtable) IVector<Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest> : impl_IVector<Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_d304027c_5714_502a_9312_68ca86397124
#define WINRT_GENERIC_d304027c_5714_502a_9312_68ca86397124
template <> struct __declspec(uuid("d304027c-5714-502a-9312-68ca86397124")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_a8d0aff5_90e1_5921_87dd_576a4b0a95b6
#define WINRT_GENERIC_a8d0aff5_90e1_5921_87dd_576a4b0a95b6
template <> struct __declspec(uuid("a8d0aff5-90e1-5921-87dd-576a4b0a95b6")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_718c7a23_eb9f_50a6_8cf7_fbac104e59c3
#define WINRT_GENERIC_718c7a23_eb9f_50a6_8cf7_fbac104e59c3
template <> struct __declspec(uuid("718c7a23-eb9f-50a6-8cf7-fbac104e59c3")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_5ff44775_026e_51db_b462_44c19c45a777
#define WINRT_GENERIC_5ff44775_026e_51db_b462_44c19c45a777
template <> struct __declspec(uuid("5ff44775-026e-51db-b462-44c19c45a777")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::CalendarDatePicker, Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::CalendarDatePicker, Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_94390dc5_e442_5870_88b6_007e232f902c
#define WINRT_GENERIC_94390dc5_e442_5870_88b6_007e232f902c
template <> struct __declspec(uuid("94390dc5-e442-5870-88b6-007e232f902c")) __declspec(novtable) IVector<Windows::Foundation::DateTime> : impl_IVector<Windows::Foundation::DateTime> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_d22361ee_5234_5d25_a53b_79a5ff6a03b8
#define WINRT_GENERIC_d22361ee_5234_5d25_a53b_79a5ff6a03b8
template <> struct __declspec(uuid("d22361ee-5234-5d25-a53b-79a5ff6a03b8")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::CalendarView, Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::CalendarView, Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_932eef5e_2c2f_5eae_929a_74e973b57c27
#define WINRT_GENERIC_932eef5e_2c2f_5eae_929a_74e973b57c27
template <> struct __declspec(uuid("932eef5e-2c2f-5eae-929a-74e973b57c27")) __declspec(novtable) IIterable<Windows::UI::Color> : impl_IIterable<Windows::UI::Color> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_18a84f8e_c1ec_5b25_ac98_818267e6f9a4
#define WINRT_GENERIC_18a84f8e_c1ec_5b25_ac98_818267e6f9a4
template <> struct __declspec(uuid("18a84f8e-c1ec-5b25-ac98-818267e6f9a4")) __declspec(novtable) EventHandler<Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs> : impl_EventHandler<Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_b15ccc28_40f3_52da_9011_87621e9c60ea
#define WINRT_GENERIC_b15ccc28_40f3_52da_9011_87621e9c60ea
template <> struct __declspec(uuid("b15ccc28-40f3-52da-9011-87621e9c60ea")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_287dd4fe_12fc_5289_ab8a_7c7217024a6b
#define WINRT_GENERIC_287dd4fe_12fc_5289_ab8a_7c7217024a6b
template <> struct __declspec(uuid("287dd4fe-12fc-5289-ab8a-7c7217024a6b")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_56d6c824_a5b2_51f4_8af7_7b8ee582c029
#define WINRT_GENERIC_56d6c824_a5b2_51f4_8af7_7b8ee582c029
template <> struct __declspec(uuid("56d6c824-a5b2-51f4-8af7-7b8ee582c029")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_8d18767b_a4b8_52fc_8767_f87d05b5172e
#define WINRT_GENERIC_8d18767b_a4b8_52fc_8767_f87d05b5172e
template <> struct __declspec(uuid("8d18767b-a4b8-52fc-8767-f87d05b5172e")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs> {};
#endif

#ifndef WINRT_GENERIC_a16eff3c_cc37_554c_8f10_0f7e6e2bcaad
#define WINRT_GENERIC_a16eff3c_cc37_554c_8f10_0f7e6e2bcaad
template <> struct __declspec(uuid("a16eff3c-cc37-554c-8f10-0f7e6e2bcaad")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::RoutedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::RoutedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_c674a1de_c3d9_5e39_bc39_121fc3cc7d41
#define WINRT_GENERIC_c674a1de_c3d9_5e39_bc39_121fc3cc7d41
template <> struct __declspec(uuid("c674a1de-c3d9-5e39-bc39-121fc3cc7d41")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::SplitView, Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::SplitView, Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_e277bfe5_10c1_5472_9bc6_1ae39aebfc86
#define WINRT_GENERIC_e277bfe5_10c1_5472_9bc6_1ae39aebfc86
template <> struct __declspec(uuid("e277bfe5-10c1-5472-9bc6-1ae39aebfc86")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::SplitView, Windows::IInspectable> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::SplitView, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_ebc4d41b_356a_59ca_b135_0ec34f68c307
#define WINRT_GENERIC_ebc4d41b_356a_59ca_b135_0ec34f68c307
template <> struct __declspec(uuid("ebc4d41b-356a-59ca-b135-0ec34f68c307")) __declspec(novtable) EventHandler<Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs> : impl_EventHandler<Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_7996a97e_615e_5ff5_be3d_0ff9fe43451c
#define WINRT_GENERIC_7996a97e_615e_5ff5_be3d_0ff9fe43451c
template <> struct __declspec(uuid("7996a97e-615e-5ff5-be3d-0ff9fe43451c")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs> {};
#endif

#ifndef WINRT_GENERIC_7e2dc943_5f2f_54fb_816f_8e65e893f90a
#define WINRT_GENERIC_7e2dc943_5f2f_54fb_816f_8e65e893f90a
template <> struct __declspec(uuid("7e2dc943-5f2f-54fb-816f-8e65e893f90a")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_1fa5f243_7045_56cb_bf2d_f5a425025c21
#define WINRT_GENERIC_1fa5f243_7045_56cb_bf2d_f5a425025c21
template <> struct __declspec(uuid("1fa5f243-7045-56cb-bf2d-f5a425025c21")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_30491cfe_fff8_5c91_b387_ce8137713918
#define WINRT_GENERIC_30491cfe_fff8_5c91_b387_ce8137713918
template <> struct __declspec(uuid("30491cfe-fff8-5c91-b387-ce8137713918")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_b040eb41_b4f5_5d9f_83c7_9c939c48c890
#define WINRT_GENERIC_b040eb41_b4f5_5d9f_83c7_9c939c48c890
template <> struct __declspec(uuid("b040eb41-b4f5-5d9f-83c7-9c939c48c890")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_b79b774b_7c7f_580c_8914_e9cb2642432e
#define WINRT_GENERIC_b79b774b_7c7f_580c_8914_e9cb2642432e
template <> struct __declspec(uuid("b79b774b-7c7f-580c-8914-e9cb2642432e")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_4b00de1a_ffed_57b4_bd6e_8c7aab2c53ff
#define WINRT_GENERIC_4b00de1a_ffed_57b4_bd6e_8c7aab2c53ff
template <> struct __declspec(uuid("4b00de1a-ffed-57b4-bd6e-8c7aab2c53ff")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs> {};
#endif

#ifndef WINRT_GENERIC_1f23bdd1_06dc_5be9_9a60_0b4d94d4d72c
#define WINRT_GENERIC_1f23bdd1_06dc_5be9_9a60_0b4d94d4d72c
template <> struct __declspec(uuid("1f23bdd1-06dc-5be9-9a60-0b4d94d4d72c")) __declspec(novtable) IAsyncOperation<winrt::Windows::UI::Xaml::Controls::ContentDialogResult> : impl_IAsyncOperation<winrt::Windows::UI::Xaml::Controls::ContentDialogResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_e561a13f_89a1_5ef2_a3fe_eba1b4539b46
#define WINRT_GENERIC_e561a13f_89a1_5ef2_a3fe_eba1b4539b46
template <> struct __declspec(uuid("e561a13f-89a1-5ef2-a3fe-eba1b4539b46")) __declspec(novtable) IVector<Windows::UI::Xaml::Navigation::PageStackEntry> : impl_IVector<Windows::UI::Xaml::Navigation::PageStackEntry> {};
#endif

#ifndef WINRT_GENERIC_61cf693f_db4c_579f_b905_5dd3d23cfd4d
#define WINRT_GENERIC_61cf693f_db4c_579f_b905_5dd3d23cfd4d
template <> struct __declspec(uuid("61cf693f-db4c-579f-b905-5dd3d23cfd4d")) __declspec(novtable) IVector<float> : impl_IVector<float> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_354c0f34_e691_502a_a444_d5f07aee310e
#define WINRT_GENERIC_354c0f34_e691_502a_a444_d5f07aee310e
template <> struct __declspec(uuid("354c0f34-e691-502a-a444-d5f07aee310e")) __declspec(novtable) EventHandler<Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs> : impl_EventHandler<Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_e0c06ef2_dbc9_511c_bab6_25756dd516a3
#define WINRT_GENERIC_e0c06ef2_dbc9_511c_bab6_25756dd516a3
template <> struct __declspec(uuid("e0c06ef2-dbc9-511c-bab6-25756dd516a3")) __declspec(novtable) EventHandler<Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs> : impl_EventHandler<Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_a8bbf146_b687_5c03_9a42_2ae2d55bfbb4
#define WINRT_GENERIC_a8bbf146_b687_5c03_9a42_2ae2d55bfbb4
template <> struct __declspec(uuid("a8bbf146-b687-5c03-9a42-2ae2d55bfbb4")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::SwapChainPanel, Windows::IInspectable> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::SwapChainPanel, Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_d5644006_717d_512d_8785_b48c17e73468
#define WINRT_GENERIC_d5644006_717d_512d_8785_b48c17e73468
template <> struct __declspec(uuid("d5644006-717d-512d-8785-b48c17e73468")) __declspec(novtable) IObservableVector<Windows::UI::Xaml::Controls::ICommandBarElement> : impl_IObservableVector<Windows::UI::Xaml::Controls::ICommandBarElement> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_758990cd_a4a5_5c0a_aca5_64a629afdbcc
#define WINRT_GENERIC_758990cd_a4a5_5c0a_aca5_64a629afdbcc
template <> struct __declspec(uuid("758990cd-a4a5-5c0a-aca5-64a629afdbcc")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::CommandBar, Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::CommandBar, Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_a8cd84e4_3edf_5172_8f77_10e910e5dc5d
#define WINRT_GENERIC_a8cd84e4_3edf_5172_8f77_10e910e5dc5d
template <> struct __declspec(uuid("a8cd84e4-3edf-5172-8f77-10e910e5dc5d")) __declspec(novtable) IVector<Windows::UI::Xaml::Media::Brush> : impl_IVector<Windows::UI::Xaml::Media::Brush> {};
#endif

#ifndef WINRT_GENERIC_b07e92d5_06b3_5dd2_8d49_349ffbd84634
#define WINRT_GENERIC_b07e92d5_06b3_5dd2_8d49_349ffbd84634
template <> struct __declspec(uuid("b07e92d5-06b3-5dd2-8d49-349ffbd84634")) __declspec(novtable) IIterable<Windows::UI::Xaml::Media::Brush> : impl_IIterable<Windows::UI::Xaml::Media::Brush> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_0c3f6433_66b6_5544_8b9b_8904f4055e92
#define WINRT_GENERIC_0c3f6433_66b6_5544_8b9b_8904f4055e92
template <> struct __declspec(uuid("0c3f6433-66b6-5544-8b9b-8904f4055e92")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::Control, Windows::UI::Xaml::Controls::FocusEngagedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::Control, Windows::UI::Xaml::Controls::FocusEngagedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_38b4535c_2785_5122_96fe_d44f795b9cb2
#define WINRT_GENERIC_38b4535c_2785_5122_96fe_d44f795b9cb2
template <> struct __declspec(uuid("38b4535c-2785-5122-96fe-d44f795b9cb2")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::Control, Windows::UI::Xaml::Controls::FocusDisengagedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::Control, Windows::UI::Xaml::Controls::FocusDisengagedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_eea8b7be_9cba_5129_9b75_4930dc0c2705
#define WINRT_GENERIC_eea8b7be_9cba_5129_9b75_4930dc0c2705
template <> struct __declspec(uuid("eea8b7be-9cba-5129-9b75-4930dc0c2705")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::InkToolbar, Windows::IInspectable> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::InkToolbar, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_4d9c196f_cdd3_54d8_98d9_4f29abbade76
#define WINRT_GENERIC_4d9c196f_cdd3_54d8_98d9_4f29abbade76
template <> struct __declspec(uuid("4d9c196f-cdd3-54d8-98d9-4f29abbade76")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::DatePickerFlyout, Windows::UI::Xaml::Controls::DatePickedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::DatePickerFlyout, Windows::UI::Xaml::Controls::DatePickedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_46c68740_3f79_593f_a85f_4248127948c6
#define WINRT_GENERIC_46c68740_3f79_593f_a85f_4248127948c6
template <> struct __declspec(uuid("46c68740-3f79-593f-a85f-4248127948c6")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::ListPickerFlyout, Windows::UI::Xaml::Controls::ItemsPickedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::ListPickerFlyout, Windows::UI::Xaml::Controls::ItemsPickedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_22cde5b7_4eb7_5ee4_8d28_1f1cbcf68fb0
#define WINRT_GENERIC_22cde5b7_4eb7_5ee4_8d28_1f1cbcf68fb0
template <> struct __declspec(uuid("22cde5b7-4eb7-5ee4-8d28-1f1cbcf68fb0")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::PickerFlyout, Windows::UI::Xaml::Controls::PickerConfirmedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::PickerFlyout, Windows::UI::Xaml::Controls::PickerConfirmedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_7d77980b_a0df_51b1_879b_c23d2de0abbe
#define WINRT_GENERIC_7d77980b_a0df_51b1_879b_c23d2de0abbe
template <> struct __declspec(uuid("7d77980b-a0df-51b1-879b-c23d2de0abbe")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::TimePickerFlyout, Windows::UI::Xaml::Controls::TimePickedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::TimePickerFlyout, Windows::UI::Xaml::Controls::TimePickedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_6b0c4ca2_7feb_5e4e_bf5c_de9f3ac4221c
#define WINRT_GENERIC_6b0c4ca2_7feb_5e4e_bf5c_de9f3ac4221c
template <> struct __declspec(uuid("6b0c4ca2-7feb-5e4e-bf5c-de9f3ac4221c")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::Pivot, Windows::UI::Xaml::Controls::PivotItemEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::Pivot, Windows::UI::Xaml::Controls::PivotItemEventArgs> {};
#endif

#ifndef WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
#define WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
template <> struct __declspec(uuid("c1d3d1a2-ae17-5a5f-b5a2-bdcc8844889a")) __declspec(novtable) AsyncOperationCompletedHandler<bool> : impl_AsyncOperationCompletedHandler<bool> {};
#endif

#ifndef WINRT_GENERIC_b79a741f_7fb5_50ae_9e99_911201ec3d41
#define WINRT_GENERIC_b79a741f_7fb5_50ae_9e99_911201ec3d41
template <> struct __declspec(uuid("b79a741f-7fb5-50ae-9e99-911201ec3d41")) __declspec(novtable) AsyncOperationCompletedHandler<hstring> : impl_AsyncOperationCompletedHandler<hstring> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
#define WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
template <> struct __declspec(uuid("8c304ebb-6615-50a4-8829-879ecd443236")) __declspec(novtable) IIterator<hstring> : impl_IIterator<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_3f08262e_a2e1_5134_9297_e9211f481a2d
#define WINRT_GENERIC_3f08262e_a2e1_5134_9297_e9211f481a2d
template <> struct __declspec(uuid("3f08262e-a2e1-5134-9297-e9211f481a2d")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::IInspectable> : impl_AsyncOperationCompletedHandler<Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_1c157d0f_5efe_5cec_bbd6_0c6ce9af07a5
#define WINRT_GENERIC_1c157d0f_5efe_5cec_bbd6_0c6ce9af07a5
template <> struct __declspec(uuid("1c157d0f-5efe-5cec-bbd6-0c6ce9af07a5")) __declspec(novtable) IIterator<Windows::Foundation::Uri> : impl_IIterator<Windows::Foundation::Uri> {};
#endif

#ifndef WINRT_GENERIC_44a94f2d_04f8_5091_b336_be7892dd10be
#define WINRT_GENERIC_44a94f2d_04f8_5091_b336_be7892dd10be
template <> struct __declspec(uuid("44a94f2d-04f8-5091-b336-be7892dd10be")) __declspec(novtable) IIterator<Windows::IInspectable> : impl_IIterator<Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_1d1f9d60_d53b_57f7_b144_8f7c487846e8
#define WINRT_GENERIC_1d1f9d60_d53b_57f7_b144_8f7c487846e8
template <> struct __declspec(uuid("1d1f9d60-d53b-57f7-b144-8f7c487846e8")) __declspec(novtable) IIterator<Windows::UI::Xaml::UIElement> : impl_IIterator<Windows::UI::Xaml::UIElement> {};
#endif

#ifndef WINRT_GENERIC_264ebc1f_ed90_528e_bf80_e9f7e02c0ee4
#define WINRT_GENERIC_264ebc1f_ed90_528e_bf80_e9f7e02c0ee4
template <> struct __declspec(uuid("264ebc1f-ed90-528e-bf80-e9f7e02c0ee4")) __declspec(novtable) IIterator<Windows::UI::Xaml::Controls::ColumnDefinition> : impl_IIterator<Windows::UI::Xaml::Controls::ColumnDefinition> {};
#endif

#ifndef WINRT_GENERIC_d8eba449_e161_5108_b4fb_70c2424ea198
#define WINRT_GENERIC_d8eba449_e161_5108_b4fb_70c2424ea198
template <> struct __declspec(uuid("d8eba449-e161-5108-b4fb-70c2424ea198")) __declspec(novtable) IVectorView<Windows::UI::Xaml::Controls::ColumnDefinition> : impl_IVectorView<Windows::UI::Xaml::Controls::ColumnDefinition> {};
#endif

#ifndef WINRT_GENERIC_b423a801_d35e_56b9_813b_00889536cb98
#define WINRT_GENERIC_b423a801_d35e_56b9_813b_00889536cb98
template <> struct __declspec(uuid("b423a801-d35e-56b9-813b-00889536cb98")) __declspec(novtable) VectorChangedEventHandler<Windows::IInspectable> : impl_VectorChangedEventHandler<Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_2655d45d_38c6_53f0_8719_f3c3a739c1f9
#define WINRT_GENERIC_2655d45d_38c6_53f0_8719_f3c3a739c1f9
template <> struct __declspec(uuid("2655d45d-38c6-53f0-8719-f3c3a739c1f9")) __declspec(novtable) IIterator<Windows::UI::Xaml::Controls::RowDefinition> : impl_IIterator<Windows::UI::Xaml::Controls::RowDefinition> {};
#endif

#ifndef WINRT_GENERIC_27b5c835_b5ac_5f58_a770_c739f9e6665c
#define WINRT_GENERIC_27b5c835_b5ac_5f58_a770_c739f9e6665c
template <> struct __declspec(uuid("27b5c835-b5ac-5f58-a770-c739f9e6665c")) __declspec(novtable) IVectorView<Windows::UI::Xaml::Controls::RowDefinition> : impl_IVectorView<Windows::UI::Xaml::Controls::RowDefinition> {};
#endif

#ifndef WINRT_GENERIC_f3864c10_14a4_5516_b1d9_63b6579429b1
#define WINRT_GENERIC_f3864c10_14a4_5516_b1d9_63b6579429b1
template <> struct __declspec(uuid("f3864c10-14a4-5516-b1d9-63b6579429b1")) __declspec(novtable) IVectorView<Windows::UI::Xaml::UIElement> : impl_IVectorView<Windows::UI::Xaml::UIElement> {};
#endif

#ifndef WINRT_GENERIC_2caa8225_b3d4_5725_b0cf_5e6e61453b23
#define WINRT_GENERIC_2caa8225_b3d4_5725_b0cf_5e6e61453b23
template <> struct __declspec(uuid("2caa8225-b3d4-5725-b0cf-5e6e61453b23")) __declspec(novtable) VectorChangedEventHandler<Windows::UI::Xaml::Controls::GroupStyle> : impl_VectorChangedEventHandler<Windows::UI::Xaml::Controls::GroupStyle> {};
#endif

#ifndef WINRT_GENERIC_4b1bfdea_343f_5b34_96f4_753d57227eb9
#define WINRT_GENERIC_4b1bfdea_343f_5b34_96f4_753d57227eb9
template <> struct __declspec(uuid("4b1bfdea-343f-5b34-96f4-753d57227eb9")) __declspec(novtable) IIterator<Windows::UI::Xaml::Controls::GroupStyle> : impl_IIterator<Windows::UI::Xaml::Controls::GroupStyle> {};
#endif

#ifndef WINRT_GENERIC_89be2766_2a52_5790_ad0e_d5cae305b07c
#define WINRT_GENERIC_89be2766_2a52_5790_ad0e_d5cae305b07c
template <> struct __declspec(uuid("89be2766-2a52-5790-ad0e-d5cae305b07c")) __declspec(novtable) IIterable<Windows::UI::Xaml::Controls::GroupStyle> : impl_IIterable<Windows::UI::Xaml::Controls::GroupStyle> {};
#endif

#ifndef WINRT_GENERIC_9abc1b42_9b12_5178_a898_bb33f04ece9d
#define WINRT_GENERIC_9abc1b42_9b12_5178_a898_bb33f04ece9d
template <> struct __declspec(uuid("9abc1b42-9b12-5178-a898-bb33f04ece9d")) __declspec(novtable) IVectorView<Windows::UI::Xaml::Controls::GroupStyle> : impl_IVectorView<Windows::UI::Xaml::Controls::GroupStyle> {};
#endif

#ifndef WINRT_GENERIC_bfb6a4c1_12bb_5f22_a08a_8ebab3864396
#define WINRT_GENERIC_bfb6a4c1_12bb_5f22_a08a_8ebab3864396
template <> struct __declspec(uuid("bfb6a4c1-12bb-5f22-a08a-8ebab3864396")) __declspec(novtable) IVector<Windows::UI::Xaml::Controls::GroupStyle> : impl_IVector<Windows::UI::Xaml::Controls::GroupStyle> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_10fb738b_a63b_506e_9ed7_2eab37915221
#define WINRT_GENERIC_10fb738b_a63b_506e_9ed7_2eab37915221
template <> struct __declspec(uuid("10fb738b-a63b-506e-9ed7-2eab37915221")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::UI::Xaml::Data::LoadMoreItemsResult> : impl_AsyncOperationCompletedHandler<Windows::UI::Xaml::Data::LoadMoreItemsResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_9c223a26_0c81_59f6_a909_ba4966b4cf24
#define WINRT_GENERIC_9c223a26_0c81_59f6_a909_ba4966b4cf24
template <> struct __declspec(uuid("9c223a26-0c81-59f6-a909-ba4966b4cf24")) __declspec(novtable) IIterator<Windows::UI::Xaml::Data::ItemIndexRange> : impl_IIterator<Windows::UI::Xaml::Data::ItemIndexRange> {};
#endif

#ifndef WINRT_GENERIC_273b8073_8c16_59c2_a616_0a534483c612
#define WINRT_GENERIC_273b8073_8c16_59c2_a616_0a534483c612
template <> struct __declspec(uuid("273b8073-8c16-59c2-a616-0a534483c612")) __declspec(novtable) IIterable<Windows::UI::Xaml::Data::ItemIndexRange> : impl_IIterable<Windows::UI::Xaml::Data::ItemIndexRange> {};
#endif

#ifndef WINRT_GENERIC_42614e61_b0aa_5e72_9354_2771db20b7a8
#define WINRT_GENERIC_42614e61_b0aa_5e72_9354_2771db20b7a8
template <> struct __declspec(uuid("42614e61-b0aa-5e72-9354-2771db20b7a8")) __declspec(novtable) IIterator<float> : impl_IIterator<float> {};
#endif

#ifndef WINRT_GENERIC_b01bee51_063a_5fda_bd72_d76637bb8cb8
#define WINRT_GENERIC_b01bee51_063a_5fda_bd72_d76637bb8cb8
template <> struct __declspec(uuid("b01bee51-063a-5fda-bd72-d76637bb8cb8")) __declspec(novtable) IIterable<float> : impl_IIterable<float> {};
#endif

#ifndef WINRT_GENERIC_f56158df_8947_5480_96ed_36c1057877ea
#define WINRT_GENERIC_f56158df_8947_5480_96ed_36c1057877ea
template <> struct __declspec(uuid("f56158df-8947-5480-96ed-36c1057877ea")) __declspec(novtable) IIterator<Windows::Foundation::DateTime> : impl_IIterator<Windows::Foundation::DateTime> {};
#endif

#ifndef WINRT_GENERIC_576a207d_977c_5b36_b54d_624ec86c53a3
#define WINRT_GENERIC_576a207d_977c_5b36_b54d_624ec86c53a3
template <> struct __declspec(uuid("576a207d-977c-5b36-b54d-624ec86c53a3")) __declspec(novtable) IIterable<Windows::Foundation::DateTime> : impl_IIterable<Windows::Foundation::DateTime> {};
#endif

#ifndef WINRT_GENERIC_4f845272_f53e_5652_b008_a8fbf1e091ef
#define WINRT_GENERIC_4f845272_f53e_5652_b008_a8fbf1e091ef
template <> struct __declspec(uuid("4f845272-f53e-5652-b008-a8fbf1e091ef")) __declspec(novtable) IIterator<Windows::UI::Xaml::Controls::HubSection> : impl_IIterator<Windows::UI::Xaml::Controls::HubSection> {};
#endif

#ifndef WINRT_GENERIC_19452449_44eb_54a4_92f5_12161eda9bd7
#define WINRT_GENERIC_19452449_44eb_54a4_92f5_12161eda9bd7
template <> struct __declspec(uuid("19452449-44eb-54a4-92f5-12161eda9bd7")) __declspec(novtable) IVectorView<Windows::UI::Xaml::Controls::HubSection> : impl_IVectorView<Windows::UI::Xaml::Controls::HubSection> {};
#endif

#ifndef WINRT_GENERIC_2a8a81ef_f351_50a7_bcdc_8368df215280
#define WINRT_GENERIC_2a8a81ef_f351_50a7_bcdc_8368df215280
template <> struct __declspec(uuid("2a8a81ef-f351-50a7-bcdc-8368df215280")) __declspec(novtable) IIterator<Windows::UI::Xaml::Controls::MenuFlyoutItemBase> : impl_IIterator<Windows::UI::Xaml::Controls::MenuFlyoutItemBase> {};
#endif

#ifndef WINRT_GENERIC_0bb14d64_cc9a_58ae_b881_73fe0ecb99eb
#define WINRT_GENERIC_0bb14d64_cc9a_58ae_b881_73fe0ecb99eb
template <> struct __declspec(uuid("0bb14d64-cc9a-58ae-b881-73fe0ecb99eb")) __declspec(novtable) IIterable<Windows::UI::Xaml::Controls::MenuFlyoutItemBase> : impl_IIterable<Windows::UI::Xaml::Controls::MenuFlyoutItemBase> {};
#endif

#ifndef WINRT_GENERIC_a59e9e24_f5a6_5272_a97b_7dd01a3efdd0
#define WINRT_GENERIC_a59e9e24_f5a6_5272_a97b_7dd01a3efdd0
template <> struct __declspec(uuid("a59e9e24-f5a6-5272-a97b-7dd01a3efdd0")) __declspec(novtable) IVectorView<Windows::UI::Xaml::Controls::MenuFlyoutItemBase> : impl_IVectorView<Windows::UI::Xaml::Controls::MenuFlyoutItemBase> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_a93a3b99_e946_57ce_aad9_c23d138c353e
#define WINRT_GENERIC_a93a3b99_e946_57ce_aad9_c23d138c353e
template <> struct __declspec(uuid("a93a3b99-e946-57ce-aad9-c23d138c353e")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::ApplicationModel::DataTransfer::DataPackage> : impl_AsyncOperationCompletedHandler<Windows::ApplicationModel::DataTransfer::DataPackage> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_a6ed0a56_801b_5301_95ba_df84d027a977
#define WINRT_GENERIC_a6ed0a56_801b_5301_95ba_df84d027a977
template <> struct __declspec(uuid("a6ed0a56-801b-5301-95ba-df84d027a977")) __declspec(novtable) IIterator<Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest> : impl_IIterator<Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest> {};
#endif

#ifndef WINRT_GENERIC_3981a977_da6c_5450_823e_7dd23b91f2bc
#define WINRT_GENERIC_3981a977_da6c_5450_823e_7dd23b91f2bc
template <> struct __declspec(uuid("3981a977-da6c-5450-823e-7dd23b91f2bc")) __declspec(novtable) IIterable<Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest> : impl_IIterable<Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest> {};
#endif

#ifndef WINRT_GENERIC_2065ae49_5ad7_5a34_9f78_bad1308f4e5d
#define WINRT_GENERIC_2065ae49_5ad7_5a34_9f78_bad1308f4e5d
template <> struct __declspec(uuid("2065ae49-5ad7-5a34-9f78-bad1308f4e5d")) __declspec(novtable) IVectorView<Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest> : impl_IVectorView<Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest> {};
#endif

#ifndef WINRT_GENERIC_c4310b12_7ac2_5e5b_b511_e546eea473b4
#define WINRT_GENERIC_c4310b12_7ac2_5e5b_b511_e546eea473b4
template <> struct __declspec(uuid("c4310b12-7ac2-5e5b-b511-e546eea473b4")) __declspec(novtable) IIterator<Windows::UI::Color> : impl_IIterator<Windows::UI::Color> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_45c7a306_e330_54d6_a9ba_61c91f93f53b
#define WINRT_GENERIC_45c7a306_e330_54d6_a9ba_61c91f93f53b
template <> struct __declspec(uuid("45c7a306-e330-54d6-a9ba-61c91f93f53b")) __declspec(novtable) AsyncOperationCompletedHandler<winrt::Windows::UI::Xaml::Controls::ContentDialogResult> : impl_AsyncOperationCompletedHandler<winrt::Windows::UI::Xaml::Controls::ContentDialogResult> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_b89ca96c_ded1_53bd_8744_caa84e87ba87
#define WINRT_GENERIC_b89ca96c_ded1_53bd_8744_caa84e87ba87
template <> struct __declspec(uuid("b89ca96c-ded1-53bd-8744-caa84e87ba87")) __declspec(novtable) IIterator<Windows::UI::Xaml::Navigation::PageStackEntry> : impl_IIterator<Windows::UI::Xaml::Navigation::PageStackEntry> {};
#endif

#ifndef WINRT_GENERIC_dd2278a5_4c14_5967_8a41_9a47c3c5c4a7
#define WINRT_GENERIC_dd2278a5_4c14_5967_8a41_9a47c3c5c4a7
template <> struct __declspec(uuid("dd2278a5-4c14-5967-8a41-9a47c3c5c4a7")) __declspec(novtable) IIterable<Windows::UI::Xaml::Navigation::PageStackEntry> : impl_IIterable<Windows::UI::Xaml::Navigation::PageStackEntry> {};
#endif

#ifndef WINRT_GENERIC_af6d7eac_086f_5c5f_be4b_0858af7506f7
#define WINRT_GENERIC_af6d7eac_086f_5c5f_be4b_0858af7506f7
template <> struct __declspec(uuid("af6d7eac-086f-5c5f-be4b-0858af7506f7")) __declspec(novtable) IVectorView<Windows::UI::Xaml::Navigation::PageStackEntry> : impl_IVectorView<Windows::UI::Xaml::Navigation::PageStackEntry> {};
#endif

#ifndef WINRT_GENERIC_20b884e1_c1da_5332_b801_4f1c21744ac8
#define WINRT_GENERIC_20b884e1_c1da_5332_b801_4f1c21744ac8
template <> struct __declspec(uuid("20b884e1-c1da-5332-b801-4f1c21744ac8")) __declspec(novtable) VectorChangedEventHandler<Windows::UI::Xaml::Controls::ICommandBarElement> : impl_VectorChangedEventHandler<Windows::UI::Xaml::Controls::ICommandBarElement> {};
#endif

#ifndef WINRT_GENERIC_cddb0380_e9d7_5264_ab5c_d72b642874c9
#define WINRT_GENERIC_cddb0380_e9d7_5264_ab5c_d72b642874c9
template <> struct __declspec(uuid("cddb0380-e9d7-5264-ab5c-d72b642874c9")) __declspec(novtable) IIterator<Windows::UI::Xaml::Controls::ICommandBarElement> : impl_IIterator<Windows::UI::Xaml::Controls::ICommandBarElement> {};
#endif

#ifndef WINRT_GENERIC_d4c5a8e7_0d5e_5922_a7b4_59b5e634d335
#define WINRT_GENERIC_d4c5a8e7_0d5e_5922_a7b4_59b5e634d335
template <> struct __declspec(uuid("d4c5a8e7-0d5e-5922-a7b4-59b5e634d335")) __declspec(novtable) IIterable<Windows::UI::Xaml::Controls::ICommandBarElement> : impl_IIterable<Windows::UI::Xaml::Controls::ICommandBarElement> {};
#endif

#ifndef WINRT_GENERIC_a38e89ec_f1a4_5d7b_97c3_8aefb64a5f43
#define WINRT_GENERIC_a38e89ec_f1a4_5d7b_97c3_8aefb64a5f43
template <> struct __declspec(uuid("a38e89ec-f1a4-5d7b-97c3-8aefb64a5f43")) __declspec(novtable) IVectorView<Windows::UI::Xaml::Controls::ICommandBarElement> : impl_IVectorView<Windows::UI::Xaml::Controls::ICommandBarElement> {};
#endif

#ifndef WINRT_GENERIC_18ad7c66_a127_550f_8325_8cf1789176c1
#define WINRT_GENERIC_18ad7c66_a127_550f_8325_8cf1789176c1
template <> struct __declspec(uuid("18ad7c66-a127-550f-8325-8cf1789176c1")) __declspec(novtable) IVector<Windows::UI::Xaml::Controls::ICommandBarElement> : impl_IVector<Windows::UI::Xaml::Controls::ICommandBarElement> {};
#endif

#ifndef WINRT_GENERIC_5d4853d4_3f43_5aba_a074_f21b30927bf6
#define WINRT_GENERIC_5d4853d4_3f43_5aba_a074_f21b30927bf6
template <> struct __declspec(uuid("5d4853d4-3f43-5aba-a074-f21b30927bf6")) __declspec(novtable) IIterator<Windows::UI::Xaml::Media::Brush> : impl_IIterator<Windows::UI::Xaml::Media::Brush> {};
#endif

#ifndef WINRT_GENERIC_2c463363_ef52_5dd5_ba90_415d8933bec9
#define WINRT_GENERIC_2c463363_ef52_5dd5_ba90_415d8933bec9
template <> struct __declspec(uuid("2c463363-ef52-5dd5-ba90-415d8933bec9")) __declspec(novtable) IVectorView<Windows::UI::Xaml::Media::Brush> : impl_IVectorView<Windows::UI::Xaml::Media::Brush> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_2f92b529_119b_575a_a419_3904b4e41af2
#define WINRT_GENERIC_2f92b529_119b_575a_a419_3904b4e41af2
template <> struct __declspec(uuid("2f92b529-119b-575a-a419-3904b4e41af2")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<hstring>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<hstring>> {};
#endif

#ifndef WINRT_GENERIC_2025b34f_4214_56ab_abfe_2fbe6595da9d
#define WINRT_GENERIC_2025b34f_4214_56ab_abfe_2fbe6595da9d
template <> struct __declspec(uuid("2025b34f-4214-56ab-abfe-2fbe6595da9d")) __declspec(novtable) IAsyncOperation<Windows::Foundation::IReference<Windows::Foundation::DateTime>> : impl_IAsyncOperation<Windows::Foundation::IReference<Windows::Foundation::DateTime>> {};
#endif

#ifndef WINRT_GENERIC_d671d332_22aa_5597_8dcc_2459eab49418
#define WINRT_GENERIC_d671d332_22aa_5597_8dcc_2459eab49418
template <> struct __declspec(uuid("d671d332-22aa-5597-8dcc-2459eab49418")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::IInspectable>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::IInspectable>> {};
#endif

#ifndef WINRT_GENERIC_24a901ad_910f_5c0f_b23c_67007577a558
#define WINRT_GENERIC_24a901ad_910f_5c0f_b23c_67007577a558
template <> struct __declspec(uuid("24a901ad-910f-5c0f-b23c-67007577a558")) __declspec(novtable) IAsyncOperation<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> : impl_IAsyncOperation<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> {};
#endif

#ifndef WINRT_GENERIC_7c7899be_5f2e_5bf3_ade5_ad98b772c7cd
#define WINRT_GENERIC_7c7899be_5f2e_5bf3_ade5_ad98b772c7cd
template <> struct __declspec(uuid("7c7899be-5f2e-5bf3-ade5-ad98b772c7cd")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<hstring>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<hstring>> {};
#endif

#ifndef WINRT_GENERIC_c4225d5e_1b7c_571e_9b88_2ab2eefa8c8f
#define WINRT_GENERIC_c4225d5e_1b7c_571e_9b88_2ab2eefa8c8f
template <> struct __declspec(uuid("c4225d5e-1b7c-571e-9b88-2ab2eefa8c8f")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::IReference<Windows::Foundation::DateTime>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::IReference<Windows::Foundation::DateTime>> {};
#endif

#ifndef WINRT_GENERIC_261a9d81_f58f_5283_9461_ca3e31c1123c
#define WINRT_GENERIC_261a9d81_f58f_5283_9461_ca3e31c1123c
template <> struct __declspec(uuid("261a9d81-f58f-5283-9461-ca3e31c1123c")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::IInspectable>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::IInspectable>> {};
#endif

#ifndef WINRT_GENERIC_e137b677_bfef_54b0_b200_95c5c2902a25
#define WINRT_GENERIC_e137b677_bfef_54b0_b200_95c5c2902a25
template <> struct __declspec(uuid("e137b677-bfef-54b0-b200-95c5c2902a25")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> {};
#endif


}

namespace Windows::UI::Xaml::Controls {

template <typename D>
struct WINRT_EBO impl_IAppBar
{
    bool IsOpen() const;
    void IsOpen(bool value) const;
    bool IsSticky() const;
    void IsSticky(bool value) const;
    event_token Opened(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using Opened_revoker = event_revoker<IAppBar>;
    Opened_revoker Opened(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void Opened(event_token token) const;
    event_token Closed(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using Closed_revoker = event_revoker<IAppBar>;
    Closed_revoker Closed(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void Closed(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBar2
{
    Windows::UI::Xaml::Controls::AppBarClosedDisplayMode ClosedDisplayMode() const;
    void ClosedDisplayMode(Windows::UI::Xaml::Controls::AppBarClosedDisplayMode value) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBar3
{
    Windows::UI::Xaml::Controls::Primitives::AppBarTemplateSettings TemplateSettings() const;
    event_token Opening(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using Opening_revoker = event_revoker<IAppBar3>;
    Opening_revoker Opening(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void Opening(event_token token) const;
    event_token Closing(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using Closing_revoker = event_revoker<IAppBar3>;
    Closing_revoker Closing(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void Closing(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBar4
{
    Windows::UI::Xaml::Controls::LightDismissOverlayMode LightDismissOverlayMode() const;
    void LightDismissOverlayMode(Windows::UI::Xaml::Controls::LightDismissOverlayMode value) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarButton
{
    hstring Label() const;
    void Label(hstring_ref value) const;
    Windows::UI::Xaml::Controls::IconElement Icon() const;
    void Icon(const Windows::UI::Xaml::Controls::IconElement & value) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarButton3
{
    Windows::UI::Xaml::Controls::CommandBarLabelPosition LabelPosition() const;
    void LabelPosition(Windows::UI::Xaml::Controls::CommandBarLabelPosition value) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarButtonFactory
{
    Windows::UI::Xaml::Controls::AppBarButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarButtonStatics
{
    Windows::UI::Xaml::DependencyProperty LabelProperty() const;
    Windows::UI::Xaml::DependencyProperty IconProperty() const;
    Windows::UI::Xaml::DependencyProperty IsCompactProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarButtonStatics3
{
    Windows::UI::Xaml::DependencyProperty LabelPositionProperty() const;
    Windows::UI::Xaml::DependencyProperty IsInOverflowProperty() const;
    Windows::UI::Xaml::DependencyProperty DynamicOverflowOrderProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarFactory
{
    Windows::UI::Xaml::Controls::AppBar CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarOverrides
{
    void OnClosed(const Windows::IInspectable & e) const;
    void OnOpened(const Windows::IInspectable & e) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarOverrides3
{
    void OnClosing(const Windows::IInspectable & e) const;
    void OnOpening(const Windows::IInspectable & e) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarSeparator
{
};

template <typename D>
struct WINRT_EBO impl_IAppBarSeparatorFactory
{
    Windows::UI::Xaml::Controls::AppBarSeparator CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarSeparatorStatics
{
    Windows::UI::Xaml::DependencyProperty IsCompactProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarSeparatorStatics3
{
    Windows::UI::Xaml::DependencyProperty IsInOverflowProperty() const;
    Windows::UI::Xaml::DependencyProperty DynamicOverflowOrderProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarStatics
{
    Windows::UI::Xaml::DependencyProperty IsOpenProperty() const;
    Windows::UI::Xaml::DependencyProperty IsStickyProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarStatics2
{
    Windows::UI::Xaml::DependencyProperty ClosedDisplayModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarStatics4
{
    Windows::UI::Xaml::DependencyProperty LightDismissOverlayModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarToggleButton
{
    hstring Label() const;
    void Label(hstring_ref value) const;
    Windows::UI::Xaml::Controls::IconElement Icon() const;
    void Icon(const Windows::UI::Xaml::Controls::IconElement & value) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarToggleButton3
{
    Windows::UI::Xaml::Controls::CommandBarLabelPosition LabelPosition() const;
    void LabelPosition(Windows::UI::Xaml::Controls::CommandBarLabelPosition value) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarToggleButtonFactory
{
    Windows::UI::Xaml::Controls::AppBarToggleButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarToggleButtonStatics
{
    Windows::UI::Xaml::DependencyProperty LabelProperty() const;
    Windows::UI::Xaml::DependencyProperty IconProperty() const;
    Windows::UI::Xaml::DependencyProperty IsCompactProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAppBarToggleButtonStatics3
{
    Windows::UI::Xaml::DependencyProperty LabelPositionProperty() const;
    Windows::UI::Xaml::DependencyProperty IsInOverflowProperty() const;
    Windows::UI::Xaml::DependencyProperty DynamicOverflowOrderProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAutoSuggestBox
{
    double MaxSuggestionListHeight() const;
    void MaxSuggestionListHeight(double value) const;
    bool IsSuggestionListOpen() const;
    void IsSuggestionListOpen(bool value) const;
    hstring TextMemberPath() const;
    void TextMemberPath(hstring_ref value) const;
    hstring Text() const;
    void Text(hstring_ref value) const;
    bool UpdateTextOnSelect() const;
    void UpdateTextOnSelect(bool value) const;
    hstring PlaceholderText() const;
    void PlaceholderText(hstring_ref value) const;
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    bool AutoMaximizeSuggestionArea() const;
    void AutoMaximizeSuggestionArea(bool value) const;
    Windows::UI::Xaml::Style TextBoxStyle() const;
    void TextBoxStyle(const Windows::UI::Xaml::Style & value) const;
    event_token SuggestionChosen(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs> & value) const;
    using SuggestionChosen_revoker = event_revoker<IAutoSuggestBox>;
    SuggestionChosen_revoker SuggestionChosen(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxSuggestionChosenEventArgs> & value) const;
    void SuggestionChosen(event_token token) const;
    event_token TextChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs> & value) const;
    using TextChanged_revoker = event_revoker<IAutoSuggestBox>;
    TextChanged_revoker TextChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxTextChangedEventArgs> & value) const;
    void TextChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IAutoSuggestBox2
{
    Windows::UI::Xaml::Controls::IconElement QueryIcon() const;
    void QueryIcon(const Windows::UI::Xaml::Controls::IconElement & value) const;
    event_token QuerySubmitted(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs> & value) const;
    using QuerySubmitted_revoker = event_revoker<IAutoSuggestBox2>;
    QuerySubmitted_revoker QuerySubmitted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::AutoSuggestBox, Windows::UI::Xaml::Controls::AutoSuggestBoxQuerySubmittedEventArgs> & value) const;
    void QuerySubmitted(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IAutoSuggestBox3
{
    Windows::UI::Xaml::Controls::LightDismissOverlayMode LightDismissOverlayMode() const;
    void LightDismissOverlayMode(Windows::UI::Xaml::Controls::LightDismissOverlayMode value) const;
};

template <typename D>
struct WINRT_EBO impl_IAutoSuggestBoxQuerySubmittedEventArgs
{
    hstring QueryText() const;
    Windows::IInspectable ChosenSuggestion() const;
};

template <typename D>
struct WINRT_EBO impl_IAutoSuggestBoxStatics
{
    Windows::UI::Xaml::DependencyProperty MaxSuggestionListHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty IsSuggestionListOpenProperty() const;
    Windows::UI::Xaml::DependencyProperty TextMemberPathProperty() const;
    Windows::UI::Xaml::DependencyProperty TextProperty() const;
    Windows::UI::Xaml::DependencyProperty UpdateTextOnSelectProperty() const;
    Windows::UI::Xaml::DependencyProperty PlaceholderTextProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty AutoMaximizeSuggestionAreaProperty() const;
    Windows::UI::Xaml::DependencyProperty TextBoxStyleProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAutoSuggestBoxStatics2
{
    Windows::UI::Xaml::DependencyProperty QueryIconProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAutoSuggestBoxStatics3
{
    Windows::UI::Xaml::DependencyProperty LightDismissOverlayModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IAutoSuggestBoxSuggestionChosenEventArgs
{
    Windows::IInspectable SelectedItem() const;
};

template <typename D>
struct WINRT_EBO impl_IAutoSuggestBoxTextChangedEventArgs
{
    Windows::UI::Xaml::Controls::AutoSuggestionBoxTextChangeReason Reason() const;
    void Reason(Windows::UI::Xaml::Controls::AutoSuggestionBoxTextChangeReason value) const;
    bool CheckCurrent() const;
};

template <typename D>
struct WINRT_EBO impl_IAutoSuggestBoxTextChangedEventArgsStatics
{
    Windows::UI::Xaml::DependencyProperty ReasonProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IBackClickEventArgs
{
    bool Handled() const;
    void Handled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IBitmapIcon
{
    Windows::Foundation::Uri UriSource() const;
    void UriSource(const Windows::Foundation::Uri & value) const;
};

template <typename D>
struct WINRT_EBO impl_IBitmapIconFactory
{
    Windows::UI::Xaml::Controls::BitmapIcon CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IBitmapIconStatics
{
    Windows::UI::Xaml::DependencyProperty UriSourceProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IBorder
{
    Windows::UI::Xaml::Media::Brush BorderBrush() const;
    void BorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Thickness BorderThickness() const;
    void BorderThickness(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::Media::Brush Background() const;
    void Background(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::CornerRadius CornerRadius() const;
    void CornerRadius(const Windows::UI::Xaml::CornerRadius & value) const;
    Windows::UI::Xaml::Thickness Padding() const;
    void Padding(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::UIElement Child() const;
    void Child(const Windows::UI::Xaml::UIElement & value) const;
    Windows::UI::Xaml::Media::Animation::TransitionCollection ChildTransitions() const;
    void ChildTransitions(const Windows::UI::Xaml::Media::Animation::TransitionCollection & value) const;
};

template <typename D>
struct WINRT_EBO impl_IBorderStatics
{
    Windows::UI::Xaml::DependencyProperty BorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty BorderThicknessProperty() const;
    Windows::UI::Xaml::DependencyProperty BackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty CornerRadiusProperty() const;
    Windows::UI::Xaml::DependencyProperty PaddingProperty() const;
    Windows::UI::Xaml::DependencyProperty ChildTransitionsProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IButton
{
};

template <typename D>
struct WINRT_EBO impl_IButtonFactory
{
    Windows::UI::Xaml::Controls::Button CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IButtonStaticsWithFlyout
{
    Windows::UI::Xaml::DependencyProperty FlyoutProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IButtonWithFlyout
{
    Windows::UI::Xaml::Controls::Primitives::FlyoutBase Flyout() const;
    void Flyout(const Windows::UI::Xaml::Controls::Primitives::FlyoutBase & value) const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarDatePicker
{
    Windows::Foundation::IReference<Windows::Foundation::DateTime> Date() const;
    void Date(const Windows::Foundation::IReference<Windows::Foundation::DateTime> & value) const;
    bool IsCalendarOpen() const;
    void IsCalendarOpen(bool value) const;
    hstring DateFormat() const;
    void DateFormat(hstring_ref value) const;
    hstring PlaceholderText() const;
    void PlaceholderText(hstring_ref value) const;
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::Style CalendarViewStyle() const;
    void CalendarViewStyle(const Windows::UI::Xaml::Style & value) const;
    Windows::Foundation::DateTime MinDate() const;
    void MinDate(const Windows::Foundation::DateTime & value) const;
    Windows::Foundation::DateTime MaxDate() const;
    void MaxDate(const Windows::Foundation::DateTime & value) const;
    bool IsTodayHighlighted() const;
    void IsTodayHighlighted(bool value) const;
    Windows::UI::Xaml::Controls::CalendarViewDisplayMode DisplayMode() const;
    void DisplayMode(Windows::UI::Xaml::Controls::CalendarViewDisplayMode value) const;
    Windows::Globalization::DayOfWeek FirstDayOfWeek() const;
    void FirstDayOfWeek(Windows::Globalization::DayOfWeek value) const;
    hstring DayOfWeekFormat() const;
    void DayOfWeekFormat(hstring_ref value) const;
    hstring CalendarIdentifier() const;
    void CalendarIdentifier(hstring_ref value) const;
    bool IsOutOfScopeEnabled() const;
    void IsOutOfScopeEnabled(bool value) const;
    bool IsGroupLabelVisible() const;
    void IsGroupLabelVisible(bool value) const;
    event_token CalendarViewDayItemChanging(const Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventHandler & value) const;
    using CalendarViewDayItemChanging_revoker = event_revoker<ICalendarDatePicker>;
    CalendarViewDayItemChanging_revoker CalendarViewDayItemChanging(auto_revoke_t, const Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventHandler & value) const;
    void CalendarViewDayItemChanging(event_token token) const;
    event_token DateChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::CalendarDatePicker, Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs> & value) const;
    using DateChanged_revoker = event_revoker<ICalendarDatePicker>;
    DateChanged_revoker DateChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::CalendarDatePicker, Windows::UI::Xaml::Controls::CalendarDatePickerDateChangedEventArgs> & value) const;
    void DateChanged(event_token token) const;
    event_token Opened(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using Opened_revoker = event_revoker<ICalendarDatePicker>;
    Opened_revoker Opened(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void Opened(event_token token) const;
    event_token Closed(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using Closed_revoker = event_revoker<ICalendarDatePicker>;
    Closed_revoker Closed(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void Closed(event_token token) const;
    void SetDisplayDate(const Windows::Foundation::DateTime & date) const;
    void SetYearDecadeDisplayDimensions(int32_t columns, int32_t rows) const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarDatePicker2
{
    Windows::UI::Xaml::Controls::LightDismissOverlayMode LightDismissOverlayMode() const;
    void LightDismissOverlayMode(Windows::UI::Xaml::Controls::LightDismissOverlayMode value) const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarDatePickerDateChangedEventArgs
{
    Windows::Foundation::IReference<Windows::Foundation::DateTime> NewDate() const;
    Windows::Foundation::IReference<Windows::Foundation::DateTime> OldDate() const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarDatePickerFactory
{
    Windows::UI::Xaml::Controls::CalendarDatePicker CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarDatePickerStatics
{
    Windows::UI::Xaml::DependencyProperty DateProperty() const;
    Windows::UI::Xaml::DependencyProperty IsCalendarOpenProperty() const;
    Windows::UI::Xaml::DependencyProperty DateFormatProperty() const;
    Windows::UI::Xaml::DependencyProperty PlaceholderTextProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty CalendarViewStyleProperty() const;
    Windows::UI::Xaml::DependencyProperty MinDateProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxDateProperty() const;
    Windows::UI::Xaml::DependencyProperty IsTodayHighlightedProperty() const;
    Windows::UI::Xaml::DependencyProperty DisplayModeProperty() const;
    Windows::UI::Xaml::DependencyProperty FirstDayOfWeekProperty() const;
    Windows::UI::Xaml::DependencyProperty DayOfWeekFormatProperty() const;
    Windows::UI::Xaml::DependencyProperty CalendarIdentifierProperty() const;
    Windows::UI::Xaml::DependencyProperty IsOutOfScopeEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsGroupLabelVisibleProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarDatePickerStatics2
{
    Windows::UI::Xaml::DependencyProperty LightDismissOverlayModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarView
{
    hstring CalendarIdentifier() const;
    void CalendarIdentifier(hstring_ref value) const;
    hstring DayOfWeekFormat() const;
    void DayOfWeekFormat(hstring_ref value) const;
    bool IsGroupLabelVisible() const;
    void IsGroupLabelVisible(bool value) const;
    Windows::UI::Xaml::Controls::CalendarViewDisplayMode DisplayMode() const;
    void DisplayMode(Windows::UI::Xaml::Controls::CalendarViewDisplayMode value) const;
    Windows::Globalization::DayOfWeek FirstDayOfWeek() const;
    void FirstDayOfWeek(Windows::Globalization::DayOfWeek value) const;
    bool IsOutOfScopeEnabled() const;
    void IsOutOfScopeEnabled(bool value) const;
    bool IsTodayHighlighted() const;
    void IsTodayHighlighted(bool value) const;
    Windows::Foundation::DateTime MaxDate() const;
    void MaxDate(const Windows::Foundation::DateTime & value) const;
    Windows::Foundation::DateTime MinDate() const;
    void MinDate(const Windows::Foundation::DateTime & value) const;
    int32_t NumberOfWeeksInView() const;
    void NumberOfWeeksInView(int32_t value) const;
    Windows::Foundation::Collections::IVector<Windows::Foundation::DateTime> SelectedDates() const;
    Windows::UI::Xaml::Controls::CalendarViewSelectionMode SelectionMode() const;
    void SelectionMode(Windows::UI::Xaml::Controls::CalendarViewSelectionMode value) const;
    Windows::UI::Xaml::Controls::Primitives::CalendarViewTemplateSettings TemplateSettings() const;
    Windows::UI::Xaml::Media::Brush FocusBorderBrush() const;
    void FocusBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedHoverBorderBrush() const;
    void SelectedHoverBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedPressedBorderBrush() const;
    void SelectedPressedBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedBorderBrush() const;
    void SelectedBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush HoverBorderBrush() const;
    void HoverBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush PressedBorderBrush() const;
    void PressedBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush CalendarItemBorderBrush() const;
    void CalendarItemBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush OutOfScopeBackground() const;
    void OutOfScopeBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush CalendarItemBackground() const;
    void CalendarItemBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush PressedForeground() const;
    void PressedForeground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush TodayForeground() const;
    void TodayForeground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush BlackoutForeground() const;
    void BlackoutForeground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedForeground() const;
    void SelectedForeground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush OutOfScopeForeground() const;
    void OutOfScopeForeground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush CalendarItemForeground() const;
    void CalendarItemForeground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::FontFamily DayItemFontFamily() const;
    void DayItemFontFamily(const Windows::UI::Xaml::Media::FontFamily & value) const;
    double DayItemFontSize() const;
    void DayItemFontSize(double value) const;
    Windows::UI::Text::FontStyle DayItemFontStyle() const;
    void DayItemFontStyle(Windows::UI::Text::FontStyle value) const;
    Windows::UI::Text::FontWeight DayItemFontWeight() const;
    void DayItemFontWeight(const Windows::UI::Text::FontWeight & value) const;
    Windows::UI::Text::FontWeight TodayFontWeight() const;
    void TodayFontWeight(const Windows::UI::Text::FontWeight & value) const;
    Windows::UI::Xaml::Media::FontFamily FirstOfMonthLabelFontFamily() const;
    void FirstOfMonthLabelFontFamily(const Windows::UI::Xaml::Media::FontFamily & value) const;
    double FirstOfMonthLabelFontSize() const;
    void FirstOfMonthLabelFontSize(double value) const;
    Windows::UI::Text::FontStyle FirstOfMonthLabelFontStyle() const;
    void FirstOfMonthLabelFontStyle(Windows::UI::Text::FontStyle value) const;
    Windows::UI::Text::FontWeight FirstOfMonthLabelFontWeight() const;
    void FirstOfMonthLabelFontWeight(const Windows::UI::Text::FontWeight & value) const;
    Windows::UI::Xaml::Media::FontFamily MonthYearItemFontFamily() const;
    void MonthYearItemFontFamily(const Windows::UI::Xaml::Media::FontFamily & value) const;
    double MonthYearItemFontSize() const;
    void MonthYearItemFontSize(double value) const;
    Windows::UI::Text::FontStyle MonthYearItemFontStyle() const;
    void MonthYearItemFontStyle(Windows::UI::Text::FontStyle value) const;
    Windows::UI::Text::FontWeight MonthYearItemFontWeight() const;
    void MonthYearItemFontWeight(const Windows::UI::Text::FontWeight & value) const;
    Windows::UI::Xaml::Media::FontFamily FirstOfYearDecadeLabelFontFamily() const;
    void FirstOfYearDecadeLabelFontFamily(const Windows::UI::Xaml::Media::FontFamily & value) const;
    double FirstOfYearDecadeLabelFontSize() const;
    void FirstOfYearDecadeLabelFontSize(double value) const;
    Windows::UI::Text::FontStyle FirstOfYearDecadeLabelFontStyle() const;
    void FirstOfYearDecadeLabelFontStyle(Windows::UI::Text::FontStyle value) const;
    Windows::UI::Text::FontWeight FirstOfYearDecadeLabelFontWeight() const;
    void FirstOfYearDecadeLabelFontWeight(const Windows::UI::Text::FontWeight & value) const;
    Windows::UI::Xaml::HorizontalAlignment HorizontalDayItemAlignment() const;
    void HorizontalDayItemAlignment(Windows::UI::Xaml::HorizontalAlignment value) const;
    Windows::UI::Xaml::VerticalAlignment VerticalDayItemAlignment() const;
    void VerticalDayItemAlignment(Windows::UI::Xaml::VerticalAlignment value) const;
    Windows::UI::Xaml::HorizontalAlignment HorizontalFirstOfMonthLabelAlignment() const;
    void HorizontalFirstOfMonthLabelAlignment(Windows::UI::Xaml::HorizontalAlignment value) const;
    Windows::UI::Xaml::VerticalAlignment VerticalFirstOfMonthLabelAlignment() const;
    void VerticalFirstOfMonthLabelAlignment(Windows::UI::Xaml::VerticalAlignment value) const;
    Windows::UI::Xaml::Thickness CalendarItemBorderThickness() const;
    void CalendarItemBorderThickness(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::Style CalendarViewDayItemStyle() const;
    void CalendarViewDayItemStyle(const Windows::UI::Xaml::Style & value) const;
    event_token CalendarViewDayItemChanging(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::CalendarView, Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs> & value) const;
    using CalendarViewDayItemChanging_revoker = event_revoker<ICalendarView>;
    CalendarViewDayItemChanging_revoker CalendarViewDayItemChanging(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::CalendarView, Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs> & value) const;
    void CalendarViewDayItemChanging(event_token token) const;
    event_token SelectedDatesChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::CalendarView, Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs> & value) const;
    using SelectedDatesChanged_revoker = event_revoker<ICalendarView>;
    SelectedDatesChanged_revoker SelectedDatesChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::CalendarView, Windows::UI::Xaml::Controls::CalendarViewSelectedDatesChangedEventArgs> & value) const;
    void SelectedDatesChanged(event_token token) const;
    void SetDisplayDate(const Windows::Foundation::DateTime & date) const;
    void SetYearDecadeDisplayDimensions(int32_t columns, int32_t rows) const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarViewDayItem
{
    bool IsBlackout() const;
    void IsBlackout(bool value) const;
    Windows::Foundation::DateTime Date() const;
    void SetDensityColors(const Windows::Foundation::Collections::IIterable<Windows::UI::Color> & colors) const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarViewDayItemChangingEventArgs
{
    bool InRecycleQueue() const;
    Windows::UI::Xaml::Controls::CalendarViewDayItem Item() const;
    uint32_t Phase() const;
    void RegisterUpdateCallback(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::CalendarView, Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs> & callback) const;
    void RegisterUpdateCallback(uint32_t callbackPhase, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::CalendarView, Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs> & callback) const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarViewDayItemFactory
{
    Windows::UI::Xaml::Controls::CalendarViewDayItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarViewDayItemStatics
{
    Windows::UI::Xaml::DependencyProperty IsBlackoutProperty() const;
    Windows::UI::Xaml::DependencyProperty DateProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarViewFactory
{
    Windows::UI::Xaml::Controls::CalendarView CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarViewSelectedDatesChangedEventArgs
{
    Windows::Foundation::Collections::IVectorView<Windows::Foundation::DateTime> AddedDates() const;
    Windows::Foundation::Collections::IVectorView<Windows::Foundation::DateTime> RemovedDates() const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarViewStatics
{
    Windows::UI::Xaml::DependencyProperty CalendarIdentifierProperty() const;
    Windows::UI::Xaml::DependencyProperty DayOfWeekFormatProperty() const;
    Windows::UI::Xaml::DependencyProperty IsGroupLabelVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty DisplayModeProperty() const;
    Windows::UI::Xaml::DependencyProperty FirstDayOfWeekProperty() const;
    Windows::UI::Xaml::DependencyProperty IsOutOfScopeEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsTodayHighlightedProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxDateProperty() const;
    Windows::UI::Xaml::DependencyProperty MinDateProperty() const;
    Windows::UI::Xaml::DependencyProperty NumberOfWeeksInViewProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedDatesProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectionModeProperty() const;
    Windows::UI::Xaml::DependencyProperty TemplateSettingsProperty() const;
    Windows::UI::Xaml::DependencyProperty FocusBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedHoverBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedPressedBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty HoverBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty PressedBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty CalendarItemBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty OutOfScopeBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty CalendarItemBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty PressedForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty TodayForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty BlackoutForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty OutOfScopeForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty CalendarItemForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty DayItemFontFamilyProperty() const;
    Windows::UI::Xaml::DependencyProperty DayItemFontSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty DayItemFontStyleProperty() const;
    Windows::UI::Xaml::DependencyProperty DayItemFontWeightProperty() const;
    Windows::UI::Xaml::DependencyProperty TodayFontWeightProperty() const;
    Windows::UI::Xaml::DependencyProperty FirstOfMonthLabelFontFamilyProperty() const;
    Windows::UI::Xaml::DependencyProperty FirstOfMonthLabelFontSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty FirstOfMonthLabelFontStyleProperty() const;
    Windows::UI::Xaml::DependencyProperty FirstOfMonthLabelFontWeightProperty() const;
    Windows::UI::Xaml::DependencyProperty MonthYearItemFontFamilyProperty() const;
    Windows::UI::Xaml::DependencyProperty MonthYearItemFontSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty MonthYearItemFontStyleProperty() const;
    Windows::UI::Xaml::DependencyProperty MonthYearItemFontWeightProperty() const;
    Windows::UI::Xaml::DependencyProperty FirstOfYearDecadeLabelFontFamilyProperty() const;
    Windows::UI::Xaml::DependencyProperty FirstOfYearDecadeLabelFontSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty FirstOfYearDecadeLabelFontStyleProperty() const;
    Windows::UI::Xaml::DependencyProperty FirstOfYearDecadeLabelFontWeightProperty() const;
    Windows::UI::Xaml::DependencyProperty HorizontalDayItemAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty VerticalDayItemAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty HorizontalFirstOfMonthLabelAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty VerticalFirstOfMonthLabelAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty CalendarItemBorderThicknessProperty() const;
    Windows::UI::Xaml::DependencyProperty CalendarViewDayItemStyleProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ICandidateWindowBoundsChangedEventArgs
{
    Windows::Foundation::Rect Bounds() const;
};

template <typename D>
struct WINRT_EBO impl_ICanvas
{
};

template <typename D>
struct WINRT_EBO impl_ICanvasFactory
{
    Windows::UI::Xaml::Controls::Canvas CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ICanvasStatics
{
    Windows::UI::Xaml::DependencyProperty LeftProperty() const;
    double GetLeft(const Windows::UI::Xaml::UIElement & element) const;
    void SetLeft(const Windows::UI::Xaml::UIElement & element, double length) const;
    Windows::UI::Xaml::DependencyProperty TopProperty() const;
    double GetTop(const Windows::UI::Xaml::UIElement & element) const;
    void SetTop(const Windows::UI::Xaml::UIElement & element, double length) const;
    Windows::UI::Xaml::DependencyProperty ZIndexProperty() const;
    int32_t GetZIndex(const Windows::UI::Xaml::UIElement & element) const;
    void SetZIndex(const Windows::UI::Xaml::UIElement & element, int32_t value) const;
};

template <typename D>
struct WINRT_EBO impl_ICaptureElement
{
    Windows::Media::Capture::MediaCapture Source() const;
    void Source(const Windows::Media::Capture::MediaCapture & value) const;
    Windows::UI::Xaml::Media::Stretch Stretch() const;
    void Stretch(Windows::UI::Xaml::Media::Stretch value) const;
};

template <typename D>
struct WINRT_EBO impl_ICaptureElementStatics
{
    Windows::UI::Xaml::DependencyProperty SourceProperty() const;
    Windows::UI::Xaml::DependencyProperty StretchProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ICheckBox
{
};

template <typename D>
struct WINRT_EBO impl_ICheckBoxFactory
{
    Windows::UI::Xaml::Controls::CheckBox CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IChoosingGroupHeaderContainerEventArgs
{
    Windows::UI::Xaml::Controls::ListViewBaseHeaderItem GroupHeaderContainer() const;
    void GroupHeaderContainer(const Windows::UI::Xaml::Controls::ListViewBaseHeaderItem & value) const;
    int32_t GroupIndex() const;
    Windows::IInspectable Group() const;
};

template <typename D>
struct WINRT_EBO impl_IChoosingItemContainerEventArgs
{
    int32_t ItemIndex() const;
    Windows::IInspectable Item() const;
    Windows::UI::Xaml::Controls::Primitives::SelectorItem ItemContainer() const;
    void ItemContainer(const Windows::UI::Xaml::Controls::Primitives::SelectorItem & value) const;
    bool IsContainerPrepared() const;
    void IsContainerPrepared(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ICleanUpVirtualizedItemEventArgs
{
    Windows::IInspectable Value() const;
    Windows::UI::Xaml::UIElement UIElement() const;
    bool Cancel() const;
    void Cancel(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IColumnDefinition
{
    Windows::UI::Xaml::GridLength Width() const;
    void Width(const Windows::UI::Xaml::GridLength & value) const;
    double MaxWidth() const;
    void MaxWidth(double value) const;
    double MinWidth() const;
    void MinWidth(double value) const;
    double ActualWidth() const;
};

template <typename D>
struct WINRT_EBO impl_IColumnDefinitionStatics
{
    Windows::UI::Xaml::DependencyProperty WidthProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty MinWidthProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IComboBox
{
    bool IsDropDownOpen() const;
    void IsDropDownOpen(bool value) const;
    bool IsEditable() const;
    bool IsSelectionBoxHighlighted() const;
    double MaxDropDownHeight() const;
    void MaxDropDownHeight(double value) const;
    Windows::IInspectable SelectionBoxItem() const;
    Windows::UI::Xaml::DataTemplate SelectionBoxItemTemplate() const;
    Windows::UI::Xaml::Controls::Primitives::ComboBoxTemplateSettings TemplateSettings() const;
    event_token DropDownClosed(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using DropDownClosed_revoker = event_revoker<IComboBox>;
    DropDownClosed_revoker DropDownClosed(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void DropDownClosed(event_token token) const;
    event_token DropDownOpened(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using DropDownOpened_revoker = event_revoker<IComboBox>;
    DropDownOpened_revoker DropDownOpened(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void DropDownOpened(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IComboBox2
{
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    hstring PlaceholderText() const;
    void PlaceholderText(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IComboBox3
{
    Windows::UI::Xaml::Controls::LightDismissOverlayMode LightDismissOverlayMode() const;
    void LightDismissOverlayMode(Windows::UI::Xaml::Controls::LightDismissOverlayMode value) const;
    bool IsTextSearchEnabled() const;
    void IsTextSearchEnabled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IComboBoxFactory
{
    Windows::UI::Xaml::Controls::ComboBox CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IComboBoxItem
{
};

template <typename D>
struct WINRT_EBO impl_IComboBoxItemFactory
{
    Windows::UI::Xaml::Controls::ComboBoxItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IComboBoxOverrides
{
    void OnDropDownClosed(const Windows::IInspectable & e) const;
    void OnDropDownOpened(const Windows::IInspectable & e) const;
};

template <typename D>
struct WINRT_EBO impl_IComboBoxStatics
{
    Windows::UI::Xaml::DependencyProperty IsDropDownOpenProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxDropDownHeightProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IComboBoxStatics2
{
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty PlaceholderTextProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IComboBoxStatics3
{
    Windows::UI::Xaml::DependencyProperty LightDismissOverlayModeProperty() const;
    Windows::UI::Xaml::DependencyProperty IsTextSearchEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBar
{
    Windows::Foundation::Collections::IObservableVector<Windows::UI::Xaml::Controls::ICommandBarElement> PrimaryCommands() const;
    Windows::Foundation::Collections::IObservableVector<Windows::UI::Xaml::Controls::ICommandBarElement> SecondaryCommands() const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBar2
{
    Windows::UI::Xaml::Style CommandBarOverflowPresenterStyle() const;
    void CommandBarOverflowPresenterStyle(const Windows::UI::Xaml::Style & value) const;
    Windows::UI::Xaml::Controls::Primitives::CommandBarTemplateSettings CommandBarTemplateSettings() const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBar3
{
    Windows::UI::Xaml::Controls::CommandBarDefaultLabelPosition DefaultLabelPosition() const;
    void DefaultLabelPosition(Windows::UI::Xaml::Controls::CommandBarDefaultLabelPosition value) const;
    Windows::UI::Xaml::Controls::CommandBarOverflowButtonVisibility OverflowButtonVisibility() const;
    void OverflowButtonVisibility(Windows::UI::Xaml::Controls::CommandBarOverflowButtonVisibility value) const;
    bool IsDynamicOverflowEnabled() const;
    void IsDynamicOverflowEnabled(bool value) const;
    event_token DynamicOverflowItemsChanging(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::CommandBar, Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs> & value) const;
    using DynamicOverflowItemsChanging_revoker = event_revoker<ICommandBar3>;
    DynamicOverflowItemsChanging_revoker DynamicOverflowItemsChanging(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::CommandBar, Windows::UI::Xaml::Controls::DynamicOverflowItemsChangingEventArgs> & value) const;
    void DynamicOverflowItemsChanging(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBarElement
{
    bool IsCompact() const;
    void IsCompact(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBarElement2
{
    bool IsInOverflow() const;
    int32_t DynamicOverflowOrder() const;
    void DynamicOverflowOrder(int32_t value) const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBarFactory
{
    Windows::UI::Xaml::Controls::CommandBar CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBarOverflowPresenter
{
};

template <typename D>
struct WINRT_EBO impl_ICommandBarOverflowPresenterFactory
{
    Windows::UI::Xaml::Controls::CommandBarOverflowPresenter CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBarStatics
{
    Windows::UI::Xaml::DependencyProperty PrimaryCommandsProperty() const;
    Windows::UI::Xaml::DependencyProperty SecondaryCommandsProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBarStatics2
{
    Windows::UI::Xaml::DependencyProperty CommandBarOverflowPresenterStyleProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBarStatics3
{
    Windows::UI::Xaml::DependencyProperty DefaultLabelPositionProperty() const;
    Windows::UI::Xaml::DependencyProperty OverflowButtonVisibilityProperty() const;
    Windows::UI::Xaml::DependencyProperty IsDynamicOverflowEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IContainerContentChangingEventArgs
{
    Windows::UI::Xaml::Controls::Primitives::SelectorItem ItemContainer() const;
    bool InRecycleQueue() const;
    int32_t ItemIndex() const;
    Windows::IInspectable Item() const;
    uint32_t Phase() const;
    bool Handled() const;
    void Handled(bool value) const;
    void RegisterUpdateCallback(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs> & callback) const;
    void RegisterUpdateCallback(uint32_t callbackPhase, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs> & callback) const;
};

template <typename D>
struct WINRT_EBO impl_IContentControl
{
    Windows::IInspectable Content() const;
    void Content(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate ContentTemplate() const;
    void ContentTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::Controls::DataTemplateSelector ContentTemplateSelector() const;
    void ContentTemplateSelector(const Windows::UI::Xaml::Controls::DataTemplateSelector & value) const;
    Windows::UI::Xaml::Media::Animation::TransitionCollection ContentTransitions() const;
    void ContentTransitions(const Windows::UI::Xaml::Media::Animation::TransitionCollection & value) const;
};

template <typename D>
struct WINRT_EBO impl_IContentControl2
{
    Windows::UI::Xaml::UIElement ContentTemplateRoot() const;
};

template <typename D>
struct WINRT_EBO impl_IContentControlFactory
{
    Windows::UI::Xaml::Controls::ContentControl CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IContentControlOverrides
{
    void OnContentChanged(const Windows::IInspectable & oldContent, const Windows::IInspectable & newContent) const;
    void OnContentTemplateChanged(const Windows::UI::Xaml::DataTemplate & oldContentTemplate, const Windows::UI::Xaml::DataTemplate & newContentTemplate) const;
    void OnContentTemplateSelectorChanged(const Windows::UI::Xaml::Controls::DataTemplateSelector & oldContentTemplateSelector, const Windows::UI::Xaml::Controls::DataTemplateSelector & newContentTemplateSelector) const;
};

template <typename D>
struct WINRT_EBO impl_IContentControlStatics
{
    Windows::UI::Xaml::DependencyProperty ContentProperty() const;
    Windows::UI::Xaml::DependencyProperty ContentTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty ContentTemplateSelectorProperty() const;
    Windows::UI::Xaml::DependencyProperty ContentTransitionsProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IContentDialog
{
    Windows::IInspectable Title() const;
    void Title(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate TitleTemplate() const;
    void TitleTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    bool FullSizeDesired() const;
    void FullSizeDesired(bool value) const;
    hstring PrimaryButtonText() const;
    void PrimaryButtonText(hstring_ref value) const;
    hstring SecondaryButtonText() const;
    void SecondaryButtonText(hstring_ref value) const;
    Windows::UI::Xaml::Input::ICommand PrimaryButtonCommand() const;
    void PrimaryButtonCommand(const Windows::UI::Xaml::Input::ICommand & value) const;
    Windows::UI::Xaml::Input::ICommand SecondaryButtonCommand() const;
    void SecondaryButtonCommand(const Windows::UI::Xaml::Input::ICommand & value) const;
    Windows::IInspectable PrimaryButtonCommandParameter() const;
    void PrimaryButtonCommandParameter(const Windows::IInspectable & value) const;
    Windows::IInspectable SecondaryButtonCommandParameter() const;
    void SecondaryButtonCommandParameter(const Windows::IInspectable & value) const;
    bool IsPrimaryButtonEnabled() const;
    void IsPrimaryButtonEnabled(bool value) const;
    bool IsSecondaryButtonEnabled() const;
    void IsSecondaryButtonEnabled(bool value) const;
    event_token Closing(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs> & value) const;
    using Closing_revoker = event_revoker<IContentDialog>;
    Closing_revoker Closing(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogClosingEventArgs> & value) const;
    void Closing(event_token token) const;
    event_token Closed(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs> & value) const;
    using Closed_revoker = event_revoker<IContentDialog>;
    Closed_revoker Closed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogClosedEventArgs> & value) const;
    void Closed(event_token token) const;
    event_token Opened(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs> & value) const;
    using Opened_revoker = event_revoker<IContentDialog>;
    Opened_revoker Opened(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogOpenedEventArgs> & value) const;
    void Opened(event_token token) const;
    event_token PrimaryButtonClick(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs> & value) const;
    using PrimaryButtonClick_revoker = event_revoker<IContentDialog>;
    PrimaryButtonClick_revoker PrimaryButtonClick(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs> & value) const;
    void PrimaryButtonClick(event_token token) const;
    event_token SecondaryButtonClick(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs> & value) const;
    using SecondaryButtonClick_revoker = event_revoker<IContentDialog>;
    SecondaryButtonClick_revoker SecondaryButtonClick(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ContentDialog, Windows::UI::Xaml::Controls::ContentDialogButtonClickEventArgs> & value) const;
    void SecondaryButtonClick(event_token token) const;
    void Hide() const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::UI::Xaml::Controls::ContentDialogResult> ShowAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IContentDialogButtonClickDeferral
{
    void Complete() const;
};

template <typename D>
struct WINRT_EBO impl_IContentDialogButtonClickEventArgs
{
    bool Cancel() const;
    void Cancel(bool value) const;
    Windows::UI::Xaml::Controls::ContentDialogButtonClickDeferral GetDeferral() const;
};

template <typename D>
struct WINRT_EBO impl_IContentDialogClosedEventArgs
{
    Windows::UI::Xaml::Controls::ContentDialogResult Result() const;
};

template <typename D>
struct WINRT_EBO impl_IContentDialogClosingDeferral
{
    void Complete() const;
};

template <typename D>
struct WINRT_EBO impl_IContentDialogClosingEventArgs
{
    Windows::UI::Xaml::Controls::ContentDialogResult Result() const;
    bool Cancel() const;
    void Cancel(bool value) const;
    Windows::UI::Xaml::Controls::ContentDialogClosingDeferral GetDeferral() const;
};

template <typename D>
struct WINRT_EBO impl_IContentDialogFactory
{
    Windows::UI::Xaml::Controls::ContentDialog CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IContentDialogOpenedEventArgs
{
};

template <typename D>
struct WINRT_EBO impl_IContentDialogStatics
{
    Windows::UI::Xaml::DependencyProperty TitleProperty() const;
    Windows::UI::Xaml::DependencyProperty TitleTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty FullSizeDesiredProperty() const;
    Windows::UI::Xaml::DependencyProperty PrimaryButtonTextProperty() const;
    Windows::UI::Xaml::DependencyProperty SecondaryButtonTextProperty() const;
    Windows::UI::Xaml::DependencyProperty PrimaryButtonCommandProperty() const;
    Windows::UI::Xaml::DependencyProperty SecondaryButtonCommandProperty() const;
    Windows::UI::Xaml::DependencyProperty PrimaryButtonCommandParameterProperty() const;
    Windows::UI::Xaml::DependencyProperty SecondaryButtonCommandParameterProperty() const;
    Windows::UI::Xaml::DependencyProperty IsPrimaryButtonEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsSecondaryButtonEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IContentPresenter
{
    Windows::IInspectable Content() const;
    void Content(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate ContentTemplate() const;
    void ContentTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::Controls::DataTemplateSelector ContentTemplateSelector() const;
    void ContentTemplateSelector(const Windows::UI::Xaml::Controls::DataTemplateSelector & value) const;
    Windows::UI::Xaml::Media::Animation::TransitionCollection ContentTransitions() const;
    void ContentTransitions(const Windows::UI::Xaml::Media::Animation::TransitionCollection & value) const;
    double FontSize() const;
    void FontSize(double value) const;
    Windows::UI::Xaml::Media::FontFamily FontFamily() const;
    void FontFamily(const Windows::UI::Xaml::Media::FontFamily & value) const;
    Windows::UI::Text::FontWeight FontWeight() const;
    void FontWeight(const Windows::UI::Text::FontWeight & value) const;
    Windows::UI::Text::FontStyle FontStyle() const;
    void FontStyle(Windows::UI::Text::FontStyle value) const;
    Windows::UI::Text::FontStretch FontStretch() const;
    void FontStretch(Windows::UI::Text::FontStretch value) const;
    int32_t CharacterSpacing() const;
    void CharacterSpacing(int32_t value) const;
    Windows::UI::Xaml::Media::Brush Foreground() const;
    void Foreground(const Windows::UI::Xaml::Media::Brush & value) const;
};

template <typename D>
struct WINRT_EBO impl_IContentPresenter2
{
    Windows::UI::Xaml::OpticalMarginAlignment OpticalMarginAlignment() const;
    void OpticalMarginAlignment(Windows::UI::Xaml::OpticalMarginAlignment value) const;
    Windows::UI::Xaml::TextLineBounds TextLineBounds() const;
    void TextLineBounds(Windows::UI::Xaml::TextLineBounds value) const;
};

template <typename D>
struct WINRT_EBO impl_IContentPresenter3
{
    bool IsTextScaleFactorEnabled() const;
    void IsTextScaleFactorEnabled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IContentPresenter4
{
    Windows::UI::Xaml::TextWrapping TextWrapping() const;
    void TextWrapping(Windows::UI::Xaml::TextWrapping value) const;
    int32_t MaxLines() const;
    void MaxLines(int32_t value) const;
    Windows::UI::Xaml::LineStackingStrategy LineStackingStrategy() const;
    void LineStackingStrategy(Windows::UI::Xaml::LineStackingStrategy value) const;
    double LineHeight() const;
    void LineHeight(double value) const;
    Windows::UI::Xaml::Media::Brush BorderBrush() const;
    void BorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Thickness BorderThickness() const;
    void BorderThickness(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::CornerRadius CornerRadius() const;
    void CornerRadius(const Windows::UI::Xaml::CornerRadius & value) const;
    Windows::UI::Xaml::Thickness Padding() const;
    void Padding(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::Media::Brush Background() const;
    void Background(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::HorizontalAlignment HorizontalContentAlignment() const;
    void HorizontalContentAlignment(Windows::UI::Xaml::HorizontalAlignment value) const;
    Windows::UI::Xaml::VerticalAlignment VerticalContentAlignment() const;
    void VerticalContentAlignment(Windows::UI::Xaml::VerticalAlignment value) const;
};

template <typename D>
struct WINRT_EBO impl_IContentPresenterFactory
{
    Windows::UI::Xaml::Controls::ContentPresenter CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IContentPresenterOverrides
{
    void OnContentTemplateChanged(const Windows::UI::Xaml::DataTemplate & oldContentTemplate, const Windows::UI::Xaml::DataTemplate & newContentTemplate) const;
    void OnContentTemplateSelectorChanged(const Windows::UI::Xaml::Controls::DataTemplateSelector & oldContentTemplateSelector, const Windows::UI::Xaml::Controls::DataTemplateSelector & newContentTemplateSelector) const;
};

template <typename D>
struct WINRT_EBO impl_IContentPresenterStatics
{
    Windows::UI::Xaml::DependencyProperty ContentProperty() const;
    Windows::UI::Xaml::DependencyProperty ContentTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty ContentTemplateSelectorProperty() const;
    Windows::UI::Xaml::DependencyProperty ContentTransitionsProperty() const;
    Windows::UI::Xaml::DependencyProperty FontSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty FontFamilyProperty() const;
    Windows::UI::Xaml::DependencyProperty FontWeightProperty() const;
    Windows::UI::Xaml::DependencyProperty FontStyleProperty() const;
    Windows::UI::Xaml::DependencyProperty FontStretchProperty() const;
    Windows::UI::Xaml::DependencyProperty CharacterSpacingProperty() const;
    Windows::UI::Xaml::DependencyProperty ForegroundProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IContentPresenterStatics2
{
    Windows::UI::Xaml::DependencyProperty OpticalMarginAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty TextLineBoundsProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IContentPresenterStatics3
{
    Windows::UI::Xaml::DependencyProperty IsTextScaleFactorEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IContentPresenterStatics4
{
    Windows::UI::Xaml::DependencyProperty TextWrappingProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxLinesProperty() const;
    Windows::UI::Xaml::DependencyProperty LineStackingStrategyProperty() const;
    Windows::UI::Xaml::DependencyProperty LineHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty BorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty BorderThicknessProperty() const;
    Windows::UI::Xaml::DependencyProperty CornerRadiusProperty() const;
    Windows::UI::Xaml::DependencyProperty PaddingProperty() const;
    Windows::UI::Xaml::DependencyProperty BackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty HorizontalContentAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty VerticalContentAlignmentProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IContextMenuEventArgs
{
    bool Handled() const;
    void Handled(bool value) const;
    double CursorLeft() const;
    double CursorTop() const;
};

template <typename D>
struct WINRT_EBO impl_IControl
{
    double FontSize() const;
    void FontSize(double value) const;
    Windows::UI::Xaml::Media::FontFamily FontFamily() const;
    void FontFamily(const Windows::UI::Xaml::Media::FontFamily & value) const;
    Windows::UI::Text::FontWeight FontWeight() const;
    void FontWeight(const Windows::UI::Text::FontWeight & value) const;
    Windows::UI::Text::FontStyle FontStyle() const;
    void FontStyle(Windows::UI::Text::FontStyle value) const;
    Windows::UI::Text::FontStretch FontStretch() const;
    void FontStretch(Windows::UI::Text::FontStretch value) const;
    int32_t CharacterSpacing() const;
    void CharacterSpacing(int32_t value) const;
    Windows::UI::Xaml::Media::Brush Foreground() const;
    void Foreground(const Windows::UI::Xaml::Media::Brush & value) const;
    bool IsTabStop() const;
    void IsTabStop(bool value) const;
    bool IsEnabled() const;
    void IsEnabled(bool value) const;
    int32_t TabIndex() const;
    void TabIndex(int32_t value) const;
    Windows::UI::Xaml::Input::KeyboardNavigationMode TabNavigation() const;
    void TabNavigation(Windows::UI::Xaml::Input::KeyboardNavigationMode value) const;
    Windows::UI::Xaml::Controls::ControlTemplate Template() const;
    void Template(const Windows::UI::Xaml::Controls::ControlTemplate & value) const;
    Windows::UI::Xaml::Thickness Padding() const;
    void Padding(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::HorizontalAlignment HorizontalContentAlignment() const;
    void HorizontalContentAlignment(Windows::UI::Xaml::HorizontalAlignment value) const;
    Windows::UI::Xaml::VerticalAlignment VerticalContentAlignment() const;
    void VerticalContentAlignment(Windows::UI::Xaml::VerticalAlignment value) const;
    Windows::UI::Xaml::Media::Brush Background() const;
    void Background(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Thickness BorderThickness() const;
    void BorderThickness(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::Media::Brush BorderBrush() const;
    void BorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::FocusState FocusState() const;
    event_token IsEnabledChanged(const Windows::UI::Xaml::DependencyPropertyChangedEventHandler & value) const;
    using IsEnabledChanged_revoker = event_revoker<IControl>;
    IsEnabledChanged_revoker IsEnabledChanged(auto_revoke_t, const Windows::UI::Xaml::DependencyPropertyChangedEventHandler & value) const;
    void IsEnabledChanged(event_token token) const;
    bool ApplyTemplate() const;
    bool Focus(Windows::UI::Xaml::FocusState value) const;
};

template <typename D>
struct WINRT_EBO impl_IControl2
{
    bool IsTextScaleFactorEnabled() const;
    void IsTextScaleFactorEnabled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IControl3
{
    bool UseSystemFocusVisuals() const;
    void UseSystemFocusVisuals(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IControl4
{
    bool IsFocusEngagementEnabled() const;
    void IsFocusEngagementEnabled(bool value) const;
    bool IsFocusEngaged() const;
    void IsFocusEngaged(bool value) const;
    Windows::UI::Xaml::Controls::RequiresPointer RequiresPointer() const;
    void RequiresPointer(Windows::UI::Xaml::Controls::RequiresPointer value) const;
    Windows::UI::Xaml::DependencyObject XYFocusLeft() const;
    void XYFocusLeft(const Windows::UI::Xaml::DependencyObject & value) const;
    Windows::UI::Xaml::DependencyObject XYFocusRight() const;
    void XYFocusRight(const Windows::UI::Xaml::DependencyObject & value) const;
    Windows::UI::Xaml::DependencyObject XYFocusUp() const;
    void XYFocusUp(const Windows::UI::Xaml::DependencyObject & value) const;
    Windows::UI::Xaml::DependencyObject XYFocusDown() const;
    void XYFocusDown(const Windows::UI::Xaml::DependencyObject & value) const;
    Windows::UI::Xaml::ElementSoundMode ElementSoundMode() const;
    void ElementSoundMode(Windows::UI::Xaml::ElementSoundMode value) const;
    event_token FocusEngaged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Control, Windows::UI::Xaml::Controls::FocusEngagedEventArgs> & value) const;
    using FocusEngaged_revoker = event_revoker<IControl4>;
    FocusEngaged_revoker FocusEngaged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Control, Windows::UI::Xaml::Controls::FocusEngagedEventArgs> & value) const;
    void FocusEngaged(event_token token) const;
    event_token FocusDisengaged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Control, Windows::UI::Xaml::Controls::FocusDisengagedEventArgs> & value) const;
    using FocusDisengaged_revoker = event_revoker<IControl4>;
    FocusDisengaged_revoker FocusDisengaged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Control, Windows::UI::Xaml::Controls::FocusDisengagedEventArgs> & value) const;
    void FocusDisengaged(event_token token) const;
    void RemoveFocusEngagement() const;
};

template <typename D>
struct WINRT_EBO impl_IControlFactory
{
    Windows::UI::Xaml::Controls::Control CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IControlOverrides
{
    void OnPointerEntered(const Windows::UI::Xaml::Input::PointerRoutedEventArgs & e) const;
    void OnPointerPressed(const Windows::UI::Xaml::Input::PointerRoutedEventArgs & e) const;
    void OnPointerMoved(const Windows::UI::Xaml::Input::PointerRoutedEventArgs & e) const;
    void OnPointerReleased(const Windows::UI::Xaml::Input::PointerRoutedEventArgs & e) const;
    void OnPointerExited(const Windows::UI::Xaml::Input::PointerRoutedEventArgs & e) const;
    void OnPointerCaptureLost(const Windows::UI::Xaml::Input::PointerRoutedEventArgs & e) const;
    void OnPointerCanceled(const Windows::UI::Xaml::Input::PointerRoutedEventArgs & e) const;
    void OnPointerWheelChanged(const Windows::UI::Xaml::Input::PointerRoutedEventArgs & e) const;
    void OnTapped(const Windows::UI::Xaml::Input::TappedRoutedEventArgs & e) const;
    void OnDoubleTapped(const Windows::UI::Xaml::Input::DoubleTappedRoutedEventArgs & e) const;
    void OnHolding(const Windows::UI::Xaml::Input::HoldingRoutedEventArgs & e) const;
    void OnRightTapped(const Windows::UI::Xaml::Input::RightTappedRoutedEventArgs & e) const;
    void OnManipulationStarting(const Windows::UI::Xaml::Input::ManipulationStartingRoutedEventArgs & e) const;
    void OnManipulationInertiaStarting(const Windows::UI::Xaml::Input::ManipulationInertiaStartingRoutedEventArgs & e) const;
    void OnManipulationStarted(const Windows::UI::Xaml::Input::ManipulationStartedRoutedEventArgs & e) const;
    void OnManipulationDelta(const Windows::UI::Xaml::Input::ManipulationDeltaRoutedEventArgs & e) const;
    void OnManipulationCompleted(const Windows::UI::Xaml::Input::ManipulationCompletedRoutedEventArgs & e) const;
    void OnKeyUp(const Windows::UI::Xaml::Input::KeyRoutedEventArgs & e) const;
    void OnKeyDown(const Windows::UI::Xaml::Input::KeyRoutedEventArgs & e) const;
    void OnGotFocus(const Windows::UI::Xaml::RoutedEventArgs & e) const;
    void OnLostFocus(const Windows::UI::Xaml::RoutedEventArgs & e) const;
    void OnDragEnter(const Windows::UI::Xaml::DragEventArgs & e) const;
    void OnDragLeave(const Windows::UI::Xaml::DragEventArgs & e) const;
    void OnDragOver(const Windows::UI::Xaml::DragEventArgs & e) const;
    void OnDrop(const Windows::UI::Xaml::DragEventArgs & e) const;
};

template <typename D>
struct WINRT_EBO impl_IControlProtected
{
    Windows::IInspectable DefaultStyleKey() const;
    void DefaultStyleKey(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DependencyObject GetTemplateChild(hstring_ref childName) const;
};

template <typename D>
struct WINRT_EBO impl_IControlStatics
{
    Windows::UI::Xaml::DependencyProperty FontSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty FontFamilyProperty() const;
    Windows::UI::Xaml::DependencyProperty FontWeightProperty() const;
    Windows::UI::Xaml::DependencyProperty FontStyleProperty() const;
    Windows::UI::Xaml::DependencyProperty FontStretchProperty() const;
    Windows::UI::Xaml::DependencyProperty CharacterSpacingProperty() const;
    Windows::UI::Xaml::DependencyProperty ForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty IsTabStopProperty() const;
    Windows::UI::Xaml::DependencyProperty IsEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty TabIndexProperty() const;
    Windows::UI::Xaml::DependencyProperty TabNavigationProperty() const;
    Windows::UI::Xaml::DependencyProperty TemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty PaddingProperty() const;
    Windows::UI::Xaml::DependencyProperty HorizontalContentAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty VerticalContentAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty BackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty BorderThicknessProperty() const;
    Windows::UI::Xaml::DependencyProperty BorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty DefaultStyleKeyProperty() const;
    Windows::UI::Xaml::DependencyProperty FocusStateProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IControlStatics2
{
    Windows::UI::Xaml::DependencyProperty IsTextScaleFactorEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IControlStatics3
{
    Windows::UI::Xaml::DependencyProperty UseSystemFocusVisualsProperty() const;
    Windows::UI::Xaml::DependencyProperty IsTemplateFocusTargetProperty() const;
    bool GetIsTemplateFocusTarget(const Windows::UI::Xaml::FrameworkElement & element) const;
    void SetIsTemplateFocusTarget(const Windows::UI::Xaml::FrameworkElement & element, bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IControlStatics4
{
    Windows::UI::Xaml::DependencyProperty IsFocusEngagementEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsFocusEngagedProperty() const;
    Windows::UI::Xaml::DependencyProperty RequiresPointerProperty() const;
    Windows::UI::Xaml::DependencyProperty XYFocusLeftProperty() const;
    Windows::UI::Xaml::DependencyProperty XYFocusRightProperty() const;
    Windows::UI::Xaml::DependencyProperty XYFocusUpProperty() const;
    Windows::UI::Xaml::DependencyProperty XYFocusDownProperty() const;
    Windows::UI::Xaml::DependencyProperty ElementSoundModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IControlTemplate
{
    Windows::UI::Xaml::Interop::TypeName TargetType() const;
    void TargetType(const Windows::UI::Xaml::Interop::TypeName & value) const;
};

template <typename D>
struct WINRT_EBO impl_IDataTemplateSelector
{
    Windows::UI::Xaml::DataTemplate SelectTemplate(const Windows::IInspectable & item, const Windows::UI::Xaml::DependencyObject & container) const;
};

template <typename D>
struct WINRT_EBO impl_IDataTemplateSelector2
{
    Windows::UI::Xaml::DataTemplate SelectTemplate(const Windows::IInspectable & item) const;
};

template <typename D>
struct WINRT_EBO impl_IDataTemplateSelectorFactory
{
    Windows::UI::Xaml::Controls::DataTemplateSelector CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IDataTemplateSelectorOverrides
{
    Windows::UI::Xaml::DataTemplate SelectTemplateCore(const Windows::IInspectable & item, const Windows::UI::Xaml::DependencyObject & container) const;
};

template <typename D>
struct WINRT_EBO impl_IDataTemplateSelectorOverrides2
{
    Windows::UI::Xaml::DataTemplate SelectTemplateCore(const Windows::IInspectable & item) const;
};

template <typename D>
struct WINRT_EBO impl_IDatePickedEventArgs
{
    Windows::Foundation::DateTime OldDate() const;
    Windows::Foundation::DateTime NewDate() const;
};

template <typename D>
struct WINRT_EBO impl_IDatePicker
{
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    hstring CalendarIdentifier() const;
    void CalendarIdentifier(hstring_ref value) const;
    Windows::Foundation::DateTime Date() const;
    void Date(const Windows::Foundation::DateTime & value) const;
    bool DayVisible() const;
    void DayVisible(bool value) const;
    bool MonthVisible() const;
    void MonthVisible(bool value) const;
    bool YearVisible() const;
    void YearVisible(bool value) const;
    hstring DayFormat() const;
    void DayFormat(hstring_ref value) const;
    hstring MonthFormat() const;
    void MonthFormat(hstring_ref value) const;
    hstring YearFormat() const;
    void YearFormat(hstring_ref value) const;
    Windows::Foundation::DateTime MinYear() const;
    void MinYear(const Windows::Foundation::DateTime & value) const;
    Windows::Foundation::DateTime MaxYear() const;
    void MaxYear(const Windows::Foundation::DateTime & value) const;
    Windows::UI::Xaml::Controls::Orientation Orientation() const;
    void Orientation(Windows::UI::Xaml::Controls::Orientation value) const;
    event_token DateChanged(const Windows::Foundation::EventHandler<Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs> & value) const;
    using DateChanged_revoker = event_revoker<IDatePicker>;
    DateChanged_revoker DateChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::UI::Xaml::Controls::DatePickerValueChangedEventArgs> & value) const;
    void DateChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IDatePicker2
{
    Windows::UI::Xaml::Controls::LightDismissOverlayMode LightDismissOverlayMode() const;
    void LightDismissOverlayMode(Windows::UI::Xaml::Controls::LightDismissOverlayMode value) const;
};

template <typename D>
struct WINRT_EBO impl_IDatePickerFactory
{
    Windows::UI::Xaml::Controls::DatePicker CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IDatePickerFlyout
{
    hstring CalendarIdentifier() const;
    void CalendarIdentifier(hstring_ref value) const;
    Windows::Foundation::DateTime Date() const;
    void Date(const Windows::Foundation::DateTime & value) const;
    bool DayVisible() const;
    void DayVisible(bool value) const;
    bool MonthVisible() const;
    void MonthVisible(bool value) const;
    bool YearVisible() const;
    void YearVisible(bool value) const;
    Windows::Foundation::DateTime MinYear() const;
    void MinYear(const Windows::Foundation::DateTime & value) const;
    Windows::Foundation::DateTime MaxYear() const;
    void MaxYear(const Windows::Foundation::DateTime & value) const;
    event_token DatePicked(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::DatePickerFlyout, Windows::UI::Xaml::Controls::DatePickedEventArgs> & value) const;
    using DatePicked_revoker = event_revoker<IDatePickerFlyout>;
    DatePicked_revoker DatePicked(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::DatePickerFlyout, Windows::UI::Xaml::Controls::DatePickedEventArgs> & value) const;
    void DatePicked(event_token token) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::IReference<Windows::Foundation::DateTime>> ShowAtAsync(const Windows::UI::Xaml::FrameworkElement & target) const;
};

template <typename D>
struct WINRT_EBO impl_IDatePickerFlyout2
{
    hstring DayFormat() const;
    void DayFormat(hstring_ref value) const;
    hstring MonthFormat() const;
    void MonthFormat(hstring_ref value) const;
    hstring YearFormat() const;
    void YearFormat(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IDatePickerFlyoutItem
{
    hstring PrimaryText() const;
    void PrimaryText(hstring_ref value) const;
    hstring SecondaryText() const;
    void SecondaryText(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IDatePickerFlyoutItemStatics
{
    Windows::UI::Xaml::DependencyProperty PrimaryTextProperty() const;
    Windows::UI::Xaml::DependencyProperty SecondaryTextProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IDatePickerFlyoutPresenter
{
};

template <typename D>
struct WINRT_EBO impl_IDatePickerFlyoutStatics
{
    Windows::UI::Xaml::DependencyProperty CalendarIdentifierProperty() const;
    Windows::UI::Xaml::DependencyProperty DateProperty() const;
    Windows::UI::Xaml::DependencyProperty DayVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty MonthVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty YearVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty MinYearProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxYearProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IDatePickerFlyoutStatics2
{
    Windows::UI::Xaml::DependencyProperty DayFormatProperty() const;
    Windows::UI::Xaml::DependencyProperty MonthFormatProperty() const;
    Windows::UI::Xaml::DependencyProperty YearFormatProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IDatePickerStatics
{
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty CalendarIdentifierProperty() const;
    Windows::UI::Xaml::DependencyProperty DateProperty() const;
    Windows::UI::Xaml::DependencyProperty DayVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty MonthVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty YearVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty DayFormatProperty() const;
    Windows::UI::Xaml::DependencyProperty MonthFormatProperty() const;
    Windows::UI::Xaml::DependencyProperty YearFormatProperty() const;
    Windows::UI::Xaml::DependencyProperty MinYearProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxYearProperty() const;
    Windows::UI::Xaml::DependencyProperty OrientationProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IDatePickerStatics2
{
    Windows::UI::Xaml::DependencyProperty LightDismissOverlayModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IDatePickerValueChangedEventArgs
{
    Windows::Foundation::DateTime OldDate() const;
    Windows::Foundation::DateTime NewDate() const;
};

template <typename D>
struct WINRT_EBO impl_IDragItemsCompletedEventArgs
{
    Windows::Foundation::Collections::IVectorView<Windows::IInspectable> Items() const;
    Windows::ApplicationModel::DataTransfer::DataPackageOperation DropResult() const;
};

template <typename D>
struct WINRT_EBO impl_IDragItemsStartingEventArgs
{
    bool Cancel() const;
    void Cancel(bool value) const;
    Windows::Foundation::Collections::IVector<Windows::IInspectable> Items() const;
    Windows::ApplicationModel::DataTransfer::DataPackage Data() const;
};

template <typename D>
struct WINRT_EBO impl_IDynamicOverflowItemsChangingEventArgs
{
    Windows::UI::Xaml::Controls::CommandBarDynamicOverflowAction Action() const;
};

template <typename D>
struct WINRT_EBO impl_IFlipView
{
};

template <typename D>
struct WINRT_EBO impl_IFlipView2
{
    bool UseTouchAnimationsForAllNavigation() const;
    void UseTouchAnimationsForAllNavigation(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IFlipViewFactory
{
    Windows::UI::Xaml::Controls::FlipView CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IFlipViewItem
{
};

template <typename D>
struct WINRT_EBO impl_IFlipViewItemFactory
{
    Windows::UI::Xaml::Controls::FlipViewItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IFlipViewStatics2
{
    Windows::UI::Xaml::DependencyProperty UseTouchAnimationsForAllNavigationProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IFlyout
{
    Windows::UI::Xaml::UIElement Content() const;
    void Content(const Windows::UI::Xaml::UIElement & value) const;
    Windows::UI::Xaml::Style FlyoutPresenterStyle() const;
    void FlyoutPresenterStyle(const Windows::UI::Xaml::Style & value) const;
};

template <typename D>
struct WINRT_EBO impl_IFlyoutFactory
{
    Windows::UI::Xaml::Controls::Flyout CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IFlyoutPresenter
{
};

template <typename D>
struct WINRT_EBO impl_IFlyoutPresenterFactory
{
    Windows::UI::Xaml::Controls::FlyoutPresenter CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IFlyoutStatics
{
    Windows::UI::Xaml::DependencyProperty ContentProperty() const;
    Windows::UI::Xaml::DependencyProperty FlyoutPresenterStyleProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IFocusDisengagedEventArgs
{
};

template <typename D>
struct WINRT_EBO impl_IFocusEngagedEventArgs
{
};

template <typename D>
struct WINRT_EBO impl_IFontIcon
{
    hstring Glyph() const;
    void Glyph(hstring_ref value) const;
    double FontSize() const;
    void FontSize(double value) const;
    Windows::UI::Xaml::Media::FontFamily FontFamily() const;
    void FontFamily(const Windows::UI::Xaml::Media::FontFamily & value) const;
    Windows::UI::Text::FontWeight FontWeight() const;
    void FontWeight(const Windows::UI::Text::FontWeight & value) const;
    Windows::UI::Text::FontStyle FontStyle() const;
    void FontStyle(Windows::UI::Text::FontStyle value) const;
};

template <typename D>
struct WINRT_EBO impl_IFontIcon2
{
    bool IsTextScaleFactorEnabled() const;
    void IsTextScaleFactorEnabled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IFontIcon3
{
    bool MirroredWhenRightToLeft() const;
    void MirroredWhenRightToLeft(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IFontIconFactory
{
    Windows::UI::Xaml::Controls::FontIcon CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IFontIconStatics
{
    Windows::UI::Xaml::DependencyProperty GlyphProperty() const;
    Windows::UI::Xaml::DependencyProperty FontSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty FontFamilyProperty() const;
    Windows::UI::Xaml::DependencyProperty FontWeightProperty() const;
    Windows::UI::Xaml::DependencyProperty FontStyleProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IFontIconStatics2
{
    Windows::UI::Xaml::DependencyProperty IsTextScaleFactorEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IFontIconStatics3
{
    Windows::UI::Xaml::DependencyProperty MirroredWhenRightToLeftProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IFrame
{
    int32_t CacheSize() const;
    void CacheSize(int32_t value) const;
    bool CanGoBack() const;
    bool CanGoForward() const;
    Windows::UI::Xaml::Interop::TypeName CurrentSourcePageType() const;
    Windows::UI::Xaml::Interop::TypeName SourcePageType() const;
    void SourcePageType(const Windows::UI::Xaml::Interop::TypeName & value) const;
    int32_t BackStackDepth() const;
    event_token Navigated(const Windows::UI::Xaml::Navigation::NavigatedEventHandler & value) const;
    using Navigated_revoker = event_revoker<IFrame>;
    Navigated_revoker Navigated(auto_revoke_t, const Windows::UI::Xaml::Navigation::NavigatedEventHandler & value) const;
    void Navigated(event_token token) const;
    event_token Navigating(const Windows::UI::Xaml::Navigation::NavigatingCancelEventHandler & value) const;
    using Navigating_revoker = event_revoker<IFrame>;
    Navigating_revoker Navigating(auto_revoke_t, const Windows::UI::Xaml::Navigation::NavigatingCancelEventHandler & value) const;
    void Navigating(event_token token) const;
    event_token NavigationFailed(const Windows::UI::Xaml::Navigation::NavigationFailedEventHandler & value) const;
    using NavigationFailed_revoker = event_revoker<IFrame>;
    NavigationFailed_revoker NavigationFailed(auto_revoke_t, const Windows::UI::Xaml::Navigation::NavigationFailedEventHandler & value) const;
    void NavigationFailed(event_token token) const;
    event_token NavigationStopped(const Windows::UI::Xaml::Navigation::NavigationStoppedEventHandler & value) const;
    using NavigationStopped_revoker = event_revoker<IFrame>;
    NavigationStopped_revoker NavigationStopped(auto_revoke_t, const Windows::UI::Xaml::Navigation::NavigationStoppedEventHandler & value) const;
    void NavigationStopped(event_token token) const;
    void GoBack() const;
    void GoForward() const;
    bool Navigate(const Windows::UI::Xaml::Interop::TypeName & sourcePageType, const Windows::IInspectable & parameter) const;
    hstring GetNavigationState() const;
    void SetNavigationState(hstring_ref navigationState) const;
};

template <typename D>
struct WINRT_EBO impl_IFrame2
{
    Windows::Foundation::Collections::IVector<Windows::UI::Xaml::Navigation::PageStackEntry> BackStack() const;
    Windows::Foundation::Collections::IVector<Windows::UI::Xaml::Navigation::PageStackEntry> ForwardStack() const;
    bool Navigate(const Windows::UI::Xaml::Interop::TypeName & sourcePageType, const Windows::IInspectable & parameter, const Windows::UI::Xaml::Media::Animation::NavigationTransitionInfo & infoOverride) const;
};

template <typename D>
struct WINRT_EBO impl_IFrame3
{
    void GoBack(const Windows::UI::Xaml::Media::Animation::NavigationTransitionInfo & transitionInfoOverride) const;
};

template <typename D>
struct WINRT_EBO impl_IFrameFactory
{
    Windows::UI::Xaml::Controls::Frame CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IFrameStatics
{
    Windows::UI::Xaml::DependencyProperty CacheSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty CanGoBackProperty() const;
    Windows::UI::Xaml::DependencyProperty CanGoForwardProperty() const;
    Windows::UI::Xaml::DependencyProperty CurrentSourcePageTypeProperty() const;
    Windows::UI::Xaml::DependencyProperty SourcePageTypeProperty() const;
    Windows::UI::Xaml::DependencyProperty BackStackDepthProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IFrameStatics2
{
    Windows::UI::Xaml::DependencyProperty BackStackProperty() const;
    Windows::UI::Xaml::DependencyProperty ForwardStackProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IGrid
{
    Windows::UI::Xaml::Controls::RowDefinitionCollection RowDefinitions() const;
    Windows::UI::Xaml::Controls::ColumnDefinitionCollection ColumnDefinitions() const;
};

template <typename D>
struct WINRT_EBO impl_IGrid2
{
    Windows::UI::Xaml::Media::Brush BorderBrush() const;
    void BorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Thickness BorderThickness() const;
    void BorderThickness(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::CornerRadius CornerRadius() const;
    void CornerRadius(const Windows::UI::Xaml::CornerRadius & value) const;
    Windows::UI::Xaml::Thickness Padding() const;
    void Padding(const Windows::UI::Xaml::Thickness & value) const;
};

template <typename D>
struct WINRT_EBO impl_IGridFactory
{
    Windows::UI::Xaml::Controls::Grid CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IGridStatics
{
    Windows::UI::Xaml::DependencyProperty RowProperty() const;
    int32_t GetRow(const Windows::UI::Xaml::FrameworkElement & element) const;
    void SetRow(const Windows::UI::Xaml::FrameworkElement & element, int32_t value) const;
    Windows::UI::Xaml::DependencyProperty ColumnProperty() const;
    int32_t GetColumn(const Windows::UI::Xaml::FrameworkElement & element) const;
    void SetColumn(const Windows::UI::Xaml::FrameworkElement & element, int32_t value) const;
    Windows::UI::Xaml::DependencyProperty RowSpanProperty() const;
    int32_t GetRowSpan(const Windows::UI::Xaml::FrameworkElement & element) const;
    void SetRowSpan(const Windows::UI::Xaml::FrameworkElement & element, int32_t value) const;
    Windows::UI::Xaml::DependencyProperty ColumnSpanProperty() const;
    int32_t GetColumnSpan(const Windows::UI::Xaml::FrameworkElement & element) const;
    void SetColumnSpan(const Windows::UI::Xaml::FrameworkElement & element, int32_t value) const;
};

template <typename D>
struct WINRT_EBO impl_IGridStatics2
{
    Windows::UI::Xaml::DependencyProperty BorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty BorderThicknessProperty() const;
    Windows::UI::Xaml::DependencyProperty CornerRadiusProperty() const;
    Windows::UI::Xaml::DependencyProperty PaddingProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IGridView
{
};

template <typename D>
struct WINRT_EBO impl_IGridViewFactory
{
    Windows::UI::Xaml::Controls::GridView CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IGridViewHeaderItem
{
};

template <typename D>
struct WINRT_EBO impl_IGridViewHeaderItemFactory
{
    Windows::UI::Xaml::Controls::GridViewHeaderItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IGridViewItem
{
    Windows::UI::Xaml::Controls::Primitives::GridViewItemTemplateSettings TemplateSettings() const;
};

template <typename D>
struct WINRT_EBO impl_IGridViewItemFactory
{
    Windows::UI::Xaml::Controls::GridViewItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IGroupItem
{
};

template <typename D>
struct WINRT_EBO impl_IGroupItemFactory
{
    Windows::UI::Xaml::Controls::GroupItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IGroupStyle
{
    Windows::UI::Xaml::Controls::ItemsPanelTemplate Panel() const;
    void Panel(const Windows::UI::Xaml::Controls::ItemsPanelTemplate & value) const;
    Windows::UI::Xaml::Style ContainerStyle() const;
    void ContainerStyle(const Windows::UI::Xaml::Style & value) const;
    Windows::UI::Xaml::Controls::StyleSelector ContainerStyleSelector() const;
    void ContainerStyleSelector(const Windows::UI::Xaml::Controls::StyleSelector & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::Controls::DataTemplateSelector HeaderTemplateSelector() const;
    void HeaderTemplateSelector(const Windows::UI::Xaml::Controls::DataTemplateSelector & value) const;
    bool HidesIfEmpty() const;
    void HidesIfEmpty(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IGroupStyle2
{
    Windows::UI::Xaml::Style HeaderContainerStyle() const;
    void HeaderContainerStyle(const Windows::UI::Xaml::Style & value) const;
};

template <typename D>
struct WINRT_EBO impl_IGroupStyleFactory
{
    Windows::UI::Xaml::Controls::GroupStyle CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IGroupStyleSelector
{
    Windows::UI::Xaml::Controls::GroupStyle SelectGroupStyle(const Windows::IInspectable & group, uint32_t level) const;
};

template <typename D>
struct WINRT_EBO impl_IGroupStyleSelectorFactory
{
    Windows::UI::Xaml::Controls::GroupStyleSelector CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IGroupStyleSelectorOverrides
{
    Windows::UI::Xaml::Controls::GroupStyle SelectGroupStyleCore(const Windows::IInspectable & group, uint32_t level) const;
};

template <typename D>
struct WINRT_EBO impl_IHub
{
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::Controls::Orientation Orientation() const;
    void Orientation(Windows::UI::Xaml::Controls::Orientation value) const;
    int32_t DefaultSectionIndex() const;
    void DefaultSectionIndex(int32_t value) const;
    Windows::Foundation::Collections::IVector<Windows::UI::Xaml::Controls::HubSection> Sections() const;
    Windows::Foundation::Collections::IVector<Windows::UI::Xaml::Controls::HubSection> SectionsInView() const;
    Windows::Foundation::Collections::IObservableVector<Windows::IInspectable> SectionHeaders() const;
    event_token SectionHeaderClick(const Windows::UI::Xaml::Controls::HubSectionHeaderClickEventHandler & value) const;
    using SectionHeaderClick_revoker = event_revoker<IHub>;
    SectionHeaderClick_revoker SectionHeaderClick(auto_revoke_t, const Windows::UI::Xaml::Controls::HubSectionHeaderClickEventHandler & value) const;
    void SectionHeaderClick(event_token token) const;
    event_token SectionsInViewChanged(const Windows::UI::Xaml::Controls::SectionsInViewChangedEventHandler & value) const;
    using SectionsInViewChanged_revoker = event_revoker<IHub>;
    SectionsInViewChanged_revoker SectionsInViewChanged(auto_revoke_t, const Windows::UI::Xaml::Controls::SectionsInViewChangedEventHandler & value) const;
    void SectionsInViewChanged(event_token token) const;
    void ScrollToSection(const Windows::UI::Xaml::Controls::HubSection & section) const;
};

template <typename D>
struct WINRT_EBO impl_IHubFactory
{
    Windows::UI::Xaml::Controls::Hub CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IHubSection
{
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::DataTemplate ContentTemplate() const;
    void ContentTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    bool IsHeaderInteractive() const;
    void IsHeaderInteractive(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IHubSectionFactory
{
    Windows::UI::Xaml::Controls::HubSection CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IHubSectionHeaderClickEventArgs
{
    Windows::UI::Xaml::Controls::HubSection Section() const;
};

template <typename D>
struct WINRT_EBO impl_IHubSectionStatics
{
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty ContentTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty IsHeaderInteractiveProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IHubStatics
{
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty OrientationProperty() const;
    Windows::UI::Xaml::DependencyProperty DefaultSectionIndexProperty() const;
    Windows::UI::Xaml::DependencyProperty SemanticZoomOwnerProperty() const;
    Windows::UI::Xaml::DependencyProperty IsActiveViewProperty() const;
    Windows::UI::Xaml::DependencyProperty IsZoomedInViewProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IHyperlinkButton
{
    Windows::Foundation::Uri NavigateUri() const;
    void NavigateUri(const Windows::Foundation::Uri & value) const;
};

template <typename D>
struct WINRT_EBO impl_IHyperlinkButtonFactory
{
    Windows::UI::Xaml::Controls::HyperlinkButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IHyperlinkButtonStatics
{
    Windows::UI::Xaml::DependencyProperty NavigateUriProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IIconElement
{
    Windows::UI::Xaml::Media::Brush Foreground() const;
    void Foreground(const Windows::UI::Xaml::Media::Brush & value) const;
};

template <typename D>
struct WINRT_EBO impl_IIconElementFactory
{
};

template <typename D>
struct WINRT_EBO impl_IIconElementStatics
{
    Windows::UI::Xaml::DependencyProperty ForegroundProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IImage
{
    Windows::UI::Xaml::Media::ImageSource Source() const;
    void Source(const Windows::UI::Xaml::Media::ImageSource & value) const;
    Windows::UI::Xaml::Media::Stretch Stretch() const;
    void Stretch(Windows::UI::Xaml::Media::Stretch value) const;
    Windows::UI::Xaml::Thickness NineGrid() const;
    void NineGrid(const Windows::UI::Xaml::Thickness & value) const;
    Windows::Media::PlayTo::PlayToSource PlayToSource() const;
    event_token ImageFailed(const Windows::UI::Xaml::ExceptionRoutedEventHandler & value) const;
    using ImageFailed_revoker = event_revoker<IImage>;
    ImageFailed_revoker ImageFailed(auto_revoke_t, const Windows::UI::Xaml::ExceptionRoutedEventHandler & value) const;
    void ImageFailed(event_token token) const;
    event_token ImageOpened(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using ImageOpened_revoker = event_revoker<IImage>;
    ImageOpened_revoker ImageOpened(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void ImageOpened(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IImage2
{
    Windows::Media::Casting::CastingSource GetAsCastingSource() const;
};

template <typename D>
struct WINRT_EBO impl_IImage3
{
    Windows::UI::Composition::CompositionBrush GetAlphaMask() const;
};

template <typename D>
struct WINRT_EBO impl_IImageStatics
{
    Windows::UI::Xaml::DependencyProperty SourceProperty() const;
    Windows::UI::Xaml::DependencyProperty StretchProperty() const;
    Windows::UI::Xaml::DependencyProperty NineGridProperty() const;
    Windows::UI::Xaml::DependencyProperty PlayToSourceProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IInkCanvas
{
    Windows::UI::Input::Inking::InkPresenter InkPresenter() const;
};

template <typename D>
struct WINRT_EBO impl_IInkCanvasFactory
{
    Windows::UI::Xaml::Controls::InkCanvas CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbar
{
    Windows::UI::Xaml::Controls::InkToolbarInitialControls InitialControls() const;
    void InitialControls(Windows::UI::Xaml::Controls::InkToolbarInitialControls value) const;
    Windows::UI::Xaml::DependencyObjectCollection Children() const;
    Windows::UI::Xaml::Controls::InkToolbarToolButton ActiveTool() const;
    void ActiveTool(const Windows::UI::Xaml::Controls::InkToolbarToolButton & value) const;
    Windows::UI::Input::Inking::InkDrawingAttributes InkDrawingAttributes() const;
    bool IsRulerButtonChecked() const;
    void IsRulerButtonChecked(bool value) const;
    Windows::UI::Xaml::Controls::InkCanvas TargetInkCanvas() const;
    void TargetInkCanvas(const Windows::UI::Xaml::Controls::InkCanvas & value) const;
    event_token ActiveToolChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::InkToolbar, Windows::IInspectable> & value) const;
    using ActiveToolChanged_revoker = event_revoker<IInkToolbar>;
    ActiveToolChanged_revoker ActiveToolChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::InkToolbar, Windows::IInspectable> & value) const;
    void ActiveToolChanged(event_token token) const;
    event_token InkDrawingAttributesChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::InkToolbar, Windows::IInspectable> & value) const;
    using InkDrawingAttributesChanged_revoker = event_revoker<IInkToolbar>;
    InkDrawingAttributesChanged_revoker InkDrawingAttributesChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::InkToolbar, Windows::IInspectable> & value) const;
    void InkDrawingAttributesChanged(event_token token) const;
    event_token EraseAllClicked(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::InkToolbar, Windows::IInspectable> & value) const;
    using EraseAllClicked_revoker = event_revoker<IInkToolbar>;
    EraseAllClicked_revoker EraseAllClicked(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::InkToolbar, Windows::IInspectable> & value) const;
    void EraseAllClicked(event_token token) const;
    event_token IsRulerButtonCheckedChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::InkToolbar, Windows::IInspectable> & value) const;
    using IsRulerButtonCheckedChanged_revoker = event_revoker<IInkToolbar>;
    IsRulerButtonCheckedChanged_revoker IsRulerButtonCheckedChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::InkToolbar, Windows::IInspectable> & value) const;
    void IsRulerButtonCheckedChanged(event_token token) const;
    Windows::UI::Xaml::Controls::InkToolbarToolButton GetToolButton(Windows::UI::Xaml::Controls::InkToolbarTool tool) const;
    Windows::UI::Xaml::Controls::InkToolbarToggleButton GetToggleButton(Windows::UI::Xaml::Controls::InkToolbarToggle tool) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarBallpointPenButton
{
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarBallpointPenButtonFactory
{
    Windows::UI::Xaml::Controls::InkToolbarBallpointPenButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarCustomPen
{
    Windows::UI::Input::Inking::InkDrawingAttributes CreateInkDrawingAttributes(const Windows::UI::Xaml::Media::Brush & brush, double strokeWidth) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarCustomPenButton
{
    Windows::UI::Xaml::Controls::InkToolbarCustomPen CustomPen() const;
    void CustomPen(const Windows::UI::Xaml::Controls::InkToolbarCustomPen & value) const;
    Windows::UI::Xaml::UIElement ConfigurationContent() const;
    void ConfigurationContent(const Windows::UI::Xaml::UIElement & value) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarCustomPenButtonFactory
{
    Windows::UI::Xaml::Controls::InkToolbarCustomPenButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarCustomPenButtonStatics
{
    Windows::UI::Xaml::DependencyProperty CustomPenProperty() const;
    Windows::UI::Xaml::DependencyProperty ConfigurationContentProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarCustomPenFactory
{
    Windows::UI::Xaml::Controls::InkToolbarCustomPen CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarCustomPenOverrides
{
    Windows::UI::Input::Inking::InkDrawingAttributes CreateInkDrawingAttributesCore(const Windows::UI::Xaml::Media::Brush & brush, double strokeWidth) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarCustomToggleButton
{
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarCustomToggleButtonFactory
{
    Windows::UI::Xaml::Controls::InkToolbarCustomToggleButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarCustomToolButton
{
    Windows::UI::Xaml::UIElement ConfigurationContent() const;
    void ConfigurationContent(const Windows::UI::Xaml::UIElement & value) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarCustomToolButtonFactory
{
    Windows::UI::Xaml::Controls::InkToolbarCustomToolButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarCustomToolButtonStatics
{
    Windows::UI::Xaml::DependencyProperty ConfigurationContentProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarEraserButton
{
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarEraserButtonFactory
{
    Windows::UI::Xaml::Controls::InkToolbarEraserButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarFactory
{
    Windows::UI::Xaml::Controls::InkToolbar CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarHighlighterButton
{
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarHighlighterButtonFactory
{
    Windows::UI::Xaml::Controls::InkToolbarHighlighterButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarPenButton
{
    Windows::Foundation::Collections::IVector<Windows::UI::Xaml::Media::Brush> Palette() const;
    void Palette(const Windows::Foundation::Collections::IVector<Windows::UI::Xaml::Media::Brush> & value) const;
    double MinStrokeWidth() const;
    void MinStrokeWidth(double value) const;
    double MaxStrokeWidth() const;
    void MaxStrokeWidth(double value) const;
    Windows::UI::Xaml::Media::Brush SelectedBrush() const;
    int32_t SelectedBrushIndex() const;
    void SelectedBrushIndex(int32_t value) const;
    double SelectedStrokeWidth() const;
    void SelectedStrokeWidth(double value) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarPenButtonFactory
{
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarPenButtonStatics
{
    Windows::UI::Xaml::DependencyProperty PaletteProperty() const;
    Windows::UI::Xaml::DependencyProperty MinStrokeWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxStrokeWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedBrushIndexProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedStrokeWidthProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarPenConfigurationControl
{
    Windows::UI::Xaml::Controls::InkToolbarPenButton PenButton() const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarPenConfigurationControlFactory
{
    Windows::UI::Xaml::Controls::InkToolbarPenConfigurationControl CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarPenConfigurationControlStatics
{
    Windows::UI::Xaml::DependencyProperty PenButtonProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarPencilButton
{
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarPencilButtonFactory
{
    Windows::UI::Xaml::Controls::InkToolbarPencilButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarRulerButton
{
    Windows::UI::Input::Inking::InkPresenterRuler Ruler() const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarRulerButtonFactory
{
    Windows::UI::Xaml::Controls::InkToolbarRulerButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarRulerButtonStatics
{
    Windows::UI::Xaml::DependencyProperty RulerProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarStatics
{
    Windows::UI::Xaml::DependencyProperty InitialControlsProperty() const;
    Windows::UI::Xaml::DependencyProperty ChildrenProperty() const;
    Windows::UI::Xaml::DependencyProperty ActiveToolProperty() const;
    Windows::UI::Xaml::DependencyProperty InkDrawingAttributesProperty() const;
    Windows::UI::Xaml::DependencyProperty IsRulerButtonCheckedProperty() const;
    Windows::UI::Xaml::DependencyProperty TargetInkCanvasProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarToggleButton
{
    Windows::UI::Xaml::Controls::InkToolbarToggle ToggleKind() const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarToggleButtonFactory
{
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarToolButton
{
    Windows::UI::Xaml::Controls::InkToolbarTool ToolKind() const;
    bool IsExtensionGlyphShown() const;
    void IsExtensionGlyphShown(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarToolButtonFactory
{
};

template <typename D>
struct WINRT_EBO impl_IInkToolbarToolButtonStatics
{
    Windows::UI::Xaml::DependencyProperty IsExtensionGlyphShownProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IInsertionPanel
{
    void GetInsertionIndexes(const Windows::Foundation::Point & position, int32_t & first, int32_t & second) const;
};

template <typename D>
struct WINRT_EBO impl_IItemClickEventArgs
{
    Windows::IInspectable ClickedItem() const;
};

template <typename D>
struct WINRT_EBO impl_IItemContainerGenerator
{
    event_token ItemsChanged(const Windows::UI::Xaml::Controls::Primitives::ItemsChangedEventHandler & value) const;
    using ItemsChanged_revoker = event_revoker<IItemContainerGenerator>;
    ItemsChanged_revoker ItemsChanged(auto_revoke_t, const Windows::UI::Xaml::Controls::Primitives::ItemsChangedEventHandler & value) const;
    void ItemsChanged(event_token token) const;
    Windows::IInspectable ItemFromContainer(const Windows::UI::Xaml::DependencyObject & container) const;
    Windows::UI::Xaml::DependencyObject ContainerFromItem(const Windows::IInspectable & item) const;
    int32_t IndexFromContainer(const Windows::UI::Xaml::DependencyObject & container) const;
    Windows::UI::Xaml::DependencyObject ContainerFromIndex(int32_t index) const;
    Windows::UI::Xaml::Controls::ItemContainerGenerator GetItemContainerGeneratorForPanel(const Windows::UI::Xaml::Controls::Panel & panel) const;
    void StartAt(const Windows::UI::Xaml::Controls::Primitives::GeneratorPosition & position, Windows::UI::Xaml::Controls::Primitives::GeneratorDirection direction, bool allowStartAtRealizedItem) const;
    void Stop() const;
    Windows::UI::Xaml::DependencyObject GenerateNext(bool & isNewlyRealized) const;
    void PrepareItemContainer(const Windows::UI::Xaml::DependencyObject & container) const;
    void RemoveAll() const;
    void Remove(const Windows::UI::Xaml::Controls::Primitives::GeneratorPosition & position, int32_t count) const;
    Windows::UI::Xaml::Controls::Primitives::GeneratorPosition GeneratorPositionFromIndex(int32_t itemIndex) const;
    int32_t IndexFromGeneratorPosition(const Windows::UI::Xaml::Controls::Primitives::GeneratorPosition & position) const;
    void Recycle(const Windows::UI::Xaml::Controls::Primitives::GeneratorPosition & position, int32_t count) const;
};

template <typename D>
struct WINRT_EBO impl_IItemContainerMapping
{
    Windows::IInspectable ItemFromContainer(const Windows::UI::Xaml::DependencyObject & container) const;
    Windows::UI::Xaml::DependencyObject ContainerFromItem(const Windows::IInspectable & item) const;
    int32_t IndexFromContainer(const Windows::UI::Xaml::DependencyObject & container) const;
    Windows::UI::Xaml::DependencyObject ContainerFromIndex(int32_t index) const;
};

template <typename D>
struct WINRT_EBO impl_IItemsControl
{
    Windows::IInspectable ItemsSource() const;
    void ItemsSource(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::Controls::ItemCollection Items() const;
    Windows::UI::Xaml::DataTemplate ItemTemplate() const;
    void ItemTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::Controls::DataTemplateSelector ItemTemplateSelector() const;
    void ItemTemplateSelector(const Windows::UI::Xaml::Controls::DataTemplateSelector & value) const;
    Windows::UI::Xaml::Controls::ItemsPanelTemplate ItemsPanel() const;
    void ItemsPanel(const Windows::UI::Xaml::Controls::ItemsPanelTemplate & value) const;
    hstring DisplayMemberPath() const;
    void DisplayMemberPath(hstring_ref value) const;
    Windows::UI::Xaml::Style ItemContainerStyle() const;
    void ItemContainerStyle(const Windows::UI::Xaml::Style & value) const;
    Windows::UI::Xaml::Controls::StyleSelector ItemContainerStyleSelector() const;
    void ItemContainerStyleSelector(const Windows::UI::Xaml::Controls::StyleSelector & value) const;
    Windows::UI::Xaml::Controls::ItemContainerGenerator ItemContainerGenerator() const;
    Windows::UI::Xaml::Media::Animation::TransitionCollection ItemContainerTransitions() const;
    void ItemContainerTransitions(const Windows::UI::Xaml::Media::Animation::TransitionCollection & value) const;
    Windows::Foundation::Collections::IObservableVector<Windows::UI::Xaml::Controls::GroupStyle> GroupStyle() const;
    Windows::UI::Xaml::Controls::GroupStyleSelector GroupStyleSelector() const;
    void GroupStyleSelector(const Windows::UI::Xaml::Controls::GroupStyleSelector & value) const;
    bool IsGrouping() const;
};

template <typename D>
struct WINRT_EBO impl_IItemsControl2
{
    Windows::UI::Xaml::Controls::Panel ItemsPanelRoot() const;
};

template <typename D>
struct WINRT_EBO impl_IItemsControl3
{
    Windows::UI::Xaml::DependencyObject GroupHeaderContainerFromItemContainer(const Windows::UI::Xaml::DependencyObject & itemContainer) const;
};

template <typename D>
struct WINRT_EBO impl_IItemsControlFactory
{
    Windows::UI::Xaml::Controls::ItemsControl CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IItemsControlOverrides
{
    bool IsItemItsOwnContainerOverride(const Windows::IInspectable & item) const;
    Windows::UI::Xaml::DependencyObject GetContainerForItemOverride() const;
    void ClearContainerForItemOverride(const Windows::UI::Xaml::DependencyObject & element, const Windows::IInspectable & item) const;
    void PrepareContainerForItemOverride(const Windows::UI::Xaml::DependencyObject & element, const Windows::IInspectable & item) const;
    void OnItemsChanged(const Windows::IInspectable & e) const;
    void OnItemContainerStyleChanged(const Windows::UI::Xaml::Style & oldItemContainerStyle, const Windows::UI::Xaml::Style & newItemContainerStyle) const;
    void OnItemContainerStyleSelectorChanged(const Windows::UI::Xaml::Controls::StyleSelector & oldItemContainerStyleSelector, const Windows::UI::Xaml::Controls::StyleSelector & newItemContainerStyleSelector) const;
    void OnItemTemplateChanged(const Windows::UI::Xaml::DataTemplate & oldItemTemplate, const Windows::UI::Xaml::DataTemplate & newItemTemplate) const;
    void OnItemTemplateSelectorChanged(const Windows::UI::Xaml::Controls::DataTemplateSelector & oldItemTemplateSelector, const Windows::UI::Xaml::Controls::DataTemplateSelector & newItemTemplateSelector) const;
    void OnGroupStyleSelectorChanged(const Windows::UI::Xaml::Controls::GroupStyleSelector & oldGroupStyleSelector, const Windows::UI::Xaml::Controls::GroupStyleSelector & newGroupStyleSelector) const;
};

template <typename D>
struct WINRT_EBO impl_IItemsControlStatics
{
    Windows::UI::Xaml::DependencyProperty ItemsSourceProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemTemplateSelectorProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemsPanelProperty() const;
    Windows::UI::Xaml::DependencyProperty DisplayMemberPathProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemContainerStyleProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemContainerStyleSelectorProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemContainerTransitionsProperty() const;
    Windows::UI::Xaml::DependencyProperty GroupStyleSelectorProperty() const;
    Windows::UI::Xaml::DependencyProperty IsGroupingProperty() const;
    Windows::UI::Xaml::Controls::ItemsControl GetItemsOwner(const Windows::UI::Xaml::DependencyObject & element) const;
    Windows::UI::Xaml::Controls::ItemsControl ItemsControlFromItemContainer(const Windows::UI::Xaml::DependencyObject & container) const;
};

template <typename D>
struct WINRT_EBO impl_IItemsPanelTemplate
{
};

template <typename D>
struct WINRT_EBO impl_IItemsPickedEventArgs
{
    Windows::Foundation::Collections::IVector<Windows::IInspectable> AddedItems() const;
    Windows::Foundation::Collections::IVector<Windows::IInspectable> RemovedItems() const;
};

template <typename D>
struct WINRT_EBO impl_IItemsPresenter
{
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::Media::Animation::TransitionCollection HeaderTransitions() const;
    void HeaderTransitions(const Windows::UI::Xaml::Media::Animation::TransitionCollection & value) const;
    Windows::UI::Xaml::Thickness Padding() const;
    void Padding(const Windows::UI::Xaml::Thickness & value) const;
};

template <typename D>
struct WINRT_EBO impl_IItemsPresenter2
{
    Windows::IInspectable Footer() const;
    void Footer(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate FooterTemplate() const;
    void FooterTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::Media::Animation::TransitionCollection FooterTransitions() const;
    void FooterTransitions(const Windows::UI::Xaml::Media::Animation::TransitionCollection & value) const;
};

template <typename D>
struct WINRT_EBO impl_IItemsPresenterStatics
{
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTransitionsProperty() const;
    Windows::UI::Xaml::DependencyProperty PaddingProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IItemsPresenterStatics2
{
    Windows::UI::Xaml::DependencyProperty FooterProperty() const;
    Windows::UI::Xaml::DependencyProperty FooterTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty FooterTransitionsProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IItemsStackPanel
{
    Windows::UI::Xaml::Thickness GroupPadding() const;
    void GroupPadding(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::Controls::Orientation Orientation() const;
    void Orientation(Windows::UI::Xaml::Controls::Orientation value) const;
    int32_t FirstCacheIndex() const;
    int32_t FirstVisibleIndex() const;
    int32_t LastVisibleIndex() const;
    int32_t LastCacheIndex() const;
    Windows::UI::Xaml::Controls::PanelScrollingDirection ScrollingDirection() const;
    Windows::UI::Xaml::Controls::Primitives::GroupHeaderPlacement GroupHeaderPlacement() const;
    void GroupHeaderPlacement(Windows::UI::Xaml::Controls::Primitives::GroupHeaderPlacement value) const;
    Windows::UI::Xaml::Controls::ItemsUpdatingScrollMode ItemsUpdatingScrollMode() const;
    void ItemsUpdatingScrollMode(Windows::UI::Xaml::Controls::ItemsUpdatingScrollMode value) const;
    double CacheLength() const;
    void CacheLength(double value) const;
};

template <typename D>
struct WINRT_EBO impl_IItemsStackPanel2
{
    bool AreStickyGroupHeadersEnabled() const;
    void AreStickyGroupHeadersEnabled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IItemsStackPanelStatics
{
    Windows::UI::Xaml::DependencyProperty GroupPaddingProperty() const;
    Windows::UI::Xaml::DependencyProperty OrientationProperty() const;
    Windows::UI::Xaml::DependencyProperty GroupHeaderPlacementProperty() const;
    Windows::UI::Xaml::DependencyProperty CacheLengthProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IItemsStackPanelStatics2
{
    Windows::UI::Xaml::DependencyProperty AreStickyGroupHeadersEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IItemsWrapGrid
{
    Windows::UI::Xaml::Thickness GroupPadding() const;
    void GroupPadding(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::Controls::Orientation Orientation() const;
    void Orientation(Windows::UI::Xaml::Controls::Orientation value) const;
    int32_t MaximumRowsOrColumns() const;
    void MaximumRowsOrColumns(int32_t value) const;
    double ItemWidth() const;
    void ItemWidth(double value) const;
    double ItemHeight() const;
    void ItemHeight(double value) const;
    int32_t FirstCacheIndex() const;
    int32_t FirstVisibleIndex() const;
    int32_t LastVisibleIndex() const;
    int32_t LastCacheIndex() const;
    Windows::UI::Xaml::Controls::PanelScrollingDirection ScrollingDirection() const;
    Windows::UI::Xaml::Controls::Primitives::GroupHeaderPlacement GroupHeaderPlacement() const;
    void GroupHeaderPlacement(Windows::UI::Xaml::Controls::Primitives::GroupHeaderPlacement value) const;
    double CacheLength() const;
    void CacheLength(double value) const;
};

template <typename D>
struct WINRT_EBO impl_IItemsWrapGrid2
{
    bool AreStickyGroupHeadersEnabled() const;
    void AreStickyGroupHeadersEnabled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IItemsWrapGridStatics
{
    Windows::UI::Xaml::DependencyProperty GroupPaddingProperty() const;
    Windows::UI::Xaml::DependencyProperty OrientationProperty() const;
    Windows::UI::Xaml::DependencyProperty MaximumRowsOrColumnsProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty GroupHeaderPlacementProperty() const;
    Windows::UI::Xaml::DependencyProperty CacheLengthProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IItemsWrapGridStatics2
{
    Windows::UI::Xaml::DependencyProperty AreStickyGroupHeadersEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IListBox
{
    Windows::Foundation::Collections::IVector<Windows::IInspectable> SelectedItems() const;
    Windows::UI::Xaml::Controls::SelectionMode SelectionMode() const;
    void SelectionMode(Windows::UI::Xaml::Controls::SelectionMode value) const;
    void ScrollIntoView(const Windows::IInspectable & item) const;
    void SelectAll() const;
};

template <typename D>
struct WINRT_EBO impl_IListBox2
{
    bool SingleSelectionFollowsFocus() const;
    void SingleSelectionFollowsFocus(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IListBoxFactory
{
    Windows::UI::Xaml::Controls::ListBox CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IListBoxItem
{
};

template <typename D>
struct WINRT_EBO impl_IListBoxItemFactory
{
    Windows::UI::Xaml::Controls::ListBoxItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IListBoxStatics
{
    Windows::UI::Xaml::DependencyProperty SelectionModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IListBoxStatics2
{
    Windows::UI::Xaml::DependencyProperty SingleSelectionFollowsFocusProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IListPickerFlyout
{
    Windows::IInspectable ItemsSource() const;
    void ItemsSource(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate ItemTemplate() const;
    void ItemTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    hstring DisplayMemberPath() const;
    void DisplayMemberPath(hstring_ref value) const;
    Windows::UI::Xaml::Controls::ListPickerFlyoutSelectionMode SelectionMode() const;
    void SelectionMode(Windows::UI::Xaml::Controls::ListPickerFlyoutSelectionMode value) const;
    int32_t SelectedIndex() const;
    void SelectedIndex(int32_t value) const;
    Windows::IInspectable SelectedItem() const;
    void SelectedItem(const Windows::IInspectable & value) const;
    Windows::IInspectable SelectedValue() const;
    void SelectedValue(const Windows::IInspectable & value) const;
    hstring SelectedValuePath() const;
    void SelectedValuePath(hstring_ref value) const;
    Windows::Foundation::Collections::IVector<Windows::IInspectable> SelectedItems() const;
    event_token ItemsPicked(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListPickerFlyout, Windows::UI::Xaml::Controls::ItemsPickedEventArgs> & value) const;
    using ItemsPicked_revoker = event_revoker<IListPickerFlyout>;
    ItemsPicked_revoker ItemsPicked(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListPickerFlyout, Windows::UI::Xaml::Controls::ItemsPickedEventArgs> & value) const;
    void ItemsPicked(event_token token) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::IInspectable>> ShowAtAsync(const Windows::UI::Xaml::FrameworkElement & target) const;
};

template <typename D>
struct WINRT_EBO impl_IListPickerFlyoutPresenter
{
};

template <typename D>
struct WINRT_EBO impl_IListPickerFlyoutStatics
{
    Windows::UI::Xaml::DependencyProperty ItemsSourceProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty DisplayMemberPathProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectionModeProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedIndexProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedItemProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedValueProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedValuePathProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IListView
{
};

template <typename D>
struct WINRT_EBO impl_IListViewBase
{
    Windows::Foundation::Collections::IVector<Windows::IInspectable> SelectedItems() const;
    Windows::UI::Xaml::Controls::ListViewSelectionMode SelectionMode() const;
    void SelectionMode(Windows::UI::Xaml::Controls::ListViewSelectionMode value) const;
    bool IsSwipeEnabled() const;
    void IsSwipeEnabled(bool value) const;
    bool CanDragItems() const;
    void CanDragItems(bool value) const;
    bool CanReorderItems() const;
    void CanReorderItems(bool value) const;
    bool IsItemClickEnabled() const;
    void IsItemClickEnabled(bool value) const;
    double DataFetchSize() const;
    void DataFetchSize(double value) const;
    double IncrementalLoadingThreshold() const;
    void IncrementalLoadingThreshold(double value) const;
    Windows::UI::Xaml::Controls::IncrementalLoadingTrigger IncrementalLoadingTrigger() const;
    void IncrementalLoadingTrigger(Windows::UI::Xaml::Controls::IncrementalLoadingTrigger value) const;
    event_token ItemClick(const Windows::UI::Xaml::Controls::ItemClickEventHandler & value) const;
    using ItemClick_revoker = event_revoker<IListViewBase>;
    ItemClick_revoker ItemClick(auto_revoke_t, const Windows::UI::Xaml::Controls::ItemClickEventHandler & value) const;
    void ItemClick(event_token token) const;
    event_token DragItemsStarting(const Windows::UI::Xaml::Controls::DragItemsStartingEventHandler & value) const;
    using DragItemsStarting_revoker = event_revoker<IListViewBase>;
    DragItemsStarting_revoker DragItemsStarting(auto_revoke_t, const Windows::UI::Xaml::Controls::DragItemsStartingEventHandler & value) const;
    void DragItemsStarting(event_token token) const;
    void ScrollIntoView(const Windows::IInspectable & item) const;
    void SelectAll() const;
    Windows::Foundation::IAsyncOperation<Windows::UI::Xaml::Data::LoadMoreItemsResult> LoadMoreItemsAsync() const;
    void ScrollIntoView(const Windows::IInspectable & item, Windows::UI::Xaml::Controls::ScrollIntoViewAlignment alignment) const;
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::Media::Animation::TransitionCollection HeaderTransitions() const;
    void HeaderTransitions(const Windows::UI::Xaml::Media::Animation::TransitionCollection & value) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewBase2
{
    bool ShowsScrollingPlaceholders() const;
    void ShowsScrollingPlaceholders(bool value) const;
    event_token ContainerContentChanging(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs> & value) const;
    using ContainerContentChanging_revoker = event_revoker<IListViewBase2>;
    ContainerContentChanging_revoker ContainerContentChanging(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ContainerContentChangingEventArgs> & value) const;
    void ContainerContentChanging(event_token token) const;
    void SetDesiredContainerUpdateDuration(const Windows::Foundation::TimeSpan & duration) const;
    Windows::IInspectable Footer() const;
    void Footer(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate FooterTemplate() const;
    void FooterTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::Media::Animation::TransitionCollection FooterTransitions() const;
    void FooterTransitions(const Windows::UI::Xaml::Media::Animation::TransitionCollection & value) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewBase3
{
    Windows::UI::Xaml::Controls::ListViewReorderMode ReorderMode() const;
    void ReorderMode(Windows::UI::Xaml::Controls::ListViewReorderMode value) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewBase4
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Xaml::Data::ItemIndexRange> SelectedRanges() const;
    bool IsMultiSelectCheckBoxEnabled() const;
    void IsMultiSelectCheckBoxEnabled(bool value) const;
    event_token DragItemsCompleted(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs> & value) const;
    using DragItemsCompleted_revoker = event_revoker<IListViewBase4>;
    DragItemsCompleted_revoker DragItemsCompleted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::DragItemsCompletedEventArgs> & value) const;
    void DragItemsCompleted(event_token token) const;
    event_token ChoosingItemContainer(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs> & value) const;
    using ChoosingItemContainer_revoker = event_revoker<IListViewBase4>;
    ChoosingItemContainer_revoker ChoosingItemContainer(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ChoosingItemContainerEventArgs> & value) const;
    void ChoosingItemContainer(event_token token) const;
    event_token ChoosingGroupHeaderContainer(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs> & value) const;
    using ChoosingGroupHeaderContainer_revoker = event_revoker<IListViewBase4>;
    ChoosingGroupHeaderContainer_revoker ChoosingGroupHeaderContainer(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::ListViewBase, Windows::UI::Xaml::Controls::ChoosingGroupHeaderContainerEventArgs> & value) const;
    void ChoosingGroupHeaderContainer(event_token token) const;
    void SelectRange(const Windows::UI::Xaml::Data::ItemIndexRange & itemIndexRange) const;
    void DeselectRange(const Windows::UI::Xaml::Data::ItemIndexRange & itemIndexRange) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewBase5
{
    bool SingleSelectionFollowsFocus() const;
    void SingleSelectionFollowsFocus(bool value) const;
    bool IsDragSource() const;
};

template <typename D>
struct WINRT_EBO impl_IListViewBaseFactory
{
    Windows::UI::Xaml::Controls::ListViewBase CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewBaseHeaderItem
{
};

template <typename D>
struct WINRT_EBO impl_IListViewBaseHeaderItemFactory
{
};

template <typename D>
struct WINRT_EBO impl_IListViewBaseStatics
{
    Windows::UI::Xaml::DependencyProperty SelectionModeProperty() const;
    Windows::UI::Xaml::DependencyProperty IsSwipeEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty CanDragItemsProperty() const;
    Windows::UI::Xaml::DependencyProperty CanReorderItemsProperty() const;
    Windows::UI::Xaml::DependencyProperty IsItemClickEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty DataFetchSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty IncrementalLoadingThresholdProperty() const;
    Windows::UI::Xaml::DependencyProperty IncrementalLoadingTriggerProperty() const;
    Windows::UI::Xaml::DependencyProperty SemanticZoomOwnerProperty() const;
    Windows::UI::Xaml::DependencyProperty IsActiveViewProperty() const;
    Windows::UI::Xaml::DependencyProperty IsZoomedInViewProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTransitionsProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IListViewBaseStatics2
{
    Windows::UI::Xaml::DependencyProperty ShowsScrollingPlaceholdersProperty() const;
    Windows::UI::Xaml::DependencyProperty FooterProperty() const;
    Windows::UI::Xaml::DependencyProperty FooterTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty FooterTransitionsProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IListViewBaseStatics3
{
    Windows::UI::Xaml::DependencyProperty ReorderModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IListViewBaseStatics4
{
    Windows::UI::Xaml::DependencyProperty IsMultiSelectCheckBoxEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IListViewBaseStatics5
{
    Windows::UI::Xaml::DependencyProperty SingleSelectionFollowsFocusProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IListViewFactory
{
    Windows::UI::Xaml::Controls::ListView CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewHeaderItem
{
};

template <typename D>
struct WINRT_EBO impl_IListViewHeaderItemFactory
{
    Windows::UI::Xaml::Controls::ListViewHeaderItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewItem
{
    Windows::UI::Xaml::Controls::Primitives::ListViewItemTemplateSettings TemplateSettings() const;
};

template <typename D>
struct WINRT_EBO impl_IListViewItemFactory
{
    Windows::UI::Xaml::Controls::ListViewItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewPersistenceHelper
{
};

template <typename D>
struct WINRT_EBO impl_IListViewPersistenceHelperStatics
{
    hstring GetRelativeScrollPosition(const Windows::UI::Xaml::Controls::ListViewBase & listViewBase, const Windows::UI::Xaml::Controls::ListViewItemToKeyHandler & itemToKeyHandler) const;
    Windows::Foundation::IAsyncAction SetRelativeScrollPositionAsync(const Windows::UI::Xaml::Controls::ListViewBase & listViewBase, hstring_ref relativeScrollPosition, const Windows::UI::Xaml::Controls::ListViewKeyToItemHandler & keyToItemHandler) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaElement
{
    Windows::UI::Xaml::Media::ImageSource PosterSource() const;
    void PosterSource(const Windows::UI::Xaml::Media::ImageSource & value) const;
    Windows::Foundation::Uri Source() const;
    void Source(const Windows::Foundation::Uri & value) const;
    bool IsMuted() const;
    void IsMuted(bool value) const;
    bool IsAudioOnly() const;
    bool AutoPlay() const;
    void AutoPlay(bool value) const;
    double Volume() const;
    void Volume(double value) const;
    double Balance() const;
    void Balance(double value) const;
    int32_t NaturalVideoHeight() const;
    int32_t NaturalVideoWidth() const;
    Windows::UI::Xaml::Duration NaturalDuration() const;
    Windows::Foundation::TimeSpan Position() const;
    void Position(const Windows::Foundation::TimeSpan & value) const;
    double DownloadProgress() const;
    double BufferingProgress() const;
    double DownloadProgressOffset() const;
    Windows::UI::Xaml::Media::MediaElementState CurrentState() const;
    Windows::UI::Xaml::Media::TimelineMarkerCollection Markers() const;
    bool CanSeek() const;
    bool CanPause() const;
    int32_t AudioStreamCount() const;
    Windows::Foundation::IReference<int32_t> AudioStreamIndex() const;
    void AudioStreamIndex(const Windows::Foundation::IReference<int32_t> & value) const;
    double PlaybackRate() const;
    void PlaybackRate(double value) const;
    bool IsLooping() const;
    void IsLooping(bool value) const;
    Windows::Media::PlayTo::PlayToSource PlayToSource() const;
    double DefaultPlaybackRate() const;
    void DefaultPlaybackRate(double value) const;
    int32_t AspectRatioWidth() const;
    int32_t AspectRatioHeight() const;
    bool RealTimePlayback() const;
    void RealTimePlayback(bool value) const;
    Windows::UI::Xaml::Media::AudioCategory AudioCategory() const;
    void AudioCategory(Windows::UI::Xaml::Media::AudioCategory value) const;
    Windows::UI::Xaml::Media::AudioDeviceType AudioDeviceType() const;
    void AudioDeviceType(Windows::UI::Xaml::Media::AudioDeviceType value) const;
    Windows::Media::Protection::MediaProtectionManager ProtectionManager() const;
    void ProtectionManager(const Windows::Media::Protection::MediaProtectionManager & value) const;
    Windows::UI::Xaml::Media::Stereo3DVideoPackingMode Stereo3DVideoPackingMode() const;
    void Stereo3DVideoPackingMode(Windows::UI::Xaml::Media::Stereo3DVideoPackingMode value) const;
    Windows::UI::Xaml::Media::Stereo3DVideoRenderMode Stereo3DVideoRenderMode() const;
    void Stereo3DVideoRenderMode(Windows::UI::Xaml::Media::Stereo3DVideoRenderMode value) const;
    bool IsStereo3DVideo() const;
    event_token MediaOpened(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using MediaOpened_revoker = event_revoker<IMediaElement>;
    MediaOpened_revoker MediaOpened(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void MediaOpened(event_token token) const;
    event_token MediaEnded(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using MediaEnded_revoker = event_revoker<IMediaElement>;
    MediaEnded_revoker MediaEnded(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void MediaEnded(event_token token) const;
    event_token MediaFailed(const Windows::UI::Xaml::ExceptionRoutedEventHandler & value) const;
    using MediaFailed_revoker = event_revoker<IMediaElement>;
    MediaFailed_revoker MediaFailed(auto_revoke_t, const Windows::UI::Xaml::ExceptionRoutedEventHandler & value) const;
    void MediaFailed(event_token token) const;
    event_token DownloadProgressChanged(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using DownloadProgressChanged_revoker = event_revoker<IMediaElement>;
    DownloadProgressChanged_revoker DownloadProgressChanged(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void DownloadProgressChanged(event_token token) const;
    event_token BufferingProgressChanged(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using BufferingProgressChanged_revoker = event_revoker<IMediaElement>;
    BufferingProgressChanged_revoker BufferingProgressChanged(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void BufferingProgressChanged(event_token token) const;
    event_token CurrentStateChanged(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using CurrentStateChanged_revoker = event_revoker<IMediaElement>;
    CurrentStateChanged_revoker CurrentStateChanged(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void CurrentStateChanged(event_token token) const;
    event_token MarkerReached(const Windows::UI::Xaml::Media::TimelineMarkerRoutedEventHandler & value) const;
    using MarkerReached_revoker = event_revoker<IMediaElement>;
    MarkerReached_revoker MarkerReached(auto_revoke_t, const Windows::UI::Xaml::Media::TimelineMarkerRoutedEventHandler & value) const;
    void MarkerReached(event_token token) const;
    event_token RateChanged(const Windows::UI::Xaml::Media::RateChangedRoutedEventHandler & value) const;
    using RateChanged_revoker = event_revoker<IMediaElement>;
    RateChanged_revoker RateChanged(auto_revoke_t, const Windows::UI::Xaml::Media::RateChangedRoutedEventHandler & value) const;
    void RateChanged(event_token token) const;
    event_token VolumeChanged(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using VolumeChanged_revoker = event_revoker<IMediaElement>;
    VolumeChanged_revoker VolumeChanged(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void VolumeChanged(event_token token) const;
    event_token SeekCompleted(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using SeekCompleted_revoker = event_revoker<IMediaElement>;
    SeekCompleted_revoker SeekCompleted(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void SeekCompleted(event_token token) const;
    void Stop() const;
    void Play() const;
    void Pause() const;
    Windows::UI::Xaml::Media::MediaCanPlayResponse CanPlayType(hstring_ref type) const;
    void SetSource(const Windows::Storage::Streams::IRandomAccessStream & stream, hstring_ref mimeType) const;
    hstring GetAudioStreamLanguage(const Windows::Foundation::IReference<int32_t> & index) const;
    void AddAudioEffect(hstring_ref effectID, bool effectOptional, const Windows::Foundation::Collections::IPropertySet & effectConfiguration) const;
    void AddVideoEffect(hstring_ref effectID, bool effectOptional, const Windows::Foundation::Collections::IPropertySet & effectConfiguration) const;
    void RemoveAllEffects() const;
    Windows::UI::Xaml::Media::Stereo3DVideoPackingMode ActualStereo3DVideoPackingMode() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaElement2
{
    bool AreTransportControlsEnabled() const;
    void AreTransportControlsEnabled(bool value) const;
    Windows::UI::Xaml::Media::Stretch Stretch() const;
    void Stretch(Windows::UI::Xaml::Media::Stretch value) const;
    bool IsFullWindow() const;
    void IsFullWindow(bool value) const;
    void SetMediaStreamSource(const Windows::Media::Core::IMediaSource & source) const;
    Windows::Foundation::Uri PlayToPreferredSourceUri() const;
    void PlayToPreferredSourceUri(const Windows::Foundation::Uri & value) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaElement3
{
    Windows::UI::Xaml::Controls::MediaTransportControls TransportControls() const;
    void TransportControls(const Windows::UI::Xaml::Controls::MediaTransportControls & value) const;
    event_token PartialMediaFailureDetected(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::MediaElement, Windows::UI::Xaml::Media::PartialMediaFailureDetectedEventArgs> & value) const;
    using PartialMediaFailureDetected_revoker = event_revoker<IMediaElement3>;
    PartialMediaFailureDetected_revoker PartialMediaFailureDetected(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::MediaElement, Windows::UI::Xaml::Media::PartialMediaFailureDetectedEventArgs> & value) const;
    void PartialMediaFailureDetected(event_token token) const;
    void SetPlaybackSource(const Windows::Media::Playback::IMediaPlaybackSource & source) const;
    Windows::Media::Casting::CastingSource GetAsCastingSource() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaElementStatics
{
    Windows::UI::Xaml::DependencyProperty PosterSourceProperty() const;
    Windows::UI::Xaml::DependencyProperty SourceProperty() const;
    Windows::UI::Xaml::DependencyProperty IsMutedProperty() const;
    Windows::UI::Xaml::DependencyProperty IsAudioOnlyProperty() const;
    Windows::UI::Xaml::DependencyProperty AutoPlayProperty() const;
    Windows::UI::Xaml::DependencyProperty VolumeProperty() const;
    Windows::UI::Xaml::DependencyProperty BalanceProperty() const;
    Windows::UI::Xaml::DependencyProperty NaturalVideoHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty NaturalVideoWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty NaturalDurationProperty() const;
    Windows::UI::Xaml::DependencyProperty PositionProperty() const;
    Windows::UI::Xaml::DependencyProperty DownloadProgressProperty() const;
    Windows::UI::Xaml::DependencyProperty BufferingProgressProperty() const;
    Windows::UI::Xaml::DependencyProperty DownloadProgressOffsetProperty() const;
    Windows::UI::Xaml::DependencyProperty CurrentStateProperty() const;
    Windows::UI::Xaml::DependencyProperty CanSeekProperty() const;
    Windows::UI::Xaml::DependencyProperty CanPauseProperty() const;
    Windows::UI::Xaml::DependencyProperty AudioStreamCountProperty() const;
    Windows::UI::Xaml::DependencyProperty AudioStreamIndexProperty() const;
    Windows::UI::Xaml::DependencyProperty PlaybackRateProperty() const;
    Windows::UI::Xaml::DependencyProperty IsLoopingProperty() const;
    Windows::UI::Xaml::DependencyProperty PlayToSourceProperty() const;
    Windows::UI::Xaml::DependencyProperty DefaultPlaybackRateProperty() const;
    Windows::UI::Xaml::DependencyProperty AspectRatioWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty AspectRatioHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty RealTimePlaybackProperty() const;
    Windows::UI::Xaml::DependencyProperty AudioCategoryProperty() const;
    Windows::UI::Xaml::DependencyProperty AudioDeviceTypeProperty() const;
    Windows::UI::Xaml::DependencyProperty ProtectionManagerProperty() const;
    Windows::UI::Xaml::DependencyProperty Stereo3DVideoPackingModeProperty() const;
    Windows::UI::Xaml::DependencyProperty Stereo3DVideoRenderModeProperty() const;
    Windows::UI::Xaml::DependencyProperty IsStereo3DVideoProperty() const;
    Windows::UI::Xaml::DependencyProperty ActualStereo3DVideoPackingModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaElementStatics2
{
    Windows::UI::Xaml::DependencyProperty AreTransportControlsEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty StretchProperty() const;
    Windows::UI::Xaml::DependencyProperty IsFullWindowProperty() const;
    Windows::UI::Xaml::DependencyProperty PlayToPreferredSourceUriProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaPlayerElement
{
    Windows::Media::Playback::IMediaPlaybackSource Source() const;
    void Source(const Windows::Media::Playback::IMediaPlaybackSource & value) const;
    Windows::UI::Xaml::Controls::MediaTransportControls TransportControls() const;
    void TransportControls(const Windows::UI::Xaml::Controls::MediaTransportControls & value) const;
    bool AreTransportControlsEnabled() const;
    void AreTransportControlsEnabled(bool value) const;
    Windows::UI::Xaml::Media::ImageSource PosterSource() const;
    void PosterSource(const Windows::UI::Xaml::Media::ImageSource & value) const;
    Windows::UI::Xaml::Media::Stretch Stretch() const;
    void Stretch(Windows::UI::Xaml::Media::Stretch value) const;
    bool AutoPlay() const;
    void AutoPlay(bool value) const;
    bool IsFullWindow() const;
    void IsFullWindow(bool value) const;
    Windows::Media::Playback::MediaPlayer MediaPlayer() const;
    void SetMediaPlayer(const Windows::Media::Playback::MediaPlayer & mediaPlayer) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaPlayerElementFactory
{
    Windows::UI::Xaml::Controls::MediaPlayerElement CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaPlayerElementStatics
{
    Windows::UI::Xaml::DependencyProperty SourceProperty() const;
    Windows::UI::Xaml::DependencyProperty AreTransportControlsEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty PosterSourceProperty() const;
    Windows::UI::Xaml::DependencyProperty StretchProperty() const;
    Windows::UI::Xaml::DependencyProperty AutoPlayProperty() const;
    Windows::UI::Xaml::DependencyProperty IsFullWindowProperty() const;
    Windows::UI::Xaml::DependencyProperty MediaPlayerProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaPlayerPresenter
{
    Windows::Media::Playback::MediaPlayer MediaPlayer() const;
    void MediaPlayer(const Windows::Media::Playback::MediaPlayer & value) const;
    Windows::UI::Xaml::Media::Stretch Stretch() const;
    void Stretch(Windows::UI::Xaml::Media::Stretch value) const;
    bool IsFullWindow() const;
    void IsFullWindow(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaPlayerPresenterFactory
{
    Windows::UI::Xaml::Controls::MediaPlayerPresenter CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaPlayerPresenterStatics
{
    Windows::UI::Xaml::DependencyProperty MediaPlayerProperty() const;
    Windows::UI::Xaml::DependencyProperty StretchProperty() const;
    Windows::UI::Xaml::DependencyProperty IsFullWindowProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaTransportControls
{
    bool IsFullWindowButtonVisible() const;
    void IsFullWindowButtonVisible(bool value) const;
    bool IsFullWindowEnabled() const;
    void IsFullWindowEnabled(bool value) const;
    bool IsZoomButtonVisible() const;
    void IsZoomButtonVisible(bool value) const;
    bool IsZoomEnabled() const;
    void IsZoomEnabled(bool value) const;
    bool IsFastForwardButtonVisible() const;
    void IsFastForwardButtonVisible(bool value) const;
    bool IsFastForwardEnabled() const;
    void IsFastForwardEnabled(bool value) const;
    bool IsFastRewindButtonVisible() const;
    void IsFastRewindButtonVisible(bool value) const;
    bool IsFastRewindEnabled() const;
    void IsFastRewindEnabled(bool value) const;
    bool IsStopButtonVisible() const;
    void IsStopButtonVisible(bool value) const;
    bool IsStopEnabled() const;
    void IsStopEnabled(bool value) const;
    bool IsVolumeButtonVisible() const;
    void IsVolumeButtonVisible(bool value) const;
    bool IsVolumeEnabled() const;
    void IsVolumeEnabled(bool value) const;
    bool IsPlaybackRateButtonVisible() const;
    void IsPlaybackRateButtonVisible(bool value) const;
    bool IsPlaybackRateEnabled() const;
    void IsPlaybackRateEnabled(bool value) const;
    bool IsSeekBarVisible() const;
    void IsSeekBarVisible(bool value) const;
    bool IsSeekEnabled() const;
    void IsSeekEnabled(bool value) const;
    bool IsCompact() const;
    void IsCompact(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaTransportControls2
{
    bool IsSkipForwardButtonVisible() const;
    void IsSkipForwardButtonVisible(bool value) const;
    bool IsSkipForwardEnabled() const;
    void IsSkipForwardEnabled(bool value) const;
    bool IsSkipBackwardButtonVisible() const;
    void IsSkipBackwardButtonVisible(bool value) const;
    bool IsSkipBackwardEnabled() const;
    void IsSkipBackwardEnabled(bool value) const;
    bool IsNextTrackButtonVisible() const;
    void IsNextTrackButtonVisible(bool value) const;
    bool IsPreviousTrackButtonVisible() const;
    void IsPreviousTrackButtonVisible(bool value) const;
    Windows::UI::Xaml::Media::FastPlayFallbackBehaviour FastPlayFallbackBehaviour() const;
    void FastPlayFallbackBehaviour(Windows::UI::Xaml::Media::FastPlayFallbackBehaviour value) const;
    event_token ThumbnailRequested(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::MediaTransportControls, Windows::UI::Xaml::Media::MediaTransportControlsThumbnailRequestedEventArgs> & value) const;
    using ThumbnailRequested_revoker = event_revoker<IMediaTransportControls2>;
    ThumbnailRequested_revoker ThumbnailRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::MediaTransportControls, Windows::UI::Xaml::Media::MediaTransportControlsThumbnailRequestedEventArgs> & value) const;
    void ThumbnailRequested(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaTransportControlsFactory
{
    Windows::UI::Xaml::Controls::MediaTransportControls CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaTransportControlsHelper
{
};

template <typename D>
struct WINRT_EBO impl_IMediaTransportControlsHelperStatics
{
    Windows::UI::Xaml::DependencyProperty DropoutOrderProperty() const;
    Windows::Foundation::IReference<int32_t> GetDropoutOrder(const Windows::UI::Xaml::UIElement & element) const;
    void SetDropoutOrder(const Windows::UI::Xaml::UIElement & element, const Windows::Foundation::IReference<int32_t> & value) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaTransportControlsStatics
{
    Windows::UI::Xaml::DependencyProperty IsFullWindowButtonVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty IsFullWindowEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsZoomButtonVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty IsZoomEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsFastForwardButtonVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty IsFastForwardEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsFastRewindButtonVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty IsFastRewindEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsStopButtonVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty IsStopEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsVolumeButtonVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty IsVolumeEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsPlaybackRateButtonVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty IsPlaybackRateEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsSeekBarVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty IsSeekEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsCompactProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaTransportControlsStatics2
{
    Windows::UI::Xaml::DependencyProperty IsSkipForwardButtonVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty IsSkipForwardEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsSkipBackwardButtonVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty IsSkipBackwardEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsNextTrackButtonVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty IsPreviousTrackButtonVisibleProperty() const;
    Windows::UI::Xaml::DependencyProperty FastPlayFallbackBehaviourProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyout
{
    Windows::Foundation::Collections::IVector<Windows::UI::Xaml::Controls::MenuFlyoutItemBase> Items() const;
    Windows::UI::Xaml::Style MenuFlyoutPresenterStyle() const;
    void MenuFlyoutPresenterStyle(const Windows::UI::Xaml::Style & value) const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyout2
{
    void ShowAt(const Windows::UI::Xaml::UIElement & targetElement, const Windows::Foundation::Point & point) const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutFactory
{
    Windows::UI::Xaml::Controls::MenuFlyout CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutItem
{
    hstring Text() const;
    void Text(hstring_ref value) const;
    Windows::UI::Xaml::Input::ICommand Command() const;
    void Command(const Windows::UI::Xaml::Input::ICommand & value) const;
    Windows::IInspectable CommandParameter() const;
    void CommandParameter(const Windows::IInspectable & value) const;
    event_token Click(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using Click_revoker = event_revoker<IMenuFlyoutItem>;
    Click_revoker Click(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void Click(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutItemBase
{
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutItemBaseFactory
{
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutItemFactory
{
    Windows::UI::Xaml::Controls::MenuFlyoutItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutItemStatics
{
    Windows::UI::Xaml::DependencyProperty TextProperty() const;
    Windows::UI::Xaml::DependencyProperty CommandProperty() const;
    Windows::UI::Xaml::DependencyProperty CommandParameterProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutPresenter
{
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutPresenter2
{
    Windows::UI::Xaml::Controls::Primitives::MenuFlyoutPresenterTemplateSettings TemplateSettings() const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutPresenterFactory
{
    Windows::UI::Xaml::Controls::MenuFlyoutPresenter CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutSeparator
{
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutSeparatorFactory
{
    Windows::UI::Xaml::Controls::MenuFlyoutSeparator CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutStatics
{
    Windows::UI::Xaml::DependencyProperty MenuFlyoutPresenterStyleProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutSubItem
{
    Windows::Foundation::Collections::IVector<Windows::UI::Xaml::Controls::MenuFlyoutItemBase> Items() const;
    hstring Text() const;
    void Text(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutSubItemStatics
{
    Windows::UI::Xaml::DependencyProperty TextProperty() const;
};

template <typename D>
struct WINRT_EBO impl_INavigate
{
    bool Navigate(const Windows::UI::Xaml::Interop::TypeName & sourcePageType) const;
};

template <typename D>
struct WINRT_EBO impl_INotifyEventArgs
{
    hstring Value() const;
};

template <typename D>
struct WINRT_EBO impl_INotifyEventArgs2
{
    Windows::Foundation::Uri CallingUri() const;
};

template <typename D>
struct WINRT_EBO impl_IPage
{
    Windows::UI::Xaml::Controls::Frame Frame() const;
    Windows::UI::Xaml::Navigation::NavigationCacheMode NavigationCacheMode() const;
    void NavigationCacheMode(Windows::UI::Xaml::Navigation::NavigationCacheMode value) const;
    Windows::UI::Xaml::Controls::AppBar TopAppBar() const;
    void TopAppBar(const Windows::UI::Xaml::Controls::AppBar & value) const;
    Windows::UI::Xaml::Controls::AppBar BottomAppBar() const;
    void BottomAppBar(const Windows::UI::Xaml::Controls::AppBar & value) const;
};

template <typename D>
struct WINRT_EBO impl_IPageFactory
{
    Windows::UI::Xaml::Controls::Page CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IPageOverrides
{
    void OnNavigatedFrom(const Windows::UI::Xaml::Navigation::NavigationEventArgs & e) const;
    void OnNavigatedTo(const Windows::UI::Xaml::Navigation::NavigationEventArgs & e) const;
    void OnNavigatingFrom(const Windows::UI::Xaml::Navigation::NavigatingCancelEventArgs & e) const;
};

template <typename D>
struct WINRT_EBO impl_IPageStatics
{
    Windows::UI::Xaml::DependencyProperty FrameProperty() const;
    Windows::UI::Xaml::DependencyProperty TopAppBarProperty() const;
    Windows::UI::Xaml::DependencyProperty BottomAppBarProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IPanel
{
    Windows::UI::Xaml::Controls::UIElementCollection Children() const;
    Windows::UI::Xaml::Media::Brush Background() const;
    void Background(const Windows::UI::Xaml::Media::Brush & value) const;
    bool IsItemsHost() const;
    Windows::UI::Xaml::Media::Animation::TransitionCollection ChildrenTransitions() const;
    void ChildrenTransitions(const Windows::UI::Xaml::Media::Animation::TransitionCollection & value) const;
};

template <typename D>
struct WINRT_EBO impl_IPanelFactory
{
    Windows::UI::Xaml::Controls::Panel CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IPanelStatics
{
    Windows::UI::Xaml::DependencyProperty BackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty IsItemsHostProperty() const;
    Windows::UI::Xaml::DependencyProperty ChildrenTransitionsProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IPasswordBox
{
    hstring Password() const;
    void Password(hstring_ref value) const;
    hstring PasswordChar() const;
    void PasswordChar(hstring_ref value) const;
    bool IsPasswordRevealButtonEnabled() const;
    void IsPasswordRevealButtonEnabled(bool value) const;
    int32_t MaxLength() const;
    void MaxLength(int32_t value) const;
    event_token PasswordChanged(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using PasswordChanged_revoker = event_revoker<IPasswordBox>;
    PasswordChanged_revoker PasswordChanged(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void PasswordChanged(event_token token) const;
    event_token ContextMenuOpening(const Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler & value) const;
    using ContextMenuOpening_revoker = event_revoker<IPasswordBox>;
    ContextMenuOpening_revoker ContextMenuOpening(auto_revoke_t, const Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler & value) const;
    void ContextMenuOpening(event_token token) const;
    void SelectAll() const;
};

template <typename D>
struct WINRT_EBO impl_IPasswordBox2
{
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    hstring PlaceholderText() const;
    void PlaceholderText(hstring_ref value) const;
    Windows::UI::Xaml::Media::SolidColorBrush SelectionHighlightColor() const;
    void SelectionHighlightColor(const Windows::UI::Xaml::Media::SolidColorBrush & value) const;
    bool PreventKeyboardDisplayOnProgrammaticFocus() const;
    void PreventKeyboardDisplayOnProgrammaticFocus(bool value) const;
    event_token Paste(const Windows::UI::Xaml::Controls::TextControlPasteEventHandler & value) const;
    using Paste_revoker = event_revoker<IPasswordBox2>;
    Paste_revoker Paste(auto_revoke_t, const Windows::UI::Xaml::Controls::TextControlPasteEventHandler & value) const;
    void Paste(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IPasswordBox3
{
    Windows::UI::Xaml::Controls::PasswordRevealMode PasswordRevealMode() const;
    void PasswordRevealMode(Windows::UI::Xaml::Controls::PasswordRevealMode value) const;
    Windows::UI::Xaml::TextReadingOrder TextReadingOrder() const;
    void TextReadingOrder(Windows::UI::Xaml::TextReadingOrder value) const;
    Windows::UI::Xaml::Input::InputScope InputScope() const;
    void InputScope(const Windows::UI::Xaml::Input::InputScope & value) const;
};

template <typename D>
struct WINRT_EBO impl_IPasswordBoxStatics
{
    Windows::UI::Xaml::DependencyProperty PasswordProperty() const;
    Windows::UI::Xaml::DependencyProperty PasswordCharProperty() const;
    Windows::UI::Xaml::DependencyProperty IsPasswordRevealButtonEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxLengthProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IPasswordBoxStatics2
{
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty PlaceholderTextProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectionHighlightColorProperty() const;
    Windows::UI::Xaml::DependencyProperty PreventKeyboardDisplayOnProgrammaticFocusProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IPasswordBoxStatics3
{
    Windows::UI::Xaml::DependencyProperty PasswordRevealModeProperty() const;
    Windows::UI::Xaml::DependencyProperty TextReadingOrderProperty() const;
    Windows::UI::Xaml::DependencyProperty InputScopeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IPathIcon
{
    Windows::UI::Xaml::Media::Geometry Data() const;
    void Data(const Windows::UI::Xaml::Media::Geometry & value) const;
};

template <typename D>
struct WINRT_EBO impl_IPathIconFactory
{
    Windows::UI::Xaml::Controls::PathIcon CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IPathIconStatics
{
    Windows::UI::Xaml::DependencyProperty DataProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IPickerConfirmedEventArgs
{
};

template <typename D>
struct WINRT_EBO impl_IPickerFlyout
{
    Windows::UI::Xaml::UIElement Content() const;
    void Content(const Windows::UI::Xaml::UIElement & value) const;
    bool ConfirmationButtonsVisible() const;
    void ConfirmationButtonsVisible(bool value) const;
    event_token Confirmed(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::PickerFlyout, Windows::UI::Xaml::Controls::PickerConfirmedEventArgs> & value) const;
    using Confirmed_revoker = event_revoker<IPickerFlyout>;
    Confirmed_revoker Confirmed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::PickerFlyout, Windows::UI::Xaml::Controls::PickerConfirmedEventArgs> & value) const;
    void Confirmed(event_token token) const;
    Windows::Foundation::IAsyncOperation<bool> ShowAtAsync(const Windows::UI::Xaml::FrameworkElement & target) const;
};

template <typename D>
struct WINRT_EBO impl_IPickerFlyoutPresenter
{
};

template <typename D>
struct WINRT_EBO impl_IPickerFlyoutStatics
{
    Windows::UI::Xaml::DependencyProperty ContentProperty() const;
    Windows::UI::Xaml::DependencyProperty ConfirmationButtonsVisibleProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IPivot
{
    Windows::IInspectable Title() const;
    void Title(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate TitleTemplate() const;
    void TitleTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    int32_t SelectedIndex() const;
    void SelectedIndex(int32_t value) const;
    Windows::IInspectable SelectedItem() const;
    void SelectedItem(const Windows::IInspectable & value) const;
    bool IsLocked() const;
    void IsLocked(bool value) const;
    event_token SelectionChanged(const Windows::UI::Xaml::Controls::SelectionChangedEventHandler & value) const;
    using SelectionChanged_revoker = event_revoker<IPivot>;
    SelectionChanged_revoker SelectionChanged(auto_revoke_t, const Windows::UI::Xaml::Controls::SelectionChangedEventHandler & value) const;
    void SelectionChanged(event_token token) const;
    event_token PivotItemLoading(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Pivot, Windows::UI::Xaml::Controls::PivotItemEventArgs> & value) const;
    using PivotItemLoading_revoker = event_revoker<IPivot>;
    PivotItemLoading_revoker PivotItemLoading(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Pivot, Windows::UI::Xaml::Controls::PivotItemEventArgs> & value) const;
    void PivotItemLoading(event_token token) const;
    event_token PivotItemLoaded(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Pivot, Windows::UI::Xaml::Controls::PivotItemEventArgs> & value) const;
    using PivotItemLoaded_revoker = event_revoker<IPivot>;
    PivotItemLoaded_revoker PivotItemLoaded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Pivot, Windows::UI::Xaml::Controls::PivotItemEventArgs> & value) const;
    void PivotItemLoaded(event_token token) const;
    event_token PivotItemUnloading(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Pivot, Windows::UI::Xaml::Controls::PivotItemEventArgs> & value) const;
    using PivotItemUnloading_revoker = event_revoker<IPivot>;
    PivotItemUnloading_revoker PivotItemUnloading(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Pivot, Windows::UI::Xaml::Controls::PivotItemEventArgs> & value) const;
    void PivotItemUnloading(event_token token) const;
    event_token PivotItemUnloaded(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Pivot, Windows::UI::Xaml::Controls::PivotItemEventArgs> & value) const;
    using PivotItemUnloaded_revoker = event_revoker<IPivot>;
    PivotItemUnloaded_revoker PivotItemUnloaded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Pivot, Windows::UI::Xaml::Controls::PivotItemEventArgs> & value) const;
    void PivotItemUnloaded(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IPivot2
{
    Windows::IInspectable LeftHeader() const;
    void LeftHeader(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate LeftHeaderTemplate() const;
    void LeftHeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::IInspectable RightHeader() const;
    void RightHeader(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate RightHeaderTemplate() const;
    void RightHeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
};

template <typename D>
struct WINRT_EBO impl_IPivot3
{
    Windows::UI::Xaml::Controls::PivotHeaderFocusVisualPlacement HeaderFocusVisualPlacement() const;
    void HeaderFocusVisualPlacement(Windows::UI::Xaml::Controls::PivotHeaderFocusVisualPlacement value) const;
    bool IsHeaderItemsCarouselEnabled() const;
    void IsHeaderItemsCarouselEnabled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IPivotFactory
{
    Windows::UI::Xaml::Controls::Pivot CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IPivotItem
{
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
};

template <typename D>
struct WINRT_EBO impl_IPivotItemEventArgs
{
    Windows::UI::Xaml::Controls::PivotItem Item() const;
    void Item(const Windows::UI::Xaml::Controls::PivotItem & value) const;
};

template <typename D>
struct WINRT_EBO impl_IPivotItemFactory
{
    Windows::UI::Xaml::Controls::PivotItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IPivotItemStatics
{
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IPivotStatics
{
    Windows::UI::Xaml::DependencyProperty TitleProperty() const;
    Windows::UI::Xaml::DependencyProperty TitleTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedIndexProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedItemProperty() const;
    Windows::UI::Xaml::DependencyProperty IsLockedProperty() const;
    Windows::UI::Xaml::DependencyProperty SlideInAnimationGroupProperty() const;
    Windows::UI::Xaml::Controls::PivotSlideInAnimationGroup GetSlideInAnimationGroup(const Windows::UI::Xaml::FrameworkElement & element) const;
    void SetSlideInAnimationGroup(const Windows::UI::Xaml::FrameworkElement & element, Windows::UI::Xaml::Controls::PivotSlideInAnimationGroup value) const;
};

template <typename D>
struct WINRT_EBO impl_IPivotStatics2
{
    Windows::UI::Xaml::DependencyProperty LeftHeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty LeftHeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty RightHeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty RightHeaderTemplateProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IPivotStatics3
{
    Windows::UI::Xaml::DependencyProperty HeaderFocusVisualPlacementProperty() const;
    Windows::UI::Xaml::DependencyProperty IsHeaderItemsCarouselEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IProgressBar
{
    bool IsIndeterminate() const;
    void IsIndeterminate(bool value) const;
    bool ShowError() const;
    void ShowError(bool value) const;
    bool ShowPaused() const;
    void ShowPaused(bool value) const;
    Windows::UI::Xaml::Controls::Primitives::ProgressBarTemplateSettings TemplateSettings() const;
};

template <typename D>
struct WINRT_EBO impl_IProgressBarFactory
{
    Windows::UI::Xaml::Controls::ProgressBar CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IProgressBarStatics
{
    Windows::UI::Xaml::DependencyProperty IsIndeterminateProperty() const;
    Windows::UI::Xaml::DependencyProperty ShowErrorProperty() const;
    Windows::UI::Xaml::DependencyProperty ShowPausedProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IProgressRing
{
    bool IsActive() const;
    void IsActive(bool value) const;
    Windows::UI::Xaml::Controls::Primitives::ProgressRingTemplateSettings TemplateSettings() const;
};

template <typename D>
struct WINRT_EBO impl_IProgressRingStatics
{
    Windows::UI::Xaml::DependencyProperty IsActiveProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRadioButton
{
    hstring GroupName() const;
    void GroupName(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IRadioButtonFactory
{
    Windows::UI::Xaml::Controls::RadioButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IRadioButtonStatics
{
    Windows::UI::Xaml::DependencyProperty GroupNameProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRelativePanel
{
    Windows::UI::Xaml::Media::Brush BorderBrush() const;
    void BorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Thickness BorderThickness() const;
    void BorderThickness(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::CornerRadius CornerRadius() const;
    void CornerRadius(const Windows::UI::Xaml::CornerRadius & value) const;
    Windows::UI::Xaml::Thickness Padding() const;
    void Padding(const Windows::UI::Xaml::Thickness & value) const;
};

template <typename D>
struct WINRT_EBO impl_IRelativePanelFactory
{
    Windows::UI::Xaml::Controls::RelativePanel CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IRelativePanelStatics
{
    Windows::UI::Xaml::DependencyProperty LeftOfProperty() const;
    Windows::IInspectable GetLeftOf(const Windows::UI::Xaml::UIElement & element) const;
    void SetLeftOf(const Windows::UI::Xaml::UIElement & element, const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DependencyProperty AboveProperty() const;
    Windows::IInspectable GetAbove(const Windows::UI::Xaml::UIElement & element) const;
    void SetAbove(const Windows::UI::Xaml::UIElement & element, const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DependencyProperty RightOfProperty() const;
    Windows::IInspectable GetRightOf(const Windows::UI::Xaml::UIElement & element) const;
    void SetRightOf(const Windows::UI::Xaml::UIElement & element, const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DependencyProperty BelowProperty() const;
    Windows::IInspectable GetBelow(const Windows::UI::Xaml::UIElement & element) const;
    void SetBelow(const Windows::UI::Xaml::UIElement & element, const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DependencyProperty AlignHorizontalCenterWithProperty() const;
    Windows::IInspectable GetAlignHorizontalCenterWith(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignHorizontalCenterWith(const Windows::UI::Xaml::UIElement & element, const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DependencyProperty AlignVerticalCenterWithProperty() const;
    Windows::IInspectable GetAlignVerticalCenterWith(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignVerticalCenterWith(const Windows::UI::Xaml::UIElement & element, const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DependencyProperty AlignLeftWithProperty() const;
    Windows::IInspectable GetAlignLeftWith(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignLeftWith(const Windows::UI::Xaml::UIElement & element, const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DependencyProperty AlignTopWithProperty() const;
    Windows::IInspectable GetAlignTopWith(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignTopWith(const Windows::UI::Xaml::UIElement & element, const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DependencyProperty AlignRightWithProperty() const;
    Windows::IInspectable GetAlignRightWith(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignRightWith(const Windows::UI::Xaml::UIElement & element, const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DependencyProperty AlignBottomWithProperty() const;
    Windows::IInspectable GetAlignBottomWith(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignBottomWith(const Windows::UI::Xaml::UIElement & element, const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DependencyProperty AlignLeftWithPanelProperty() const;
    bool GetAlignLeftWithPanel(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignLeftWithPanel(const Windows::UI::Xaml::UIElement & element, bool value) const;
    Windows::UI::Xaml::DependencyProperty AlignTopWithPanelProperty() const;
    bool GetAlignTopWithPanel(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignTopWithPanel(const Windows::UI::Xaml::UIElement & element, bool value) const;
    Windows::UI::Xaml::DependencyProperty AlignRightWithPanelProperty() const;
    bool GetAlignRightWithPanel(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignRightWithPanel(const Windows::UI::Xaml::UIElement & element, bool value) const;
    Windows::UI::Xaml::DependencyProperty AlignBottomWithPanelProperty() const;
    bool GetAlignBottomWithPanel(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignBottomWithPanel(const Windows::UI::Xaml::UIElement & element, bool value) const;
    Windows::UI::Xaml::DependencyProperty AlignHorizontalCenterWithPanelProperty() const;
    bool GetAlignHorizontalCenterWithPanel(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignHorizontalCenterWithPanel(const Windows::UI::Xaml::UIElement & element, bool value) const;
    Windows::UI::Xaml::DependencyProperty AlignVerticalCenterWithPanelProperty() const;
    bool GetAlignVerticalCenterWithPanel(const Windows::UI::Xaml::UIElement & element) const;
    void SetAlignVerticalCenterWithPanel(const Windows::UI::Xaml::UIElement & element, bool value) const;
    Windows::UI::Xaml::DependencyProperty BorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty BorderThicknessProperty() const;
    Windows::UI::Xaml::DependencyProperty CornerRadiusProperty() const;
    Windows::UI::Xaml::DependencyProperty PaddingProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRichEditBox
{
    bool IsReadOnly() const;
    void IsReadOnly(bool value) const;
    bool AcceptsReturn() const;
    void AcceptsReturn(bool value) const;
    Windows::UI::Xaml::TextAlignment TextAlignment() const;
    void TextAlignment(Windows::UI::Xaml::TextAlignment value) const;
    Windows::UI::Xaml::TextWrapping TextWrapping() const;
    void TextWrapping(Windows::UI::Xaml::TextWrapping value) const;
    bool IsSpellCheckEnabled() const;
    void IsSpellCheckEnabled(bool value) const;
    bool IsTextPredictionEnabled() const;
    void IsTextPredictionEnabled(bool value) const;
    Windows::UI::Text::ITextDocument Document() const;
    Windows::UI::Xaml::Input::InputScope InputScope() const;
    void InputScope(const Windows::UI::Xaml::Input::InputScope & value) const;
    event_token TextChanged(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using TextChanged_revoker = event_revoker<IRichEditBox>;
    TextChanged_revoker TextChanged(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void TextChanged(event_token token) const;
    event_token SelectionChanged(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using SelectionChanged_revoker = event_revoker<IRichEditBox>;
    SelectionChanged_revoker SelectionChanged(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void SelectionChanged(event_token token) const;
    event_token ContextMenuOpening(const Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler & value) const;
    using ContextMenuOpening_revoker = event_revoker<IRichEditBox>;
    ContextMenuOpening_revoker ContextMenuOpening(auto_revoke_t, const Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler & value) const;
    void ContextMenuOpening(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IRichEditBox2
{
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    hstring PlaceholderText() const;
    void PlaceholderText(hstring_ref value) const;
    Windows::UI::Xaml::Media::SolidColorBrush SelectionHighlightColor() const;
    void SelectionHighlightColor(const Windows::UI::Xaml::Media::SolidColorBrush & value) const;
    bool PreventKeyboardDisplayOnProgrammaticFocus() const;
    void PreventKeyboardDisplayOnProgrammaticFocus(bool value) const;
    bool IsColorFontEnabled() const;
    void IsColorFontEnabled(bool value) const;
    event_token Paste(const Windows::UI::Xaml::Controls::TextControlPasteEventHandler & value) const;
    using Paste_revoker = event_revoker<IRichEditBox2>;
    Paste_revoker Paste(auto_revoke_t, const Windows::UI::Xaml::Controls::TextControlPasteEventHandler & value) const;
    void Paste(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IRichEditBox3
{
    event_token TextCompositionStarted(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs> & value) const;
    using TextCompositionStarted_revoker = event_revoker<IRichEditBox3>;
    TextCompositionStarted_revoker TextCompositionStarted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs> & value) const;
    void TextCompositionStarted(event_token token) const;
    event_token TextCompositionChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs> & value) const;
    using TextCompositionChanged_revoker = event_revoker<IRichEditBox3>;
    TextCompositionChanged_revoker TextCompositionChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs> & value) const;
    void TextCompositionChanged(event_token token) const;
    event_token TextCompositionEnded(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs> & value) const;
    using TextCompositionEnded_revoker = event_revoker<IRichEditBox3>;
    TextCompositionEnded_revoker TextCompositionEnded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs> & value) const;
    void TextCompositionEnded(event_token token) const;
    Windows::UI::Xaml::TextReadingOrder TextReadingOrder() const;
    void TextReadingOrder(Windows::UI::Xaml::TextReadingOrder value) const;
    Windows::UI::Xaml::Controls::CandidateWindowAlignment DesiredCandidateWindowAlignment() const;
    void DesiredCandidateWindowAlignment(Windows::UI::Xaml::Controls::CandidateWindowAlignment value) const;
    event_token CandidateWindowBoundsChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs> & value) const;
    using CandidateWindowBoundsChanged_revoker = event_revoker<IRichEditBox3>;
    CandidateWindowBoundsChanged_revoker CandidateWindowBoundsChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs> & value) const;
    void CandidateWindowBoundsChanged(event_token token) const;
    event_token TextChanging(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs> & value) const;
    using TextChanging_revoker = event_revoker<IRichEditBox3>;
    TextChanging_revoker TextChanging(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::RichEditBox, Windows::UI::Xaml::Controls::RichEditBoxTextChangingEventArgs> & value) const;
    void TextChanging(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IRichEditBox4
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<hstring>> GetLinguisticAlternativesAsync() const;
    Windows::UI::Xaml::Controls::RichEditClipboardFormat ClipboardCopyFormat() const;
    void ClipboardCopyFormat(Windows::UI::Xaml::Controls::RichEditClipboardFormat value) const;
};

template <typename D>
struct WINRT_EBO impl_IRichEditBoxFactory
{
    Windows::UI::Xaml::Controls::RichEditBox CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IRichEditBoxStatics
{
    Windows::UI::Xaml::DependencyProperty IsReadOnlyProperty() const;
    Windows::UI::Xaml::DependencyProperty AcceptsReturnProperty() const;
    Windows::UI::Xaml::DependencyProperty TextAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty TextWrappingProperty() const;
    Windows::UI::Xaml::DependencyProperty IsSpellCheckEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsTextPredictionEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty InputScopeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRichEditBoxStatics2
{
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty PlaceholderTextProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectionHighlightColorProperty() const;
    Windows::UI::Xaml::DependencyProperty PreventKeyboardDisplayOnProgrammaticFocusProperty() const;
    Windows::UI::Xaml::DependencyProperty IsColorFontEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRichEditBoxStatics3
{
    Windows::UI::Xaml::DependencyProperty DesiredCandidateWindowAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty TextReadingOrderProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRichEditBoxStatics4
{
    Windows::UI::Xaml::DependencyProperty ClipboardCopyFormatProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRichEditBoxTextChangingEventArgs
{
};

template <typename D>
struct WINRT_EBO impl_IRichTextBlock
{
    double FontSize() const;
    void FontSize(double value) const;
    Windows::UI::Xaml::Media::FontFamily FontFamily() const;
    void FontFamily(const Windows::UI::Xaml::Media::FontFamily & value) const;
    Windows::UI::Text::FontWeight FontWeight() const;
    void FontWeight(const Windows::UI::Text::FontWeight & value) const;
    Windows::UI::Text::FontStyle FontStyle() const;
    void FontStyle(Windows::UI::Text::FontStyle value) const;
    Windows::UI::Text::FontStretch FontStretch() const;
    void FontStretch(Windows::UI::Text::FontStretch value) const;
    Windows::UI::Xaml::Media::Brush Foreground() const;
    void Foreground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::TextWrapping TextWrapping() const;
    void TextWrapping(Windows::UI::Xaml::TextWrapping value) const;
    Windows::UI::Xaml::TextTrimming TextTrimming() const;
    void TextTrimming(Windows::UI::Xaml::TextTrimming value) const;
    Windows::UI::Xaml::TextAlignment TextAlignment() const;
    void TextAlignment(Windows::UI::Xaml::TextAlignment value) const;
    Windows::UI::Xaml::Documents::BlockCollection Blocks() const;
    Windows::UI::Xaml::Thickness Padding() const;
    void Padding(const Windows::UI::Xaml::Thickness & value) const;
    double LineHeight() const;
    void LineHeight(double value) const;
    Windows::UI::Xaml::LineStackingStrategy LineStackingStrategy() const;
    void LineStackingStrategy(Windows::UI::Xaml::LineStackingStrategy value) const;
    int32_t CharacterSpacing() const;
    void CharacterSpacing(int32_t value) const;
    Windows::UI::Xaml::Controls::RichTextBlockOverflow OverflowContentTarget() const;
    void OverflowContentTarget(const Windows::UI::Xaml::Controls::RichTextBlockOverflow & value) const;
    bool IsTextSelectionEnabled() const;
    void IsTextSelectionEnabled(bool value) const;
    bool HasOverflowContent() const;
    hstring SelectedText() const;
    Windows::UI::Xaml::Documents::TextPointer ContentStart() const;
    Windows::UI::Xaml::Documents::TextPointer ContentEnd() const;
    Windows::UI::Xaml::Documents::TextPointer SelectionStart() const;
    Windows::UI::Xaml::Documents::TextPointer SelectionEnd() const;
    double BaselineOffset() const;
    event_token SelectionChanged(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using SelectionChanged_revoker = event_revoker<IRichTextBlock>;
    SelectionChanged_revoker SelectionChanged(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void SelectionChanged(event_token token) const;
    event_token ContextMenuOpening(const Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler & value) const;
    using ContextMenuOpening_revoker = event_revoker<IRichTextBlock>;
    ContextMenuOpening_revoker ContextMenuOpening(auto_revoke_t, const Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler & value) const;
    void ContextMenuOpening(event_token token) const;
    void SelectAll() const;
    void Select(const Windows::UI::Xaml::Documents::TextPointer & start, const Windows::UI::Xaml::Documents::TextPointer & end) const;
    Windows::UI::Xaml::Documents::TextPointer GetPositionFromPoint(const Windows::Foundation::Point & point) const;
    bool Focus(Windows::UI::Xaml::FocusState value) const;
    double TextIndent() const;
    void TextIndent(double value) const;
};

template <typename D>
struct WINRT_EBO impl_IRichTextBlock2
{
    int32_t MaxLines() const;
    void MaxLines(int32_t value) const;
    Windows::UI::Xaml::TextLineBounds TextLineBounds() const;
    void TextLineBounds(Windows::UI::Xaml::TextLineBounds value) const;
    Windows::UI::Xaml::Media::SolidColorBrush SelectionHighlightColor() const;
    void SelectionHighlightColor(const Windows::UI::Xaml::Media::SolidColorBrush & value) const;
    Windows::UI::Xaml::OpticalMarginAlignment OpticalMarginAlignment() const;
    void OpticalMarginAlignment(Windows::UI::Xaml::OpticalMarginAlignment value) const;
    bool IsColorFontEnabled() const;
    void IsColorFontEnabled(bool value) const;
    Windows::UI::Xaml::TextReadingOrder TextReadingOrder() const;
    void TextReadingOrder(Windows::UI::Xaml::TextReadingOrder value) const;
};

template <typename D>
struct WINRT_EBO impl_IRichTextBlock3
{
    bool IsTextScaleFactorEnabled() const;
    void IsTextScaleFactorEnabled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IRichTextBlockOverflow
{
    Windows::UI::Xaml::Controls::RichTextBlockOverflow OverflowContentTarget() const;
    void OverflowContentTarget(const Windows::UI::Xaml::Controls::RichTextBlockOverflow & value) const;
    Windows::UI::Xaml::Thickness Padding() const;
    void Padding(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::Controls::RichTextBlock ContentSource() const;
    bool HasOverflowContent() const;
    Windows::UI::Xaml::Documents::TextPointer ContentStart() const;
    Windows::UI::Xaml::Documents::TextPointer ContentEnd() const;
    double BaselineOffset() const;
    Windows::UI::Xaml::Documents::TextPointer GetPositionFromPoint(const Windows::Foundation::Point & point) const;
    bool Focus(Windows::UI::Xaml::FocusState value) const;
};

template <typename D>
struct WINRT_EBO impl_IRichTextBlockOverflow2
{
    int32_t MaxLines() const;
    void MaxLines(int32_t value) const;
};

template <typename D>
struct WINRT_EBO impl_IRichTextBlockOverflowStatics
{
    Windows::UI::Xaml::DependencyProperty OverflowContentTargetProperty() const;
    Windows::UI::Xaml::DependencyProperty PaddingProperty() const;
    Windows::UI::Xaml::DependencyProperty HasOverflowContentProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRichTextBlockOverflowStatics2
{
    Windows::UI::Xaml::DependencyProperty MaxLinesProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRichTextBlockStatics
{
    Windows::UI::Xaml::DependencyProperty FontSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty FontFamilyProperty() const;
    Windows::UI::Xaml::DependencyProperty FontWeightProperty() const;
    Windows::UI::Xaml::DependencyProperty FontStyleProperty() const;
    Windows::UI::Xaml::DependencyProperty FontStretchProperty() const;
    Windows::UI::Xaml::DependencyProperty ForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty TextWrappingProperty() const;
    Windows::UI::Xaml::DependencyProperty TextTrimmingProperty() const;
    Windows::UI::Xaml::DependencyProperty TextAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty PaddingProperty() const;
    Windows::UI::Xaml::DependencyProperty LineHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty LineStackingStrategyProperty() const;
    Windows::UI::Xaml::DependencyProperty CharacterSpacingProperty() const;
    Windows::UI::Xaml::DependencyProperty OverflowContentTargetProperty() const;
    Windows::UI::Xaml::DependencyProperty IsTextSelectionEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty HasOverflowContentProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedTextProperty() const;
    Windows::UI::Xaml::DependencyProperty TextIndentProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRichTextBlockStatics2
{
    Windows::UI::Xaml::DependencyProperty MaxLinesProperty() const;
    Windows::UI::Xaml::DependencyProperty TextLineBoundsProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectionHighlightColorProperty() const;
    Windows::UI::Xaml::DependencyProperty OpticalMarginAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty IsColorFontEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty TextReadingOrderProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRichTextBlockStatics3
{
    Windows::UI::Xaml::DependencyProperty IsTextScaleFactorEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRowDefinition
{
    Windows::UI::Xaml::GridLength Height() const;
    void Height(const Windows::UI::Xaml::GridLength & value) const;
    double MaxHeight() const;
    void MaxHeight(double value) const;
    double MinHeight() const;
    void MinHeight(double value) const;
    double ActualHeight() const;
};

template <typename D>
struct WINRT_EBO impl_IRowDefinitionStatics
{
    Windows::UI::Xaml::DependencyProperty HeightProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty MinHeightProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IScrollContentPresenter
{
    bool CanVerticallyScroll() const;
    void CanVerticallyScroll(bool value) const;
    bool CanHorizontallyScroll() const;
    void CanHorizontallyScroll(bool value) const;
    double ExtentWidth() const;
    double ExtentHeight() const;
    double ViewportWidth() const;
    double ViewportHeight() const;
    double HorizontalOffset() const;
    double VerticalOffset() const;
    Windows::IInspectable ScrollOwner() const;
    void ScrollOwner(const Windows::IInspectable & value) const;
    void LineUp() const;
    void LineDown() const;
    void LineLeft() const;
    void LineRight() const;
    void PageUp() const;
    void PageDown() const;
    void PageLeft() const;
    void PageRight() const;
    void MouseWheelUp() const;
    void MouseWheelDown() const;
    void MouseWheelLeft() const;
    void MouseWheelRight() const;
    void SetHorizontalOffset(double offset) const;
    void SetVerticalOffset(double offset) const;
    Windows::Foundation::Rect MakeVisible(const Windows::UI::Xaml::UIElement & visual, const Windows::Foundation::Rect & rectangle) const;
};

template <typename D>
struct WINRT_EBO impl_IScrollViewer
{
    Windows::UI::Xaml::Controls::ScrollBarVisibility HorizontalScrollBarVisibility() const;
    void HorizontalScrollBarVisibility(Windows::UI::Xaml::Controls::ScrollBarVisibility value) const;
    Windows::UI::Xaml::Controls::ScrollBarVisibility VerticalScrollBarVisibility() const;
    void VerticalScrollBarVisibility(Windows::UI::Xaml::Controls::ScrollBarVisibility value) const;
    bool IsHorizontalRailEnabled() const;
    void IsHorizontalRailEnabled(bool value) const;
    bool IsVerticalRailEnabled() const;
    void IsVerticalRailEnabled(bool value) const;
    bool IsHorizontalScrollChainingEnabled() const;
    void IsHorizontalScrollChainingEnabled(bool value) const;
    bool IsVerticalScrollChainingEnabled() const;
    void IsVerticalScrollChainingEnabled(bool value) const;
    bool IsZoomChainingEnabled() const;
    void IsZoomChainingEnabled(bool value) const;
    bool IsScrollInertiaEnabled() const;
    void IsScrollInertiaEnabled(bool value) const;
    bool IsZoomInertiaEnabled() const;
    void IsZoomInertiaEnabled(bool value) const;
    Windows::UI::Xaml::Controls::ScrollMode HorizontalScrollMode() const;
    void HorizontalScrollMode(Windows::UI::Xaml::Controls::ScrollMode value) const;
    Windows::UI::Xaml::Controls::ScrollMode VerticalScrollMode() const;
    void VerticalScrollMode(Windows::UI::Xaml::Controls::ScrollMode value) const;
    Windows::UI::Xaml::Controls::ZoomMode ZoomMode() const;
    void ZoomMode(Windows::UI::Xaml::Controls::ZoomMode value) const;
    Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment HorizontalSnapPointsAlignment() const;
    void HorizontalSnapPointsAlignment(Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment value) const;
    Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment VerticalSnapPointsAlignment() const;
    void VerticalSnapPointsAlignment(Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment value) const;
    Windows::UI::Xaml::Controls::SnapPointsType HorizontalSnapPointsType() const;
    void HorizontalSnapPointsType(Windows::UI::Xaml::Controls::SnapPointsType value) const;
    Windows::UI::Xaml::Controls::SnapPointsType VerticalSnapPointsType() const;
    void VerticalSnapPointsType(Windows::UI::Xaml::Controls::SnapPointsType value) const;
    Windows::UI::Xaml::Controls::SnapPointsType ZoomSnapPointsType() const;
    void ZoomSnapPointsType(Windows::UI::Xaml::Controls::SnapPointsType value) const;
    double HorizontalOffset() const;
    double ViewportWidth() const;
    double ScrollableWidth() const;
    Windows::UI::Xaml::Visibility ComputedHorizontalScrollBarVisibility() const;
    double ExtentWidth() const;
    double VerticalOffset() const;
    double ViewportHeight() const;
    double ScrollableHeight() const;
    Windows::UI::Xaml::Visibility ComputedVerticalScrollBarVisibility() const;
    double ExtentHeight() const;
    float MinZoomFactor() const;
    void MinZoomFactor(float value) const;
    float MaxZoomFactor() const;
    void MaxZoomFactor(float value) const;
    float ZoomFactor() const;
    Windows::Foundation::Collections::IVector<float> ZoomSnapPoints() const;
    event_token ViewChanged(const Windows::Foundation::EventHandler<Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs> & value) const;
    using ViewChanged_revoker = event_revoker<IScrollViewer>;
    ViewChanged_revoker ViewChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::UI::Xaml::Controls::ScrollViewerViewChangedEventArgs> & value) const;
    void ViewChanged(event_token token) const;
    void ScrollToHorizontalOffset(double offset) const;
    void ScrollToVerticalOffset(double offset) const;
    void ZoomToFactor(float factor) const;
    void InvalidateScrollInfo() const;
    bool IsDeferredScrollingEnabled() const;
    void IsDeferredScrollingEnabled(bool value) const;
    bool BringIntoViewOnFocusChange() const;
    void BringIntoViewOnFocusChange(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IScrollViewer2
{
    Windows::UI::Xaml::UIElement TopLeftHeader() const;
    void TopLeftHeader(const Windows::UI::Xaml::UIElement & value) const;
    Windows::UI::Xaml::UIElement LeftHeader() const;
    void LeftHeader(const Windows::UI::Xaml::UIElement & value) const;
    Windows::UI::Xaml::UIElement TopHeader() const;
    void TopHeader(const Windows::UI::Xaml::UIElement & value) const;
    event_token ViewChanging(const Windows::Foundation::EventHandler<Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs> & value) const;
    using ViewChanging_revoker = event_revoker<IScrollViewer2>;
    ViewChanging_revoker ViewChanging(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::UI::Xaml::Controls::ScrollViewerViewChangingEventArgs> & value) const;
    void ViewChanging(event_token token) const;
    bool ChangeView(const Windows::Foundation::IReference<double> & horizontalOffset, const Windows::Foundation::IReference<double> & verticalOffset, const Windows::Foundation::IReference<float> & zoomFactor) const;
    bool ChangeView(const Windows::Foundation::IReference<double> & horizontalOffset, const Windows::Foundation::IReference<double> & verticalOffset, const Windows::Foundation::IReference<float> & zoomFactor, bool disableAnimation) const;
};

template <typename D>
struct WINRT_EBO impl_IScrollViewer3
{
    event_token DirectManipulationStarted(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using DirectManipulationStarted_revoker = event_revoker<IScrollViewer3>;
    DirectManipulationStarted_revoker DirectManipulationStarted(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void DirectManipulationStarted(event_token token) const;
    event_token DirectManipulationCompleted(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using DirectManipulationCompleted_revoker = event_revoker<IScrollViewer3>;
    DirectManipulationCompleted_revoker DirectManipulationCompleted(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void DirectManipulationCompleted(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IScrollViewerStatics
{
    Windows::UI::Xaml::DependencyProperty HorizontalSnapPointsAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty VerticalSnapPointsAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty HorizontalSnapPointsTypeProperty() const;
    Windows::UI::Xaml::DependencyProperty VerticalSnapPointsTypeProperty() const;
    Windows::UI::Xaml::DependencyProperty ZoomSnapPointsTypeProperty() const;
    Windows::UI::Xaml::DependencyProperty HorizontalOffsetProperty() const;
    Windows::UI::Xaml::DependencyProperty ViewportWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty ScrollableWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty ComputedHorizontalScrollBarVisibilityProperty() const;
    Windows::UI::Xaml::DependencyProperty ExtentWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty VerticalOffsetProperty() const;
    Windows::UI::Xaml::DependencyProperty ViewportHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty ScrollableHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty ComputedVerticalScrollBarVisibilityProperty() const;
    Windows::UI::Xaml::DependencyProperty ExtentHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty MinZoomFactorProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxZoomFactorProperty() const;
    Windows::UI::Xaml::DependencyProperty ZoomFactorProperty() const;
    Windows::UI::Xaml::DependencyProperty ZoomSnapPointsProperty() const;
    Windows::UI::Xaml::DependencyProperty HorizontalScrollBarVisibilityProperty() const;
    Windows::UI::Xaml::Controls::ScrollBarVisibility GetHorizontalScrollBarVisibility(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetHorizontalScrollBarVisibility(const Windows::UI::Xaml::DependencyObject & element, Windows::UI::Xaml::Controls::ScrollBarVisibility horizontalScrollBarVisibility) const;
    Windows::UI::Xaml::DependencyProperty VerticalScrollBarVisibilityProperty() const;
    Windows::UI::Xaml::Controls::ScrollBarVisibility GetVerticalScrollBarVisibility(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetVerticalScrollBarVisibility(const Windows::UI::Xaml::DependencyObject & element, Windows::UI::Xaml::Controls::ScrollBarVisibility verticalScrollBarVisibility) const;
    Windows::UI::Xaml::DependencyProperty IsHorizontalRailEnabledProperty() const;
    bool GetIsHorizontalRailEnabled(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetIsHorizontalRailEnabled(const Windows::UI::Xaml::DependencyObject & element, bool isHorizontalRailEnabled) const;
    Windows::UI::Xaml::DependencyProperty IsVerticalRailEnabledProperty() const;
    bool GetIsVerticalRailEnabled(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetIsVerticalRailEnabled(const Windows::UI::Xaml::DependencyObject & element, bool isVerticalRailEnabled) const;
    Windows::UI::Xaml::DependencyProperty IsHorizontalScrollChainingEnabledProperty() const;
    bool GetIsHorizontalScrollChainingEnabled(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetIsHorizontalScrollChainingEnabled(const Windows::UI::Xaml::DependencyObject & element, bool isHorizontalScrollChainingEnabled) const;
    Windows::UI::Xaml::DependencyProperty IsVerticalScrollChainingEnabledProperty() const;
    bool GetIsVerticalScrollChainingEnabled(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetIsVerticalScrollChainingEnabled(const Windows::UI::Xaml::DependencyObject & element, bool isVerticalScrollChainingEnabled) const;
    Windows::UI::Xaml::DependencyProperty IsZoomChainingEnabledProperty() const;
    bool GetIsZoomChainingEnabled(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetIsZoomChainingEnabled(const Windows::UI::Xaml::DependencyObject & element, bool isZoomChainingEnabled) const;
    Windows::UI::Xaml::DependencyProperty IsScrollInertiaEnabledProperty() const;
    bool GetIsScrollInertiaEnabled(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetIsScrollInertiaEnabled(const Windows::UI::Xaml::DependencyObject & element, bool isScrollInertiaEnabled) const;
    Windows::UI::Xaml::DependencyProperty IsZoomInertiaEnabledProperty() const;
    bool GetIsZoomInertiaEnabled(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetIsZoomInertiaEnabled(const Windows::UI::Xaml::DependencyObject & element, bool isZoomInertiaEnabled) const;
    Windows::UI::Xaml::DependencyProperty HorizontalScrollModeProperty() const;
    Windows::UI::Xaml::Controls::ScrollMode GetHorizontalScrollMode(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetHorizontalScrollMode(const Windows::UI::Xaml::DependencyObject & element, Windows::UI::Xaml::Controls::ScrollMode horizontalScrollMode) const;
    Windows::UI::Xaml::DependencyProperty VerticalScrollModeProperty() const;
    Windows::UI::Xaml::Controls::ScrollMode GetVerticalScrollMode(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetVerticalScrollMode(const Windows::UI::Xaml::DependencyObject & element, Windows::UI::Xaml::Controls::ScrollMode verticalScrollMode) const;
    Windows::UI::Xaml::DependencyProperty ZoomModeProperty() const;
    Windows::UI::Xaml::Controls::ZoomMode GetZoomMode(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetZoomMode(const Windows::UI::Xaml::DependencyObject & element, Windows::UI::Xaml::Controls::ZoomMode zoomMode) const;
    Windows::UI::Xaml::DependencyProperty IsDeferredScrollingEnabledProperty() const;
    bool GetIsDeferredScrollingEnabled(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetIsDeferredScrollingEnabled(const Windows::UI::Xaml::DependencyObject & element, bool isDeferredScrollingEnabled) const;
    Windows::UI::Xaml::DependencyProperty BringIntoViewOnFocusChangeProperty() const;
    bool GetBringIntoViewOnFocusChange(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetBringIntoViewOnFocusChange(const Windows::UI::Xaml::DependencyObject & element, bool bringIntoViewOnFocusChange) const;
};

template <typename D>
struct WINRT_EBO impl_IScrollViewerStatics2
{
    Windows::UI::Xaml::DependencyProperty TopLeftHeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty LeftHeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty TopHeaderProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IScrollViewerView
{
    double HorizontalOffset() const;
    double VerticalOffset() const;
    float ZoomFactor() const;
};

template <typename D>
struct WINRT_EBO impl_IScrollViewerViewChangedEventArgs
{
    bool IsIntermediate() const;
};

template <typename D>
struct WINRT_EBO impl_IScrollViewerViewChangingEventArgs
{
    Windows::UI::Xaml::Controls::ScrollViewerView NextView() const;
    Windows::UI::Xaml::Controls::ScrollViewerView FinalView() const;
    bool IsInertial() const;
};

template <typename D>
struct WINRT_EBO impl_ISearchBox
{
    bool SearchHistoryEnabled() const;
    void SearchHistoryEnabled(bool value) const;
    hstring SearchHistoryContext() const;
    void SearchHistoryContext(hstring_ref value) const;
    hstring PlaceholderText() const;
    void PlaceholderText(hstring_ref value) const;
    hstring QueryText() const;
    void QueryText(hstring_ref value) const;
    bool FocusOnKeyboardInput() const;
    void FocusOnKeyboardInput(bool value) const;
    bool ChooseSuggestionOnEnter() const;
    void ChooseSuggestionOnEnter(bool value) const;
    event_token QueryChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs> & value) const;
    using QueryChanged_revoker = event_revoker<ISearchBox>;
    QueryChanged_revoker QueryChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxQueryChangedEventArgs> & value) const;
    void QueryChanged(event_token token) const;
    event_token SuggestionsRequested(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs> & value) const;
    using SuggestionsRequested_revoker = event_revoker<ISearchBox>;
    SuggestionsRequested_revoker SuggestionsRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxSuggestionsRequestedEventArgs> & value) const;
    void SuggestionsRequested(event_token token) const;
    event_token QuerySubmitted(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs> & value) const;
    using QuerySubmitted_revoker = event_revoker<ISearchBox>;
    QuerySubmitted_revoker QuerySubmitted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxQuerySubmittedEventArgs> & value) const;
    void QuerySubmitted(event_token token) const;
    event_token ResultSuggestionChosen(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs> & value) const;
    using ResultSuggestionChosen_revoker = event_revoker<ISearchBox>;
    ResultSuggestionChosen_revoker ResultSuggestionChosen(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::Controls::SearchBoxResultSuggestionChosenEventArgs> & value) const;
    void ResultSuggestionChosen(event_token token) const;
    event_token PrepareForFocusOnKeyboardInput(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::RoutedEventArgs> & value) const;
    using PrepareForFocusOnKeyboardInput_revoker = event_revoker<ISearchBox>;
    PrepareForFocusOnKeyboardInput_revoker PrepareForFocusOnKeyboardInput(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SearchBox, Windows::UI::Xaml::RoutedEventArgs> & value) const;
    void PrepareForFocusOnKeyboardInput(event_token token) const;
    void SetLocalContentSuggestionSettings(const Windows::ApplicationModel::Search::LocalContentSuggestionSettings & settings) const;
};

template <typename D>
struct WINRT_EBO impl_ISearchBoxFactory
{
    Windows::UI::Xaml::Controls::SearchBox CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ISearchBoxQueryChangedEventArgs
{
    hstring QueryText() const;
    hstring Language() const;
    Windows::ApplicationModel::Search::SearchQueryLinguisticDetails LinguisticDetails() const;
};

template <typename D>
struct WINRT_EBO impl_ISearchBoxQuerySubmittedEventArgs
{
    hstring QueryText() const;
    hstring Language() const;
    Windows::ApplicationModel::Search::SearchQueryLinguisticDetails LinguisticDetails() const;
    Windows::System::VirtualKeyModifiers KeyModifiers() const;
};

template <typename D>
struct WINRT_EBO impl_ISearchBoxResultSuggestionChosenEventArgs
{
    hstring Tag() const;
    Windows::System::VirtualKeyModifiers KeyModifiers() const;
};

template <typename D>
struct WINRT_EBO impl_ISearchBoxStatics
{
    Windows::UI::Xaml::DependencyProperty SearchHistoryEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty SearchHistoryContextProperty() const;
    Windows::UI::Xaml::DependencyProperty PlaceholderTextProperty() const;
    Windows::UI::Xaml::DependencyProperty QueryTextProperty() const;
    Windows::UI::Xaml::DependencyProperty FocusOnKeyboardInputProperty() const;
    Windows::UI::Xaml::DependencyProperty ChooseSuggestionOnEnterProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ISearchBoxSuggestionsRequestedEventArgs
{
    hstring QueryText() const;
    hstring Language() const;
    Windows::ApplicationModel::Search::SearchQueryLinguisticDetails LinguisticDetails() const;
    Windows::ApplicationModel::Search::SearchSuggestionsRequest Request() const;
};

template <typename D>
struct WINRT_EBO impl_ISectionsInViewChangedEventArgs
{
    Windows::Foundation::Collections::IVector<Windows::UI::Xaml::Controls::HubSection> AddedSections() const;
    Windows::Foundation::Collections::IVector<Windows::UI::Xaml::Controls::HubSection> RemovedSections() const;
};

template <typename D>
struct WINRT_EBO impl_ISectionsInViewChangedEventArgsFactory
{
};

template <typename D>
struct WINRT_EBO impl_ISelectionChangedEventArgs
{
    Windows::Foundation::Collections::IVector<Windows::IInspectable> AddedItems() const;
    Windows::Foundation::Collections::IVector<Windows::IInspectable> RemovedItems() const;
};

template <typename D>
struct WINRT_EBO impl_ISelectionChangedEventArgsFactory
{
    Windows::UI::Xaml::Controls::SelectionChangedEventArgs CreateInstanceWithRemovedItemsAndAddedItems(const Windows::Foundation::Collections::IVector<Windows::IInspectable> & removedItems, const Windows::Foundation::Collections::IVector<Windows::IInspectable> & addedItems, const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ISemanticZoom
{
    Windows::UI::Xaml::Controls::ISemanticZoomInformation ZoomedInView() const;
    void ZoomedInView(const Windows::UI::Xaml::Controls::ISemanticZoomInformation & value) const;
    Windows::UI::Xaml::Controls::ISemanticZoomInformation ZoomedOutView() const;
    void ZoomedOutView(const Windows::UI::Xaml::Controls::ISemanticZoomInformation & value) const;
    bool IsZoomedInViewActive() const;
    void IsZoomedInViewActive(bool value) const;
    bool CanChangeViews() const;
    void CanChangeViews(bool value) const;
    event_token ViewChangeStarted(const Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventHandler & value) const;
    using ViewChangeStarted_revoker = event_revoker<ISemanticZoom>;
    ViewChangeStarted_revoker ViewChangeStarted(auto_revoke_t, const Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventHandler & value) const;
    void ViewChangeStarted(event_token token) const;
    event_token ViewChangeCompleted(const Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventHandler & value) const;
    using ViewChangeCompleted_revoker = event_revoker<ISemanticZoom>;
    ViewChangeCompleted_revoker ViewChangeCompleted(auto_revoke_t, const Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventHandler & value) const;
    void ViewChangeCompleted(event_token token) const;
    void ToggleActiveView() const;
    bool IsZoomOutButtonEnabled() const;
    void IsZoomOutButtonEnabled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ISemanticZoomInformation
{
    Windows::UI::Xaml::Controls::SemanticZoom SemanticZoomOwner() const;
    void SemanticZoomOwner(const Windows::UI::Xaml::Controls::SemanticZoom & value) const;
    bool IsActiveView() const;
    void IsActiveView(bool value) const;
    bool IsZoomedInView() const;
    void IsZoomedInView(bool value) const;
    void InitializeViewChange() const;
    void CompleteViewChange() const;
    void MakeVisible(const Windows::UI::Xaml::Controls::SemanticZoomLocation & item) const;
    void StartViewChangeFrom(const Windows::UI::Xaml::Controls::SemanticZoomLocation & source, const Windows::UI::Xaml::Controls::SemanticZoomLocation & destination) const;
    void StartViewChangeTo(const Windows::UI::Xaml::Controls::SemanticZoomLocation & source, const Windows::UI::Xaml::Controls::SemanticZoomLocation & destination) const;
    void CompleteViewChangeFrom(const Windows::UI::Xaml::Controls::SemanticZoomLocation & source, const Windows::UI::Xaml::Controls::SemanticZoomLocation & destination) const;
    void CompleteViewChangeTo(const Windows::UI::Xaml::Controls::SemanticZoomLocation & source, const Windows::UI::Xaml::Controls::SemanticZoomLocation & destination) const;
};

template <typename D>
struct WINRT_EBO impl_ISemanticZoomLocation
{
    Windows::IInspectable Item() const;
    void Item(const Windows::IInspectable & value) const;
    Windows::Foundation::Rect Bounds() const;
    void Bounds(const Windows::Foundation::Rect & value) const;
};

template <typename D>
struct WINRT_EBO impl_ISemanticZoomStatics
{
    Windows::UI::Xaml::DependencyProperty ZoomedInViewProperty() const;
    Windows::UI::Xaml::DependencyProperty ZoomedOutViewProperty() const;
    Windows::UI::Xaml::DependencyProperty IsZoomedInViewActiveProperty() const;
    Windows::UI::Xaml::DependencyProperty CanChangeViewsProperty() const;
    Windows::UI::Xaml::DependencyProperty IsZoomOutButtonEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ISemanticZoomViewChangedEventArgs
{
    bool IsSourceZoomedInView() const;
    void IsSourceZoomedInView(bool value) const;
    Windows::UI::Xaml::Controls::SemanticZoomLocation SourceItem() const;
    void SourceItem(const Windows::UI::Xaml::Controls::SemanticZoomLocation & value) const;
    Windows::UI::Xaml::Controls::SemanticZoomLocation DestinationItem() const;
    void DestinationItem(const Windows::UI::Xaml::Controls::SemanticZoomLocation & value) const;
};

template <typename D>
struct WINRT_EBO impl_ISettingsFlyout
{
    hstring Title() const;
    void Title(hstring_ref value) const;
    Windows::UI::Xaml::Media::Brush HeaderBackground() const;
    void HeaderBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush HeaderForeground() const;
    void HeaderForeground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::ImageSource IconSource() const;
    void IconSource(const Windows::UI::Xaml::Media::ImageSource & value) const;
    Windows::UI::Xaml::Controls::Primitives::SettingsFlyoutTemplateSettings TemplateSettings() const;
    event_token BackClick(const Windows::UI::Xaml::Controls::BackClickEventHandler & value) const;
    using BackClick_revoker = event_revoker<ISettingsFlyout>;
    BackClick_revoker BackClick(auto_revoke_t, const Windows::UI::Xaml::Controls::BackClickEventHandler & value) const;
    void BackClick(event_token token) const;
    void Show() const;
    void ShowIndependent() const;
    void Hide() const;
};

template <typename D>
struct WINRT_EBO impl_ISettingsFlyoutFactory
{
    Windows::UI::Xaml::Controls::SettingsFlyout CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ISettingsFlyoutStatics
{
    Windows::UI::Xaml::DependencyProperty TitleProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty IconSourceProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ISlider
{
    double IntermediateValue() const;
    void IntermediateValue(double value) const;
    double StepFrequency() const;
    void StepFrequency(double value) const;
    Windows::UI::Xaml::Controls::Primitives::SliderSnapsTo SnapsTo() const;
    void SnapsTo(Windows::UI::Xaml::Controls::Primitives::SliderSnapsTo value) const;
    double TickFrequency() const;
    void TickFrequency(double value) const;
    Windows::UI::Xaml::Controls::Primitives::TickPlacement TickPlacement() const;
    void TickPlacement(Windows::UI::Xaml::Controls::Primitives::TickPlacement value) const;
    Windows::UI::Xaml::Controls::Orientation Orientation() const;
    void Orientation(Windows::UI::Xaml::Controls::Orientation value) const;
    bool IsDirectionReversed() const;
    void IsDirectionReversed(bool value) const;
    bool IsThumbToolTipEnabled() const;
    void IsThumbToolTipEnabled(bool value) const;
    Windows::UI::Xaml::Data::IValueConverter ThumbToolTipValueConverter() const;
    void ThumbToolTipValueConverter(const Windows::UI::Xaml::Data::IValueConverter & value) const;
};

template <typename D>
struct WINRT_EBO impl_ISlider2
{
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
};

template <typename D>
struct WINRT_EBO impl_ISliderFactory
{
    Windows::UI::Xaml::Controls::Slider CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ISliderStatics
{
    Windows::UI::Xaml::DependencyProperty IntermediateValueProperty() const;
    Windows::UI::Xaml::DependencyProperty StepFrequencyProperty() const;
    Windows::UI::Xaml::DependencyProperty SnapsToProperty() const;
    Windows::UI::Xaml::DependencyProperty TickFrequencyProperty() const;
    Windows::UI::Xaml::DependencyProperty TickPlacementProperty() const;
    Windows::UI::Xaml::DependencyProperty OrientationProperty() const;
    Windows::UI::Xaml::DependencyProperty IsDirectionReversedProperty() const;
    Windows::UI::Xaml::DependencyProperty IsThumbToolTipEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty ThumbToolTipValueConverterProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ISliderStatics2
{
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ISplitView
{
    Windows::UI::Xaml::UIElement Content() const;
    void Content(const Windows::UI::Xaml::UIElement & value) const;
    Windows::UI::Xaml::UIElement Pane() const;
    void Pane(const Windows::UI::Xaml::UIElement & value) const;
    bool IsPaneOpen() const;
    void IsPaneOpen(bool value) const;
    double OpenPaneLength() const;
    void OpenPaneLength(double value) const;
    double CompactPaneLength() const;
    void CompactPaneLength(double value) const;
    Windows::UI::Xaml::Controls::SplitViewPanePlacement PanePlacement() const;
    void PanePlacement(Windows::UI::Xaml::Controls::SplitViewPanePlacement value) const;
    Windows::UI::Xaml::Controls::SplitViewDisplayMode DisplayMode() const;
    void DisplayMode(Windows::UI::Xaml::Controls::SplitViewDisplayMode value) const;
    Windows::UI::Xaml::Controls::Primitives::SplitViewTemplateSettings TemplateSettings() const;
    Windows::UI::Xaml::Media::Brush PaneBackground() const;
    void PaneBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    event_token PaneClosing(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SplitView, Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs> & value) const;
    using PaneClosing_revoker = event_revoker<ISplitView>;
    PaneClosing_revoker PaneClosing(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SplitView, Windows::UI::Xaml::Controls::SplitViewPaneClosingEventArgs> & value) const;
    void PaneClosing(event_token token) const;
    event_token PaneClosed(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SplitView, Windows::IInspectable> & value) const;
    using PaneClosed_revoker = event_revoker<ISplitView>;
    PaneClosed_revoker PaneClosed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SplitView, Windows::IInspectable> & value) const;
    void PaneClosed(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ISplitView2
{
    Windows::UI::Xaml::Controls::LightDismissOverlayMode LightDismissOverlayMode() const;
    void LightDismissOverlayMode(Windows::UI::Xaml::Controls::LightDismissOverlayMode value) const;
};

template <typename D>
struct WINRT_EBO impl_ISplitViewFactory
{
    Windows::UI::Xaml::Controls::SplitView CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ISplitViewPaneClosingEventArgs
{
    bool Cancel() const;
    void Cancel(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ISplitViewStatics
{
    Windows::UI::Xaml::DependencyProperty ContentProperty() const;
    Windows::UI::Xaml::DependencyProperty PaneProperty() const;
    Windows::UI::Xaml::DependencyProperty IsPaneOpenProperty() const;
    Windows::UI::Xaml::DependencyProperty OpenPaneLengthProperty() const;
    Windows::UI::Xaml::DependencyProperty CompactPaneLengthProperty() const;
    Windows::UI::Xaml::DependencyProperty PanePlacementProperty() const;
    Windows::UI::Xaml::DependencyProperty DisplayModeProperty() const;
    Windows::UI::Xaml::DependencyProperty TemplateSettingsProperty() const;
    Windows::UI::Xaml::DependencyProperty PaneBackgroundProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ISplitViewStatics2
{
    Windows::UI::Xaml::DependencyProperty LightDismissOverlayModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IStackPanel
{
    bool AreScrollSnapPointsRegular() const;
    void AreScrollSnapPointsRegular(bool value) const;
    Windows::UI::Xaml::Controls::Orientation Orientation() const;
    void Orientation(Windows::UI::Xaml::Controls::Orientation value) const;
};

template <typename D>
struct WINRT_EBO impl_IStackPanel2
{
    Windows::UI::Xaml::Media::Brush BorderBrush() const;
    void BorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Thickness BorderThickness() const;
    void BorderThickness(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::CornerRadius CornerRadius() const;
    void CornerRadius(const Windows::UI::Xaml::CornerRadius & value) const;
    Windows::UI::Xaml::Thickness Padding() const;
    void Padding(const Windows::UI::Xaml::Thickness & value) const;
};

template <typename D>
struct WINRT_EBO impl_IStackPanelFactory
{
    Windows::UI::Xaml::Controls::StackPanel CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IStackPanelStatics
{
    Windows::UI::Xaml::DependencyProperty AreScrollSnapPointsRegularProperty() const;
    Windows::UI::Xaml::DependencyProperty OrientationProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IStackPanelStatics2
{
    Windows::UI::Xaml::DependencyProperty BorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty BorderThicknessProperty() const;
    Windows::UI::Xaml::DependencyProperty CornerRadiusProperty() const;
    Windows::UI::Xaml::DependencyProperty PaddingProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IStyleSelector
{
    Windows::UI::Xaml::Style SelectStyle(const Windows::IInspectable & item, const Windows::UI::Xaml::DependencyObject & container) const;
};

template <typename D>
struct WINRT_EBO impl_IStyleSelectorFactory
{
    Windows::UI::Xaml::Controls::StyleSelector CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IStyleSelectorOverrides
{
    Windows::UI::Xaml::Style SelectStyleCore(const Windows::IInspectable & item, const Windows::UI::Xaml::DependencyObject & container) const;
};

template <typename D>
struct WINRT_EBO impl_ISwapChainBackgroundPanel
{
};

template <typename D>
struct WINRT_EBO impl_ISwapChainBackgroundPanel2
{
    Windows::UI::Core::CoreIndependentInputSource CreateCoreIndependentInputSource(Windows::UI::Core::CoreInputDeviceTypes deviceTypes) const;
};

template <typename D>
struct WINRT_EBO impl_ISwapChainBackgroundPanelFactory
{
    Windows::UI::Xaml::Controls::SwapChainBackgroundPanel CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ISwapChainPanel
{
    float CompositionScaleX() const;
    float CompositionScaleY() const;
    event_token CompositionScaleChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SwapChainPanel, Windows::IInspectable> & value) const;
    using CompositionScaleChanged_revoker = event_revoker<ISwapChainPanel>;
    CompositionScaleChanged_revoker CompositionScaleChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::SwapChainPanel, Windows::IInspectable> & value) const;
    void CompositionScaleChanged(event_token token) const;
    Windows::UI::Core::CoreIndependentInputSource CreateCoreIndependentInputSource(Windows::UI::Core::CoreInputDeviceTypes deviceTypes) const;
};

template <typename D>
struct WINRT_EBO impl_ISwapChainPanelFactory
{
    Windows::UI::Xaml::Controls::SwapChainPanel CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ISwapChainPanelStatics
{
    Windows::UI::Xaml::DependencyProperty CompositionScaleXProperty() const;
    Windows::UI::Xaml::DependencyProperty CompositionScaleYProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ISymbolIcon
{
    Windows::UI::Xaml::Controls::Symbol Symbol() const;
    void Symbol(Windows::UI::Xaml::Controls::Symbol value) const;
};

template <typename D>
struct WINRT_EBO impl_ISymbolIconFactory
{
    Windows::UI::Xaml::Controls::SymbolIcon CreateInstanceWithSymbol(Windows::UI::Xaml::Controls::Symbol symbol) const;
};

template <typename D>
struct WINRT_EBO impl_ISymbolIconStatics
{
    Windows::UI::Xaml::DependencyProperty SymbolProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ITextBlock
{
    double FontSize() const;
    void FontSize(double value) const;
    Windows::UI::Xaml::Media::FontFamily FontFamily() const;
    void FontFamily(const Windows::UI::Xaml::Media::FontFamily & value) const;
    Windows::UI::Text::FontWeight FontWeight() const;
    void FontWeight(const Windows::UI::Text::FontWeight & value) const;
    Windows::UI::Text::FontStyle FontStyle() const;
    void FontStyle(Windows::UI::Text::FontStyle value) const;
    Windows::UI::Text::FontStretch FontStretch() const;
    void FontStretch(Windows::UI::Text::FontStretch value) const;
    int32_t CharacterSpacing() const;
    void CharacterSpacing(int32_t value) const;
    Windows::UI::Xaml::Media::Brush Foreground() const;
    void Foreground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::TextWrapping TextWrapping() const;
    void TextWrapping(Windows::UI::Xaml::TextWrapping value) const;
    Windows::UI::Xaml::TextTrimming TextTrimming() const;
    void TextTrimming(Windows::UI::Xaml::TextTrimming value) const;
    Windows::UI::Xaml::TextAlignment TextAlignment() const;
    void TextAlignment(Windows::UI::Xaml::TextAlignment value) const;
    hstring Text() const;
    void Text(hstring_ref value) const;
    Windows::UI::Xaml::Documents::InlineCollection Inlines() const;
    Windows::UI::Xaml::Thickness Padding() const;
    void Padding(const Windows::UI::Xaml::Thickness & value) const;
    double LineHeight() const;
    void LineHeight(double value) const;
    Windows::UI::Xaml::LineStackingStrategy LineStackingStrategy() const;
    void LineStackingStrategy(Windows::UI::Xaml::LineStackingStrategy value) const;
    bool IsTextSelectionEnabled() const;
    void IsTextSelectionEnabled(bool value) const;
    hstring SelectedText() const;
    Windows::UI::Xaml::Documents::TextPointer ContentStart() const;
    Windows::UI::Xaml::Documents::TextPointer ContentEnd() const;
    Windows::UI::Xaml::Documents::TextPointer SelectionStart() const;
    Windows::UI::Xaml::Documents::TextPointer SelectionEnd() const;
    double BaselineOffset() const;
    event_token SelectionChanged(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using SelectionChanged_revoker = event_revoker<ITextBlock>;
    SelectionChanged_revoker SelectionChanged(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void SelectionChanged(event_token token) const;
    event_token ContextMenuOpening(const Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler & value) const;
    using ContextMenuOpening_revoker = event_revoker<ITextBlock>;
    ContextMenuOpening_revoker ContextMenuOpening(auto_revoke_t, const Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler & value) const;
    void ContextMenuOpening(event_token token) const;
    void SelectAll() const;
    void Select(const Windows::UI::Xaml::Documents::TextPointer & start, const Windows::UI::Xaml::Documents::TextPointer & end) const;
    bool Focus(Windows::UI::Xaml::FocusState value) const;
};

template <typename D>
struct WINRT_EBO impl_ITextBlock2
{
    Windows::UI::Xaml::Media::SolidColorBrush SelectionHighlightColor() const;
    void SelectionHighlightColor(const Windows::UI::Xaml::Media::SolidColorBrush & value) const;
    int32_t MaxLines() const;
    void MaxLines(int32_t value) const;
    Windows::UI::Xaml::TextLineBounds TextLineBounds() const;
    void TextLineBounds(Windows::UI::Xaml::TextLineBounds value) const;
    Windows::UI::Xaml::OpticalMarginAlignment OpticalMarginAlignment() const;
    void OpticalMarginAlignment(Windows::UI::Xaml::OpticalMarginAlignment value) const;
    bool IsColorFontEnabled() const;
    void IsColorFontEnabled(bool value) const;
    Windows::UI::Xaml::TextReadingOrder TextReadingOrder() const;
    void TextReadingOrder(Windows::UI::Xaml::TextReadingOrder value) const;
};

template <typename D>
struct WINRT_EBO impl_ITextBlock3
{
    bool IsTextScaleFactorEnabled() const;
    void IsTextScaleFactorEnabled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ITextBlock4
{
    Windows::UI::Composition::CompositionBrush GetAlphaMask() const;
};

template <typename D>
struct WINRT_EBO impl_ITextBlockStatics
{
    Windows::UI::Xaml::DependencyProperty FontSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty FontFamilyProperty() const;
    Windows::UI::Xaml::DependencyProperty FontWeightProperty() const;
    Windows::UI::Xaml::DependencyProperty FontStyleProperty() const;
    Windows::UI::Xaml::DependencyProperty FontStretchProperty() const;
    Windows::UI::Xaml::DependencyProperty CharacterSpacingProperty() const;
    Windows::UI::Xaml::DependencyProperty ForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty TextWrappingProperty() const;
    Windows::UI::Xaml::DependencyProperty TextTrimmingProperty() const;
    Windows::UI::Xaml::DependencyProperty TextAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty TextProperty() const;
    Windows::UI::Xaml::DependencyProperty PaddingProperty() const;
    Windows::UI::Xaml::DependencyProperty LineHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty LineStackingStrategyProperty() const;
    Windows::UI::Xaml::DependencyProperty IsTextSelectionEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedTextProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ITextBlockStatics2
{
    Windows::UI::Xaml::DependencyProperty SelectionHighlightColorProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxLinesProperty() const;
    Windows::UI::Xaml::DependencyProperty TextLineBoundsProperty() const;
    Windows::UI::Xaml::DependencyProperty OpticalMarginAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty IsColorFontEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty TextReadingOrderProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ITextBlockStatics3
{
    Windows::UI::Xaml::DependencyProperty IsTextScaleFactorEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ITextBox
{
    hstring Text() const;
    void Text(hstring_ref value) const;
    hstring SelectedText() const;
    void SelectedText(hstring_ref value) const;
    int32_t SelectionLength() const;
    void SelectionLength(int32_t value) const;
    int32_t SelectionStart() const;
    void SelectionStart(int32_t value) const;
    int32_t MaxLength() const;
    void MaxLength(int32_t value) const;
    bool IsReadOnly() const;
    void IsReadOnly(bool value) const;
    bool AcceptsReturn() const;
    void AcceptsReturn(bool value) const;
    Windows::UI::Xaml::TextAlignment TextAlignment() const;
    void TextAlignment(Windows::UI::Xaml::TextAlignment value) const;
    Windows::UI::Xaml::TextWrapping TextWrapping() const;
    void TextWrapping(Windows::UI::Xaml::TextWrapping value) const;
    bool IsSpellCheckEnabled() const;
    void IsSpellCheckEnabled(bool value) const;
    bool IsTextPredictionEnabled() const;
    void IsTextPredictionEnabled(bool value) const;
    Windows::UI::Xaml::Input::InputScope InputScope() const;
    void InputScope(const Windows::UI::Xaml::Input::InputScope & value) const;
    event_token TextChanged(const Windows::UI::Xaml::Controls::TextChangedEventHandler & value) const;
    using TextChanged_revoker = event_revoker<ITextBox>;
    TextChanged_revoker TextChanged(auto_revoke_t, const Windows::UI::Xaml::Controls::TextChangedEventHandler & value) const;
    void TextChanged(event_token token) const;
    event_token SelectionChanged(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using SelectionChanged_revoker = event_revoker<ITextBox>;
    SelectionChanged_revoker SelectionChanged(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void SelectionChanged(event_token token) const;
    event_token ContextMenuOpening(const Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler & value) const;
    using ContextMenuOpening_revoker = event_revoker<ITextBox>;
    ContextMenuOpening_revoker ContextMenuOpening(auto_revoke_t, const Windows::UI::Xaml::Controls::ContextMenuOpeningEventHandler & value) const;
    void ContextMenuOpening(event_token token) const;
    void Select(int32_t start, int32_t length) const;
    void SelectAll() const;
    Windows::Foundation::Rect GetRectFromCharacterIndex(int32_t charIndex, bool trailingEdge) const;
};

template <typename D>
struct WINRT_EBO impl_ITextBox2
{
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    hstring PlaceholderText() const;
    void PlaceholderText(hstring_ref value) const;
    Windows::UI::Xaml::Media::SolidColorBrush SelectionHighlightColor() const;
    void SelectionHighlightColor(const Windows::UI::Xaml::Media::SolidColorBrush & value) const;
    bool PreventKeyboardDisplayOnProgrammaticFocus() const;
    void PreventKeyboardDisplayOnProgrammaticFocus(bool value) const;
    bool IsColorFontEnabled() const;
    void IsColorFontEnabled(bool value) const;
    event_token Paste(const Windows::UI::Xaml::Controls::TextControlPasteEventHandler & value) const;
    using Paste_revoker = event_revoker<ITextBox2>;
    Paste_revoker Paste(auto_revoke_t, const Windows::UI::Xaml::Controls::TextControlPasteEventHandler & value) const;
    void Paste(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ITextBox3
{
    event_token TextCompositionStarted(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs> & value) const;
    using TextCompositionStarted_revoker = event_revoker<ITextBox3>;
    TextCompositionStarted_revoker TextCompositionStarted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionStartedEventArgs> & value) const;
    void TextCompositionStarted(event_token token) const;
    event_token TextCompositionChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs> & value) const;
    using TextCompositionChanged_revoker = event_revoker<ITextBox3>;
    TextCompositionChanged_revoker TextCompositionChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionChangedEventArgs> & value) const;
    void TextCompositionChanged(event_token token) const;
    event_token TextCompositionEnded(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs> & value) const;
    using TextCompositionEnded_revoker = event_revoker<ITextBox3>;
    TextCompositionEnded_revoker TextCompositionEnded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextCompositionEndedEventArgs> & value) const;
    void TextCompositionEnded(event_token token) const;
    Windows::UI::Xaml::TextReadingOrder TextReadingOrder() const;
    void TextReadingOrder(Windows::UI::Xaml::TextReadingOrder value) const;
    Windows::UI::Xaml::Controls::CandidateWindowAlignment DesiredCandidateWindowAlignment() const;
    void DesiredCandidateWindowAlignment(Windows::UI::Xaml::Controls::CandidateWindowAlignment value) const;
    event_token CandidateWindowBoundsChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs> & value) const;
    using CandidateWindowBoundsChanged_revoker = event_revoker<ITextBox3>;
    CandidateWindowBoundsChanged_revoker CandidateWindowBoundsChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::CandidateWindowBoundsChangedEventArgs> & value) const;
    void CandidateWindowBoundsChanged(event_token token) const;
    event_token TextChanging(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs> & value) const;
    using TextChanging_revoker = event_revoker<ITextBox3>;
    TextChanging_revoker TextChanging(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TextBox, Windows::UI::Xaml::Controls::TextBoxTextChangingEventArgs> & value) const;
    void TextChanging(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ITextBox4
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<hstring>> GetLinguisticAlternativesAsync() const;
};

template <typename D>
struct WINRT_EBO impl_ITextBoxFactory
{
    Windows::UI::Xaml::Controls::TextBox CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ITextBoxStatics
{
    Windows::UI::Xaml::DependencyProperty TextProperty() const;
    Windows::UI::Xaml::DependencyProperty MaxLengthProperty() const;
    Windows::UI::Xaml::DependencyProperty IsReadOnlyProperty() const;
    Windows::UI::Xaml::DependencyProperty AcceptsReturnProperty() const;
    Windows::UI::Xaml::DependencyProperty TextAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty TextWrappingProperty() const;
    Windows::UI::Xaml::DependencyProperty IsSpellCheckEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty IsTextPredictionEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty InputScopeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ITextBoxStatics2
{
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty PlaceholderTextProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectionHighlightColorProperty() const;
    Windows::UI::Xaml::DependencyProperty PreventKeyboardDisplayOnProgrammaticFocusProperty() const;
    Windows::UI::Xaml::DependencyProperty IsColorFontEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ITextBoxStatics3
{
    Windows::UI::Xaml::DependencyProperty DesiredCandidateWindowAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty TextReadingOrderProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ITextBoxTextChangingEventArgs
{
};

template <typename D>
struct WINRT_EBO impl_ITextChangedEventArgs
{
};

template <typename D>
struct WINRT_EBO impl_ITextCompositionChangedEventArgs
{
    int32_t StartIndex() const;
    int32_t Length() const;
};

template <typename D>
struct WINRT_EBO impl_ITextCompositionEndedEventArgs
{
    int32_t StartIndex() const;
    int32_t Length() const;
};

template <typename D>
struct WINRT_EBO impl_ITextCompositionStartedEventArgs
{
    int32_t StartIndex() const;
    int32_t Length() const;
};

template <typename D>
struct WINRT_EBO impl_ITextControlPasteEventArgs
{
    bool Handled() const;
    void Handled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ITimePickedEventArgs
{
    Windows::Foundation::TimeSpan OldTime() const;
    Windows::Foundation::TimeSpan NewTime() const;
};

template <typename D>
struct WINRT_EBO impl_ITimePicker
{
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    hstring ClockIdentifier() const;
    void ClockIdentifier(hstring_ref value) const;
    int32_t MinuteIncrement() const;
    void MinuteIncrement(int32_t value) const;
    Windows::Foundation::TimeSpan Time() const;
    void Time(const Windows::Foundation::TimeSpan & value) const;
    event_token TimeChanged(const Windows::Foundation::EventHandler<Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs> & value) const;
    using TimeChanged_revoker = event_revoker<ITimePicker>;
    TimeChanged_revoker TimeChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::UI::Xaml::Controls::TimePickerValueChangedEventArgs> & value) const;
    void TimeChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ITimePicker2
{
    Windows::UI::Xaml::Controls::LightDismissOverlayMode LightDismissOverlayMode() const;
    void LightDismissOverlayMode(Windows::UI::Xaml::Controls::LightDismissOverlayMode value) const;
};

template <typename D>
struct WINRT_EBO impl_ITimePickerFactory
{
    Windows::UI::Xaml::Controls::TimePicker CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ITimePickerFlyout
{
    hstring ClockIdentifier() const;
    void ClockIdentifier(hstring_ref value) const;
    Windows::Foundation::TimeSpan Time() const;
    void Time(const Windows::Foundation::TimeSpan & value) const;
    int32_t MinuteIncrement() const;
    void MinuteIncrement(int32_t value) const;
    event_token TimePicked(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TimePickerFlyout, Windows::UI::Xaml::Controls::TimePickedEventArgs> & value) const;
    using TimePicked_revoker = event_revoker<ITimePickerFlyout>;
    TimePicked_revoker TimePicked(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::TimePickerFlyout, Windows::UI::Xaml::Controls::TimePickedEventArgs> & value) const;
    void TimePicked(event_token token) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::IReference<Windows::Foundation::TimeSpan>> ShowAtAsync(const Windows::UI::Xaml::FrameworkElement & target) const;
};

template <typename D>
struct WINRT_EBO impl_ITimePickerFlyoutPresenter
{
};

template <typename D>
struct WINRT_EBO impl_ITimePickerFlyoutStatics
{
    Windows::UI::Xaml::DependencyProperty ClockIdentifierProperty() const;
    Windows::UI::Xaml::DependencyProperty TimeProperty() const;
    Windows::UI::Xaml::DependencyProperty MinuteIncrementProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ITimePickerStatics
{
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty ClockIdentifierProperty() const;
    Windows::UI::Xaml::DependencyProperty MinuteIncrementProperty() const;
    Windows::UI::Xaml::DependencyProperty TimeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ITimePickerStatics2
{
    Windows::UI::Xaml::DependencyProperty LightDismissOverlayModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ITimePickerValueChangedEventArgs
{
    Windows::Foundation::TimeSpan OldTime() const;
    Windows::Foundation::TimeSpan NewTime() const;
};

template <typename D>
struct WINRT_EBO impl_IToggleMenuFlyoutItem
{
    bool IsChecked() const;
    void IsChecked(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IToggleMenuFlyoutItemFactory
{
    Windows::UI::Xaml::Controls::ToggleMenuFlyoutItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IToggleMenuFlyoutItemStatics
{
    Windows::UI::Xaml::DependencyProperty IsCheckedProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IToggleSwitch
{
    bool IsOn() const;
    void IsOn(bool value) const;
    Windows::IInspectable Header() const;
    void Header(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate HeaderTemplate() const;
    void HeaderTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::IInspectable OnContent() const;
    void OnContent(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate OnContentTemplate() const;
    void OnContentTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::IInspectable OffContent() const;
    void OffContent(const Windows::IInspectable & value) const;
    Windows::UI::Xaml::DataTemplate OffContentTemplate() const;
    void OffContentTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    Windows::UI::Xaml::Controls::Primitives::ToggleSwitchTemplateSettings TemplateSettings() const;
    event_token Toggled(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using Toggled_revoker = event_revoker<IToggleSwitch>;
    Toggled_revoker Toggled(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void Toggled(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IToggleSwitchOverrides
{
    void OnToggled() const;
    void OnOnContentChanged(const Windows::IInspectable & oldContent, const Windows::IInspectable & newContent) const;
    void OnOffContentChanged(const Windows::IInspectable & oldContent, const Windows::IInspectable & newContent) const;
    void OnHeaderChanged(const Windows::IInspectable & oldContent, const Windows::IInspectable & newContent) const;
};

template <typename D>
struct WINRT_EBO impl_IToggleSwitchStatics
{
    Windows::UI::Xaml::DependencyProperty IsOnProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderProperty() const;
    Windows::UI::Xaml::DependencyProperty HeaderTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty OnContentProperty() const;
    Windows::UI::Xaml::DependencyProperty OnContentTemplateProperty() const;
    Windows::UI::Xaml::DependencyProperty OffContentProperty() const;
    Windows::UI::Xaml::DependencyProperty OffContentTemplateProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IToolTip
{
    double HorizontalOffset() const;
    void HorizontalOffset(double value) const;
    bool IsOpen() const;
    void IsOpen(bool value) const;
    Windows::UI::Xaml::Controls::Primitives::PlacementMode Placement() const;
    void Placement(Windows::UI::Xaml::Controls::Primitives::PlacementMode value) const;
    Windows::UI::Xaml::UIElement PlacementTarget() const;
    void PlacementTarget(const Windows::UI::Xaml::UIElement & value) const;
    double VerticalOffset() const;
    void VerticalOffset(double value) const;
    Windows::UI::Xaml::Controls::Primitives::ToolTipTemplateSettings TemplateSettings() const;
    event_token Closed(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using Closed_revoker = event_revoker<IToolTip>;
    Closed_revoker Closed(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void Closed(event_token token) const;
    event_token Opened(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using Opened_revoker = event_revoker<IToolTip>;
    Opened_revoker Opened(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void Opened(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IToolTipFactory
{
    Windows::UI::Xaml::Controls::ToolTip CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IToolTipService
{
};

template <typename D>
struct WINRT_EBO impl_IToolTipServiceStatics
{
    Windows::UI::Xaml::DependencyProperty PlacementProperty() const;
    Windows::UI::Xaml::Controls::Primitives::PlacementMode GetPlacement(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetPlacement(const Windows::UI::Xaml::DependencyObject & element, Windows::UI::Xaml::Controls::Primitives::PlacementMode value) const;
    Windows::UI::Xaml::DependencyProperty PlacementTargetProperty() const;
    Windows::UI::Xaml::UIElement GetPlacementTarget(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetPlacementTarget(const Windows::UI::Xaml::DependencyObject & element, const Windows::UI::Xaml::UIElement & value) const;
    Windows::UI::Xaml::DependencyProperty ToolTipProperty() const;
    Windows::IInspectable GetToolTip(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetToolTip(const Windows::UI::Xaml::DependencyObject & element, const Windows::IInspectable & value) const;
};

template <typename D>
struct WINRT_EBO impl_IToolTipStatics
{
    Windows::UI::Xaml::DependencyProperty HorizontalOffsetProperty() const;
    Windows::UI::Xaml::DependencyProperty IsOpenProperty() const;
    Windows::UI::Xaml::DependencyProperty PlacementProperty() const;
    Windows::UI::Xaml::DependencyProperty PlacementTargetProperty() const;
    Windows::UI::Xaml::DependencyProperty VerticalOffsetProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IUIElementCollection
{
    void Move(uint32_t oldIndex, uint32_t newIndex) const;
};

template <typename D>
struct WINRT_EBO impl_IUserControl
{
    Windows::UI::Xaml::UIElement Content() const;
    void Content(const Windows::UI::Xaml::UIElement & value) const;
};

template <typename D>
struct WINRT_EBO impl_IUserControlFactory
{
    Windows::UI::Xaml::Controls::UserControl CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IUserControlStatics
{
    Windows::UI::Xaml::DependencyProperty ContentProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IVariableSizedWrapGrid
{
    double ItemHeight() const;
    void ItemHeight(double value) const;
    double ItemWidth() const;
    void ItemWidth(double value) const;
    Windows::UI::Xaml::Controls::Orientation Orientation() const;
    void Orientation(Windows::UI::Xaml::Controls::Orientation value) const;
    Windows::UI::Xaml::HorizontalAlignment HorizontalChildrenAlignment() const;
    void HorizontalChildrenAlignment(Windows::UI::Xaml::HorizontalAlignment value) const;
    Windows::UI::Xaml::VerticalAlignment VerticalChildrenAlignment() const;
    void VerticalChildrenAlignment(Windows::UI::Xaml::VerticalAlignment value) const;
    int32_t MaximumRowsOrColumns() const;
    void MaximumRowsOrColumns(int32_t value) const;
};

template <typename D>
struct WINRT_EBO impl_IVariableSizedWrapGridStatics
{
    Windows::UI::Xaml::DependencyProperty ItemHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty OrientationProperty() const;
    Windows::UI::Xaml::DependencyProperty HorizontalChildrenAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty VerticalChildrenAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty MaximumRowsOrColumnsProperty() const;
    Windows::UI::Xaml::DependencyProperty RowSpanProperty() const;
    int32_t GetRowSpan(const Windows::UI::Xaml::UIElement & element) const;
    void SetRowSpan(const Windows::UI::Xaml::UIElement & element, int32_t value) const;
    Windows::UI::Xaml::DependencyProperty ColumnSpanProperty() const;
    int32_t GetColumnSpan(const Windows::UI::Xaml::UIElement & element) const;
    void SetColumnSpan(const Windows::UI::Xaml::UIElement & element, int32_t value) const;
};

template <typename D>
struct WINRT_EBO impl_IViewbox
{
    Windows::UI::Xaml::UIElement Child() const;
    void Child(const Windows::UI::Xaml::UIElement & value) const;
    Windows::UI::Xaml::Media::Stretch Stretch() const;
    void Stretch(Windows::UI::Xaml::Media::Stretch value) const;
    Windows::UI::Xaml::Controls::StretchDirection StretchDirection() const;
    void StretchDirection(Windows::UI::Xaml::Controls::StretchDirection value) const;
};

template <typename D>
struct WINRT_EBO impl_IViewboxStatics
{
    Windows::UI::Xaml::DependencyProperty StretchProperty() const;
    Windows::UI::Xaml::DependencyProperty StretchDirectionProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IVirtualizingPanel
{
    Windows::UI::Xaml::Controls::ItemContainerGenerator ItemContainerGenerator() const;
};

template <typename D>
struct WINRT_EBO impl_IVirtualizingPanelFactory
{
};

template <typename D>
struct WINRT_EBO impl_IVirtualizingPanelOverrides
{
    void OnItemsChanged(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::Primitives::ItemsChangedEventArgs & args) const;
    void OnClearChildren() const;
    void BringIndexIntoView(int32_t index) const;
};

template <typename D>
struct WINRT_EBO impl_IVirtualizingPanelProtected
{
    void AddInternalChild(const Windows::UI::Xaml::UIElement & child) const;
    void InsertInternalChild(int32_t index, const Windows::UI::Xaml::UIElement & child) const;
    void RemoveInternalChildRange(int32_t index, int32_t range) const;
};

template <typename D>
struct WINRT_EBO impl_IVirtualizingStackPanel
{
    bool AreScrollSnapPointsRegular() const;
    void AreScrollSnapPointsRegular(bool value) const;
    Windows::UI::Xaml::Controls::Orientation Orientation() const;
    void Orientation(Windows::UI::Xaml::Controls::Orientation value) const;
    event_token CleanUpVirtualizedItemEvent(const Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventHandler & value) const;
    using CleanUpVirtualizedItemEvent_revoker = event_revoker<IVirtualizingStackPanel>;
    CleanUpVirtualizedItemEvent_revoker CleanUpVirtualizedItemEvent(auto_revoke_t, const Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventHandler & value) const;
    void CleanUpVirtualizedItemEvent(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IVirtualizingStackPanelOverrides
{
    void OnCleanUpVirtualizedItem(const Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs & e) const;
};

template <typename D>
struct WINRT_EBO impl_IVirtualizingStackPanelStatics
{
    Windows::UI::Xaml::DependencyProperty AreScrollSnapPointsRegularProperty() const;
    Windows::UI::Xaml::DependencyProperty OrientationProperty() const;
    Windows::UI::Xaml::DependencyProperty VirtualizationModeProperty() const;
    Windows::UI::Xaml::Controls::VirtualizationMode GetVirtualizationMode(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetVirtualizationMode(const Windows::UI::Xaml::DependencyObject & element, Windows::UI::Xaml::Controls::VirtualizationMode value) const;
    Windows::UI::Xaml::DependencyProperty IsVirtualizingProperty() const;
    bool GetIsVirtualizing(const Windows::UI::Xaml::DependencyObject & o) const;
};

template <typename D>
struct WINRT_EBO impl_IWebView
{
    Windows::Foundation::Uri Source() const;
    void Source(const Windows::Foundation::Uri & value) const;
    Windows::Foundation::Collections::IVector<Windows::Foundation::Uri> AllowedScriptNotifyUris() const;
    void AllowedScriptNotifyUris(const Windows::Foundation::Collections::IVector<Windows::Foundation::Uri> & value) const;
    Windows::ApplicationModel::DataTransfer::DataPackage DataTransferPackage() const;
    event_token LoadCompleted(const Windows::UI::Xaml::Navigation::LoadCompletedEventHandler & value) const;
    using LoadCompleted_revoker = event_revoker<IWebView>;
    LoadCompleted_revoker LoadCompleted(auto_revoke_t, const Windows::UI::Xaml::Navigation::LoadCompletedEventHandler & value) const;
    void LoadCompleted(event_token token) const;
    event_token ScriptNotify(const Windows::UI::Xaml::Controls::NotifyEventHandler & value) const;
    using ScriptNotify_revoker = event_revoker<IWebView>;
    ScriptNotify_revoker ScriptNotify(auto_revoke_t, const Windows::UI::Xaml::Controls::NotifyEventHandler & value) const;
    void ScriptNotify(event_token token) const;
    event_token NavigationFailed(const Windows::UI::Xaml::Controls::WebViewNavigationFailedEventHandler & value) const;
    using NavigationFailed_revoker = event_revoker<IWebView>;
    NavigationFailed_revoker NavigationFailed(auto_revoke_t, const Windows::UI::Xaml::Controls::WebViewNavigationFailedEventHandler & value) const;
    void NavigationFailed(event_token token) const;
    hstring InvokeScript(hstring_ref scriptName, array_ref<const hstring> arguments) const;
    void Navigate(const Windows::Foundation::Uri & source) const;
    void NavigateToString(hstring_ref text) const;
};

template <typename D>
struct WINRT_EBO impl_IWebView2
{
    bool CanGoBack() const;
    bool CanGoForward() const;
    hstring DocumentTitle() const;
    event_token NavigationStarting(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs> & value) const;
    using NavigationStarting_revoker = event_revoker<IWebView2>;
    NavigationStarting_revoker NavigationStarting(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs> & value) const;
    void NavigationStarting(event_token token) const;
    event_token ContentLoading(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs> & value) const;
    using ContentLoading_revoker = event_revoker<IWebView2>;
    ContentLoading_revoker ContentLoading(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs> & value) const;
    void ContentLoading(event_token token) const;
    event_token DOMContentLoaded(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs> & value) const;
    using DOMContentLoaded_revoker = event_revoker<IWebView2>;
    DOMContentLoaded_revoker DOMContentLoaded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs> & value) const;
    void DOMContentLoaded(event_token token) const;
    void GoForward() const;
    void GoBack() const;
    void Refresh() const;
    void Stop() const;
    Windows::Foundation::IAsyncAction CapturePreviewToStreamAsync(const Windows::Storage::Streams::IRandomAccessStream & stream) const;
    Windows::Foundation::IAsyncOperation<hstring> InvokeScriptAsync(hstring_ref scriptName, const Windows::Foundation::Collections::IIterable<hstring> & arguments) const;
    Windows::Foundation::IAsyncOperation<Windows::ApplicationModel::DataTransfer::DataPackage> CaptureSelectedContentToDataPackageAsync() const;
    void NavigateToLocalStreamUri(const Windows::Foundation::Uri & source, const Windows::Web::IUriToStreamResolver & streamResolver) const;
    Windows::Foundation::Uri BuildLocalStreamUri(hstring_ref contentIdentifier, hstring_ref relativePath) const;
    Windows::UI::Color DefaultBackgroundColor() const;
    void DefaultBackgroundColor(const Windows::UI::Color & value) const;
    event_token NavigationCompleted(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs> & value) const;
    using NavigationCompleted_revoker = event_revoker<IWebView2>;
    NavigationCompleted_revoker NavigationCompleted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs> & value) const;
    void NavigationCompleted(event_token token) const;
    event_token FrameNavigationStarting(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs> & value) const;
    using FrameNavigationStarting_revoker = event_revoker<IWebView2>;
    FrameNavigationStarting_revoker FrameNavigationStarting(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationStartingEventArgs> & value) const;
    void FrameNavigationStarting(event_token token) const;
    event_token FrameContentLoading(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs> & value) const;
    using FrameContentLoading_revoker = event_revoker<IWebView2>;
    FrameContentLoading_revoker FrameContentLoading(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewContentLoadingEventArgs> & value) const;
    void FrameContentLoading(event_token token) const;
    event_token FrameDOMContentLoaded(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs> & value) const;
    using FrameDOMContentLoaded_revoker = event_revoker<IWebView2>;
    FrameDOMContentLoaded_revoker FrameDOMContentLoaded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewDOMContentLoadedEventArgs> & value) const;
    void FrameDOMContentLoaded(event_token token) const;
    event_token FrameNavigationCompleted(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs> & value) const;
    using FrameNavigationCompleted_revoker = event_revoker<IWebView2>;
    FrameNavigationCompleted_revoker FrameNavigationCompleted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNavigationCompletedEventArgs> & value) const;
    void FrameNavigationCompleted(event_token token) const;
    event_token LongRunningScriptDetected(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs> & value) const;
    using LongRunningScriptDetected_revoker = event_revoker<IWebView2>;
    LongRunningScriptDetected_revoker LongRunningScriptDetected(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewLongRunningScriptDetectedEventArgs> & value) const;
    void LongRunningScriptDetected(event_token token) const;
    event_token UnsafeContentWarningDisplaying(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::IInspectable> & value) const;
    using UnsafeContentWarningDisplaying_revoker = event_revoker<IWebView2>;
    UnsafeContentWarningDisplaying_revoker UnsafeContentWarningDisplaying(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::IInspectable> & value) const;
    void UnsafeContentWarningDisplaying(event_token token) const;
    event_token UnviewableContentIdentified(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs> & value) const;
    using UnviewableContentIdentified_revoker = event_revoker<IWebView2>;
    UnviewableContentIdentified_revoker UnviewableContentIdentified(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewUnviewableContentIdentifiedEventArgs> & value) const;
    void UnviewableContentIdentified(event_token token) const;
    void NavigateWithHttpRequestMessage(const Windows::Web::Http::HttpRequestMessage & requestMessage) const;
    bool Focus(Windows::UI::Xaml::FocusState value) const;
};

template <typename D>
struct WINRT_EBO impl_IWebView3
{
    bool ContainsFullScreenElement() const;
    event_token ContainsFullScreenElementChanged(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::IInspectable> & value) const;
    using ContainsFullScreenElementChanged_revoker = event_revoker<IWebView3>;
    ContainsFullScreenElementChanged_revoker ContainsFullScreenElementChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::IInspectable> & value) const;
    void ContainsFullScreenElementChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IWebView4
{
    Windows::UI::Xaml::Controls::WebViewExecutionMode ExecutionMode() const;
    Windows::Foundation::Collections::IVector<Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest> DeferredPermissionRequests() const;
    Windows::UI::Xaml::Controls::WebViewSettings Settings() const;
    event_token UnsupportedUriSchemeIdentified(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs> & value) const;
    using UnsupportedUriSchemeIdentified_revoker = event_revoker<IWebView4>;
    UnsupportedUriSchemeIdentified_revoker UnsupportedUriSchemeIdentified(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewUnsupportedUriSchemeIdentifiedEventArgs> & value) const;
    void UnsupportedUriSchemeIdentified(event_token token) const;
    event_token NewWindowRequested(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs> & value) const;
    using NewWindowRequested_revoker = event_revoker<IWebView4>;
    NewWindowRequested_revoker NewWindowRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewNewWindowRequestedEventArgs> & value) const;
    void NewWindowRequested(event_token token) const;
    event_token PermissionRequested(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs> & value) const;
    using PermissionRequested_revoker = event_revoker<IWebView4>;
    PermissionRequested_revoker PermissionRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::WebView, Windows::UI::Xaml::Controls::WebViewPermissionRequestedEventArgs> & value) const;
    void PermissionRequested(event_token token) const;
    void AddWebAllowedObject(hstring_ref name, const Windows::IInspectable & pObject) const;
    Windows::UI::Xaml::Controls::WebViewDeferredPermissionRequest DeferredPermissionRequestById(uint32_t id) const;
};

template <typename D>
struct WINRT_EBO impl_IWebView5
{
    Windows::UI::Xaml::DependencyObject XYFocusLeft() const;
    void XYFocusLeft(const Windows::UI::Xaml::DependencyObject & value) const;
    Windows::UI::Xaml::DependencyObject XYFocusRight() const;
    void XYFocusRight(const Windows::UI::Xaml::DependencyObject & value) const;
    Windows::UI::Xaml::DependencyObject XYFocusUp() const;
    void XYFocusUp(const Windows::UI::Xaml::DependencyObject & value) const;
    Windows::UI::Xaml::DependencyObject XYFocusDown() const;
    void XYFocusDown(const Windows::UI::Xaml::DependencyObject & value) const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewBrush
{
    hstring SourceName() const;
    void SourceName(hstring_ref value) const;
    void Redraw() const;
    void SetSource(const Windows::UI::Xaml::Controls::WebView & source) const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewBrushStatics
{
    Windows::UI::Xaml::DependencyProperty SourceNameProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewContentLoadingEventArgs
{
    Windows::Foundation::Uri Uri() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewDOMContentLoadedEventArgs
{
    Windows::Foundation::Uri Uri() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewDeferredPermissionRequest
{
    Windows::Foundation::Uri Uri() const;
    Windows::UI::Xaml::Controls::WebViewPermissionType PermissionType() const;
    uint32_t Id() const;
    void Allow() const;
    void Deny() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewFactory4
{
    Windows::UI::Xaml::Controls::WebView CreateInstanceWithExecutionMode(Windows::UI::Xaml::Controls::WebViewExecutionMode executionMode) const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewLongRunningScriptDetectedEventArgs
{
    Windows::Foundation::TimeSpan ExecutionTime() const;
    bool StopPageScriptExecution() const;
    void StopPageScriptExecution(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewNavigationCompletedEventArgs
{
    Windows::Foundation::Uri Uri() const;
    bool IsSuccess() const;
    Windows::Web::WebErrorStatus WebErrorStatus() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewNavigationFailedEventArgs
{
    Windows::Foundation::Uri Uri() const;
    Windows::Web::WebErrorStatus WebErrorStatus() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewNavigationStartingEventArgs
{
    Windows::Foundation::Uri Uri() const;
    bool Cancel() const;
    void Cancel(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewNewWindowRequestedEventArgs
{
    Windows::Foundation::Uri Uri() const;
    Windows::Foundation::Uri Referrer() const;
    bool Handled() const;
    void Handled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewPermissionRequest
{
    Windows::Foundation::Uri Uri() const;
    Windows::UI::Xaml::Controls::WebViewPermissionType PermissionType() const;
    uint32_t Id() const;
    Windows::UI::Xaml::Controls::WebViewPermissionState State() const;
    void Defer() const;
    void Allow() const;
    void Deny() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewPermissionRequestedEventArgs
{
    Windows::UI::Xaml::Controls::WebViewPermissionRequest PermissionRequest() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewSettings
{
    bool IsJavaScriptEnabled() const;
    void IsJavaScriptEnabled(bool value) const;
    bool IsIndexedDBEnabled() const;
    void IsIndexedDBEnabled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewStatics
{
    Windows::Foundation::Collections::IVector<Windows::Foundation::Uri> AnyScriptNotifyUri() const;
    Windows::UI::Xaml::DependencyProperty SourceProperty() const;
    Windows::UI::Xaml::DependencyProperty AllowedScriptNotifyUrisProperty() const;
    Windows::UI::Xaml::DependencyProperty DataTransferPackageProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewStatics2
{
    Windows::UI::Xaml::DependencyProperty CanGoBackProperty() const;
    Windows::UI::Xaml::DependencyProperty CanGoForwardProperty() const;
    Windows::UI::Xaml::DependencyProperty DocumentTitleProperty() const;
    Windows::UI::Xaml::DependencyProperty DefaultBackgroundColorProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewStatics3
{
    Windows::UI::Xaml::DependencyProperty ContainsFullScreenElementProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewStatics4
{
    Windows::UI::Xaml::Controls::WebViewExecutionMode DefaultExecutionMode() const;
    Windows::Foundation::IAsyncAction ClearTemporaryWebDataAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewStatics5
{
    Windows::UI::Xaml::DependencyProperty XYFocusLeftProperty() const;
    Windows::UI::Xaml::DependencyProperty XYFocusRightProperty() const;
    Windows::UI::Xaml::DependencyProperty XYFocusUpProperty() const;
    Windows::UI::Xaml::DependencyProperty XYFocusDownProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewUnsupportedUriSchemeIdentifiedEventArgs
{
    Windows::Foundation::Uri Uri() const;
    bool Handled() const;
    void Handled(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewUnviewableContentIdentifiedEventArgs
{
    Windows::Foundation::Uri Uri() const;
    Windows::Foundation::Uri Referrer() const;
};

template <typename D>
struct WINRT_EBO impl_IWebViewUnviewableContentIdentifiedEventArgs2
{
    hstring MediaType() const;
};

template <typename D>
struct WINRT_EBO impl_IWrapGrid
{
    double ItemWidth() const;
    void ItemWidth(double value) const;
    double ItemHeight() const;
    void ItemHeight(double value) const;
    Windows::UI::Xaml::Controls::Orientation Orientation() const;
    void Orientation(Windows::UI::Xaml::Controls::Orientation value) const;
    Windows::UI::Xaml::HorizontalAlignment HorizontalChildrenAlignment() const;
    void HorizontalChildrenAlignment(Windows::UI::Xaml::HorizontalAlignment value) const;
    Windows::UI::Xaml::VerticalAlignment VerticalChildrenAlignment() const;
    void VerticalChildrenAlignment(Windows::UI::Xaml::VerticalAlignment value) const;
    int32_t MaximumRowsOrColumns() const;
    void MaximumRowsOrColumns(int32_t value) const;
};

template <typename D>
struct WINRT_EBO impl_IWrapGridStatics
{
    Windows::UI::Xaml::DependencyProperty ItemWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty OrientationProperty() const;
    Windows::UI::Xaml::DependencyProperty HorizontalChildrenAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty VerticalChildrenAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty MaximumRowsOrColumnsProperty() const;
};

struct BackClickEventHandler : Windows::IUnknown
{
    BackClickEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<BackClickEventHandler>(m_ptr); }
    template <typename L> BackClickEventHandler(L lambda);
    template <typename F> BackClickEventHandler (F * function);
    template <typename O, typename M> BackClickEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::BackClickEventArgs & e) const;
};

struct CalendarViewDayItemChangingEventHandler : Windows::IUnknown
{
    CalendarViewDayItemChangingEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<CalendarViewDayItemChangingEventHandler>(m_ptr); }
    template <typename L> CalendarViewDayItemChangingEventHandler(L lambda);
    template <typename F> CalendarViewDayItemChangingEventHandler (F * function);
    template <typename O, typename M> CalendarViewDayItemChangingEventHandler(O * object, M method);
    void operator()(const Windows::UI::Xaml::Controls::CalendarView & sender, const Windows::UI::Xaml::Controls::CalendarViewDayItemChangingEventArgs & e) const;
};

struct CleanUpVirtualizedItemEventHandler : Windows::IUnknown
{
    CleanUpVirtualizedItemEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<CleanUpVirtualizedItemEventHandler>(m_ptr); }
    template <typename L> CleanUpVirtualizedItemEventHandler(L lambda);
    template <typename F> CleanUpVirtualizedItemEventHandler (F * function);
    template <typename O, typename M> CleanUpVirtualizedItemEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::CleanUpVirtualizedItemEventArgs & e) const;
};

struct ContextMenuOpeningEventHandler : Windows::IUnknown
{
    ContextMenuOpeningEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ContextMenuOpeningEventHandler>(m_ptr); }
    template <typename L> ContextMenuOpeningEventHandler(L lambda);
    template <typename F> ContextMenuOpeningEventHandler (F * function);
    template <typename O, typename M> ContextMenuOpeningEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::ContextMenuEventArgs & e) const;
};

struct DragItemsStartingEventHandler : Windows::IUnknown
{
    DragItemsStartingEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<DragItemsStartingEventHandler>(m_ptr); }
    template <typename L> DragItemsStartingEventHandler(L lambda);
    template <typename F> DragItemsStartingEventHandler (F * function);
    template <typename O, typename M> DragItemsStartingEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::DragItemsStartingEventArgs & e) const;
};

struct HubSectionHeaderClickEventHandler : Windows::IUnknown
{
    HubSectionHeaderClickEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<HubSectionHeaderClickEventHandler>(m_ptr); }
    template <typename L> HubSectionHeaderClickEventHandler(L lambda);
    template <typename F> HubSectionHeaderClickEventHandler (F * function);
    template <typename O, typename M> HubSectionHeaderClickEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::HubSectionHeaderClickEventArgs & e) const;
};

struct ItemClickEventHandler : Windows::IUnknown
{
    ItemClickEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ItemClickEventHandler>(m_ptr); }
    template <typename L> ItemClickEventHandler(L lambda);
    template <typename F> ItemClickEventHandler (F * function);
    template <typename O, typename M> ItemClickEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::ItemClickEventArgs & e) const;
};

struct ListViewItemToKeyHandler : Windows::IUnknown
{
    ListViewItemToKeyHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ListViewItemToKeyHandler>(m_ptr); }
    template <typename L> ListViewItemToKeyHandler(L lambda);
    template <typename F> ListViewItemToKeyHandler (F * function);
    template <typename O, typename M> ListViewItemToKeyHandler(O * object, M method);
    hstring operator()(const Windows::IInspectable & item) const;
};

struct ListViewKeyToItemHandler : Windows::IUnknown
{
    ListViewKeyToItemHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ListViewKeyToItemHandler>(m_ptr); }
    template <typename L> ListViewKeyToItemHandler(L lambda);
    template <typename F> ListViewKeyToItemHandler (F * function);
    template <typename O, typename M> ListViewKeyToItemHandler(O * object, M method);
    Windows::Foundation::IAsyncOperation<Windows::IInspectable> operator()(hstring_ref key) const;
};

struct NotifyEventHandler : Windows::IUnknown
{
    NotifyEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<NotifyEventHandler>(m_ptr); }
    template <typename L> NotifyEventHandler(L lambda);
    template <typename F> NotifyEventHandler (F * function);
    template <typename O, typename M> NotifyEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::NotifyEventArgs & e) const;
};

struct SectionsInViewChangedEventHandler : Windows::IUnknown
{
    SectionsInViewChangedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<SectionsInViewChangedEventHandler>(m_ptr); }
    template <typename L> SectionsInViewChangedEventHandler(L lambda);
    template <typename F> SectionsInViewChangedEventHandler (F * function);
    template <typename O, typename M> SectionsInViewChangedEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::SectionsInViewChangedEventArgs & e) const;
};

struct SelectionChangedEventHandler : Windows::IUnknown
{
    SelectionChangedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<SelectionChangedEventHandler>(m_ptr); }
    template <typename L> SelectionChangedEventHandler(L lambda);
    template <typename F> SelectionChangedEventHandler (F * function);
    template <typename O, typename M> SelectionChangedEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::SelectionChangedEventArgs & e) const;
};

struct SemanticZoomViewChangedEventHandler : Windows::IUnknown
{
    SemanticZoomViewChangedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<SemanticZoomViewChangedEventHandler>(m_ptr); }
    template <typename L> SemanticZoomViewChangedEventHandler(L lambda);
    template <typename F> SemanticZoomViewChangedEventHandler (F * function);
    template <typename O, typename M> SemanticZoomViewChangedEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::SemanticZoomViewChangedEventArgs & e) const;
};

struct TextChangedEventHandler : Windows::IUnknown
{
    TextChangedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<TextChangedEventHandler>(m_ptr); }
    template <typename L> TextChangedEventHandler(L lambda);
    template <typename F> TextChangedEventHandler (F * function);
    template <typename O, typename M> TextChangedEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::TextChangedEventArgs & e) const;
};

struct TextControlPasteEventHandler : Windows::IUnknown
{
    TextControlPasteEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<TextControlPasteEventHandler>(m_ptr); }
    template <typename L> TextControlPasteEventHandler(L lambda);
    template <typename F> TextControlPasteEventHandler (F * function);
    template <typename O, typename M> TextControlPasteEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::TextControlPasteEventArgs & e) const;
};

struct WebViewNavigationFailedEventHandler : Windows::IUnknown
{
    WebViewNavigationFailedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<WebViewNavigationFailedEventHandler>(m_ptr); }
    template <typename L> WebViewNavigationFailedEventHandler(L lambda);
    template <typename F> WebViewNavigationFailedEventHandler (F * function);
    template <typename O, typename M> WebViewNavigationFailedEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::WebViewNavigationFailedEventArgs & e) const;
};

struct IAppBar :
    Windows::IInspectable,
    impl::consume<IAppBar>
{
    IAppBar(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBar>(m_ptr); }
};

struct IAppBar2 :
    Windows::IInspectable,
    impl::consume<IAppBar2>
{
    IAppBar2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBar2>(m_ptr); }
};

struct IAppBar3 :
    Windows::IInspectable,
    impl::consume<IAppBar3>
{
    IAppBar3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBar3>(m_ptr); }
};

struct IAppBar4 :
    Windows::IInspectable,
    impl::consume<IAppBar4>
{
    IAppBar4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBar4>(m_ptr); }
};

struct IAppBarButton :
    Windows::IInspectable,
    impl::consume<IAppBarButton>
{
    IAppBarButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarButton>(m_ptr); }
};

struct IAppBarButton3 :
    Windows::IInspectable,
    impl::consume<IAppBarButton3>
{
    IAppBarButton3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarButton3>(m_ptr); }
};

struct IAppBarButtonFactory :
    Windows::IInspectable,
    impl::consume<IAppBarButtonFactory>
{
    IAppBarButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarButtonFactory>(m_ptr); }
};

struct IAppBarButtonStatics :
    Windows::IInspectable,
    impl::consume<IAppBarButtonStatics>
{
    IAppBarButtonStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarButtonStatics>(m_ptr); }
};

struct IAppBarButtonStatics3 :
    Windows::IInspectable,
    impl::consume<IAppBarButtonStatics3>
{
    IAppBarButtonStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarButtonStatics3>(m_ptr); }
};

struct IAppBarFactory :
    Windows::IInspectable,
    impl::consume<IAppBarFactory>
{
    IAppBarFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarFactory>(m_ptr); }
};

struct IAppBarOverrides :
    Windows::IInspectable,
    impl::consume<IAppBarOverrides>
{
    IAppBarOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarOverrides>(m_ptr); }
};

struct IAppBarOverrides3 :
    Windows::IInspectable,
    impl::consume<IAppBarOverrides3>
{
    IAppBarOverrides3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarOverrides3>(m_ptr); }
};

struct IAppBarSeparator :
    Windows::IInspectable,
    impl::consume<IAppBarSeparator>
{
    IAppBarSeparator(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarSeparator>(m_ptr); }
};

struct IAppBarSeparatorFactory :
    Windows::IInspectable,
    impl::consume<IAppBarSeparatorFactory>
{
    IAppBarSeparatorFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarSeparatorFactory>(m_ptr); }
};

struct IAppBarSeparatorStatics :
    Windows::IInspectable,
    impl::consume<IAppBarSeparatorStatics>
{
    IAppBarSeparatorStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarSeparatorStatics>(m_ptr); }
};

struct IAppBarSeparatorStatics3 :
    Windows::IInspectable,
    impl::consume<IAppBarSeparatorStatics3>
{
    IAppBarSeparatorStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarSeparatorStatics3>(m_ptr); }
};

struct IAppBarStatics :
    Windows::IInspectable,
    impl::consume<IAppBarStatics>
{
    IAppBarStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarStatics>(m_ptr); }
};

struct IAppBarStatics2 :
    Windows::IInspectable,
    impl::consume<IAppBarStatics2>
{
    IAppBarStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarStatics2>(m_ptr); }
};

struct IAppBarStatics4 :
    Windows::IInspectable,
    impl::consume<IAppBarStatics4>
{
    IAppBarStatics4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarStatics4>(m_ptr); }
};

struct IAppBarToggleButton :
    Windows::IInspectable,
    impl::consume<IAppBarToggleButton>
{
    IAppBarToggleButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarToggleButton>(m_ptr); }
};

struct IAppBarToggleButton3 :
    Windows::IInspectable,
    impl::consume<IAppBarToggleButton3>
{
    IAppBarToggleButton3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarToggleButton3>(m_ptr); }
};

struct IAppBarToggleButtonFactory :
    Windows::IInspectable,
    impl::consume<IAppBarToggleButtonFactory>
{
    IAppBarToggleButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarToggleButtonFactory>(m_ptr); }
};

struct IAppBarToggleButtonStatics :
    Windows::IInspectable,
    impl::consume<IAppBarToggleButtonStatics>
{
    IAppBarToggleButtonStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarToggleButtonStatics>(m_ptr); }
};

struct IAppBarToggleButtonStatics3 :
    Windows::IInspectable,
    impl::consume<IAppBarToggleButtonStatics3>
{
    IAppBarToggleButtonStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarToggleButtonStatics3>(m_ptr); }
};

struct IAutoSuggestBox :
    Windows::IInspectable,
    impl::consume<IAutoSuggestBox>
{
    IAutoSuggestBox(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAutoSuggestBox>(m_ptr); }
};

struct IAutoSuggestBox2 :
    Windows::IInspectable,
    impl::consume<IAutoSuggestBox2>
{
    IAutoSuggestBox2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAutoSuggestBox2>(m_ptr); }
};

struct IAutoSuggestBox3 :
    Windows::IInspectable,
    impl::consume<IAutoSuggestBox3>
{
    IAutoSuggestBox3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAutoSuggestBox3>(m_ptr); }
};

struct IAutoSuggestBoxQuerySubmittedEventArgs :
    Windows::IInspectable,
    impl::consume<IAutoSuggestBoxQuerySubmittedEventArgs>
{
    IAutoSuggestBoxQuerySubmittedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAutoSuggestBoxQuerySubmittedEventArgs>(m_ptr); }
};

struct IAutoSuggestBoxStatics :
    Windows::IInspectable,
    impl::consume<IAutoSuggestBoxStatics>
{
    IAutoSuggestBoxStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAutoSuggestBoxStatics>(m_ptr); }
};

struct IAutoSuggestBoxStatics2 :
    Windows::IInspectable,
    impl::consume<IAutoSuggestBoxStatics2>
{
    IAutoSuggestBoxStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAutoSuggestBoxStatics2>(m_ptr); }
};

struct IAutoSuggestBoxStatics3 :
    Windows::IInspectable,
    impl::consume<IAutoSuggestBoxStatics3>
{
    IAutoSuggestBoxStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAutoSuggestBoxStatics3>(m_ptr); }
};

struct IAutoSuggestBoxSuggestionChosenEventArgs :
    Windows::IInspectable,
    impl::consume<IAutoSuggestBoxSuggestionChosenEventArgs>
{
    IAutoSuggestBoxSuggestionChosenEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAutoSuggestBoxSuggestionChosenEventArgs>(m_ptr); }
};

struct IAutoSuggestBoxTextChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IAutoSuggestBoxTextChangedEventArgs>
{
    IAutoSuggestBoxTextChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAutoSuggestBoxTextChangedEventArgs>(m_ptr); }
};

struct IAutoSuggestBoxTextChangedEventArgsStatics :
    Windows::IInspectable,
    impl::consume<IAutoSuggestBoxTextChangedEventArgsStatics>
{
    IAutoSuggestBoxTextChangedEventArgsStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAutoSuggestBoxTextChangedEventArgsStatics>(m_ptr); }
};

struct IBackClickEventArgs :
    Windows::IInspectable,
    impl::consume<IBackClickEventArgs>
{
    IBackClickEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBackClickEventArgs>(m_ptr); }
};

struct IBitmapIcon :
    Windows::IInspectable,
    impl::consume<IBitmapIcon>
{
    IBitmapIcon(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBitmapIcon>(m_ptr); }
};

struct IBitmapIconFactory :
    Windows::IInspectable,
    impl::consume<IBitmapIconFactory>
{
    IBitmapIconFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBitmapIconFactory>(m_ptr); }
};

struct IBitmapIconStatics :
    Windows::IInspectable,
    impl::consume<IBitmapIconStatics>
{
    IBitmapIconStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBitmapIconStatics>(m_ptr); }
};

struct IBorder :
    Windows::IInspectable,
    impl::consume<IBorder>
{
    IBorder(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBorder>(m_ptr); }
};

struct IBorderStatics :
    Windows::IInspectable,
    impl::consume<IBorderStatics>
{
    IBorderStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IBorderStatics>(m_ptr); }
};

struct IButton :
    Windows::IInspectable,
    impl::consume<IButton>
{
    IButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IButton>(m_ptr); }
};

struct IButtonFactory :
    Windows::IInspectable,
    impl::consume<IButtonFactory>
{
    IButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IButtonFactory>(m_ptr); }
};

struct IButtonStaticsWithFlyout :
    Windows::IInspectable,
    impl::consume<IButtonStaticsWithFlyout>
{
    IButtonStaticsWithFlyout(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IButtonStaticsWithFlyout>(m_ptr); }
};

struct IButtonWithFlyout :
    Windows::IInspectable,
    impl::consume<IButtonWithFlyout>
{
    IButtonWithFlyout(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IButtonWithFlyout>(m_ptr); }
};

struct ICalendarDatePicker :
    Windows::IInspectable,
    impl::consume<ICalendarDatePicker>
{
    ICalendarDatePicker(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarDatePicker>(m_ptr); }
};

struct ICalendarDatePicker2 :
    Windows::IInspectable,
    impl::consume<ICalendarDatePicker2>
{
    ICalendarDatePicker2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarDatePicker2>(m_ptr); }
};

struct ICalendarDatePickerDateChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ICalendarDatePickerDateChangedEventArgs>
{
    ICalendarDatePickerDateChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarDatePickerDateChangedEventArgs>(m_ptr); }
};

struct ICalendarDatePickerFactory :
    Windows::IInspectable,
    impl::consume<ICalendarDatePickerFactory>
{
    ICalendarDatePickerFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarDatePickerFactory>(m_ptr); }
};

struct ICalendarDatePickerStatics :
    Windows::IInspectable,
    impl::consume<ICalendarDatePickerStatics>
{
    ICalendarDatePickerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarDatePickerStatics>(m_ptr); }
};

struct ICalendarDatePickerStatics2 :
    Windows::IInspectable,
    impl::consume<ICalendarDatePickerStatics2>
{
    ICalendarDatePickerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarDatePickerStatics2>(m_ptr); }
};

struct ICalendarView :
    Windows::IInspectable,
    impl::consume<ICalendarView>
{
    ICalendarView(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarView>(m_ptr); }
};

struct ICalendarViewDayItem :
    Windows::IInspectable,
    impl::consume<ICalendarViewDayItem>
{
    ICalendarViewDayItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarViewDayItem>(m_ptr); }
};

struct ICalendarViewDayItemChangingEventArgs :
    Windows::IInspectable,
    impl::consume<ICalendarViewDayItemChangingEventArgs>
{
    ICalendarViewDayItemChangingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarViewDayItemChangingEventArgs>(m_ptr); }
};

struct ICalendarViewDayItemFactory :
    Windows::IInspectable,
    impl::consume<ICalendarViewDayItemFactory>
{
    ICalendarViewDayItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarViewDayItemFactory>(m_ptr); }
};

struct ICalendarViewDayItemStatics :
    Windows::IInspectable,
    impl::consume<ICalendarViewDayItemStatics>
{
    ICalendarViewDayItemStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarViewDayItemStatics>(m_ptr); }
};

struct ICalendarViewFactory :
    Windows::IInspectable,
    impl::consume<ICalendarViewFactory>
{
    ICalendarViewFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarViewFactory>(m_ptr); }
};

struct ICalendarViewSelectedDatesChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ICalendarViewSelectedDatesChangedEventArgs>
{
    ICalendarViewSelectedDatesChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarViewSelectedDatesChangedEventArgs>(m_ptr); }
};

struct ICalendarViewStatics :
    Windows::IInspectable,
    impl::consume<ICalendarViewStatics>
{
    ICalendarViewStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarViewStatics>(m_ptr); }
};

struct ICandidateWindowBoundsChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ICandidateWindowBoundsChangedEventArgs>
{
    ICandidateWindowBoundsChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICandidateWindowBoundsChangedEventArgs>(m_ptr); }
};

struct ICanvas :
    Windows::IInspectable,
    impl::consume<ICanvas>
{
    ICanvas(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICanvas>(m_ptr); }
};

struct ICanvasFactory :
    Windows::IInspectable,
    impl::consume<ICanvasFactory>
{
    ICanvasFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICanvasFactory>(m_ptr); }
};

struct ICanvasStatics :
    Windows::IInspectable,
    impl::consume<ICanvasStatics>
{
    ICanvasStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICanvasStatics>(m_ptr); }
};

struct ICaptureElement :
    Windows::IInspectable,
    impl::consume<ICaptureElement>
{
    ICaptureElement(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICaptureElement>(m_ptr); }
};

struct ICaptureElementStatics :
    Windows::IInspectable,
    impl::consume<ICaptureElementStatics>
{
    ICaptureElementStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICaptureElementStatics>(m_ptr); }
};

struct ICheckBox :
    Windows::IInspectable,
    impl::consume<ICheckBox>
{
    ICheckBox(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICheckBox>(m_ptr); }
};

struct ICheckBoxFactory :
    Windows::IInspectable,
    impl::consume<ICheckBoxFactory>
{
    ICheckBoxFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICheckBoxFactory>(m_ptr); }
};

struct IChoosingGroupHeaderContainerEventArgs :
    Windows::IInspectable,
    impl::consume<IChoosingGroupHeaderContainerEventArgs>
{
    IChoosingGroupHeaderContainerEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IChoosingGroupHeaderContainerEventArgs>(m_ptr); }
};

struct IChoosingItemContainerEventArgs :
    Windows::IInspectable,
    impl::consume<IChoosingItemContainerEventArgs>
{
    IChoosingItemContainerEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IChoosingItemContainerEventArgs>(m_ptr); }
};

struct ICleanUpVirtualizedItemEventArgs :
    Windows::IInspectable,
    impl::consume<ICleanUpVirtualizedItemEventArgs>
{
    ICleanUpVirtualizedItemEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICleanUpVirtualizedItemEventArgs>(m_ptr); }
};

struct IColumnDefinition :
    Windows::IInspectable,
    impl::consume<IColumnDefinition>
{
    IColumnDefinition(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IColumnDefinition>(m_ptr); }
};

struct IColumnDefinitionStatics :
    Windows::IInspectable,
    impl::consume<IColumnDefinitionStatics>
{
    IColumnDefinitionStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IColumnDefinitionStatics>(m_ptr); }
};

struct IComboBox :
    Windows::IInspectable,
    impl::consume<IComboBox>
{
    IComboBox(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBox>(m_ptr); }
};

struct IComboBox2 :
    Windows::IInspectable,
    impl::consume<IComboBox2>
{
    IComboBox2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBox2>(m_ptr); }
};

struct IComboBox3 :
    Windows::IInspectable,
    impl::consume<IComboBox3>
{
    IComboBox3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBox3>(m_ptr); }
};

struct IComboBoxFactory :
    Windows::IInspectable,
    impl::consume<IComboBoxFactory>
{
    IComboBoxFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBoxFactory>(m_ptr); }
};

struct IComboBoxItem :
    Windows::IInspectable,
    impl::consume<IComboBoxItem>
{
    IComboBoxItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBoxItem>(m_ptr); }
};

struct IComboBoxItemFactory :
    Windows::IInspectable,
    impl::consume<IComboBoxItemFactory>
{
    IComboBoxItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBoxItemFactory>(m_ptr); }
};

struct IComboBoxOverrides :
    Windows::IInspectable,
    impl::consume<IComboBoxOverrides>
{
    IComboBoxOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBoxOverrides>(m_ptr); }
};

struct IComboBoxStatics :
    Windows::IInspectable,
    impl::consume<IComboBoxStatics>
{
    IComboBoxStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBoxStatics>(m_ptr); }
};

struct IComboBoxStatics2 :
    Windows::IInspectable,
    impl::consume<IComboBoxStatics2>
{
    IComboBoxStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBoxStatics2>(m_ptr); }
};

struct IComboBoxStatics3 :
    Windows::IInspectable,
    impl::consume<IComboBoxStatics3>
{
    IComboBoxStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBoxStatics3>(m_ptr); }
};

struct ICommandBar :
    Windows::IInspectable,
    impl::consume<ICommandBar>
{
    ICommandBar(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBar>(m_ptr); }
};

struct ICommandBar2 :
    Windows::IInspectable,
    impl::consume<ICommandBar2>
{
    ICommandBar2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBar2>(m_ptr); }
};

struct ICommandBar3 :
    Windows::IInspectable,
    impl::consume<ICommandBar3>
{
    ICommandBar3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBar3>(m_ptr); }
};

struct ICommandBarElement :
    Windows::IInspectable,
    impl::consume<ICommandBarElement>
{
    ICommandBarElement(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBarElement>(m_ptr); }
};

struct ICommandBarElement2 :
    Windows::IInspectable,
    impl::consume<ICommandBarElement2>
{
    ICommandBarElement2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBarElement2>(m_ptr); }
};

struct ICommandBarFactory :
    Windows::IInspectable,
    impl::consume<ICommandBarFactory>
{
    ICommandBarFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBarFactory>(m_ptr); }
};

struct ICommandBarOverflowPresenter :
    Windows::IInspectable,
    impl::consume<ICommandBarOverflowPresenter>
{
    ICommandBarOverflowPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBarOverflowPresenter>(m_ptr); }
};

struct ICommandBarOverflowPresenterFactory :
    Windows::IInspectable,
    impl::consume<ICommandBarOverflowPresenterFactory>
{
    ICommandBarOverflowPresenterFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBarOverflowPresenterFactory>(m_ptr); }
};

struct ICommandBarStatics :
    Windows::IInspectable,
    impl::consume<ICommandBarStatics>
{
    ICommandBarStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBarStatics>(m_ptr); }
};

struct ICommandBarStatics2 :
    Windows::IInspectable,
    impl::consume<ICommandBarStatics2>
{
    ICommandBarStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBarStatics2>(m_ptr); }
};

struct ICommandBarStatics3 :
    Windows::IInspectable,
    impl::consume<ICommandBarStatics3>
{
    ICommandBarStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBarStatics3>(m_ptr); }
};

struct IContainerContentChangingEventArgs :
    Windows::IInspectable,
    impl::consume<IContainerContentChangingEventArgs>
{
    IContainerContentChangingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContainerContentChangingEventArgs>(m_ptr); }
};

struct IContentControl :
    Windows::IInspectable,
    impl::consume<IContentControl>
{
    IContentControl(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentControl>(m_ptr); }
};

struct IContentControl2 :
    Windows::IInspectable,
    impl::consume<IContentControl2>
{
    IContentControl2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentControl2>(m_ptr); }
};

struct IContentControlFactory :
    Windows::IInspectable,
    impl::consume<IContentControlFactory>
{
    IContentControlFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentControlFactory>(m_ptr); }
};

struct IContentControlOverrides :
    Windows::IInspectable,
    impl::consume<IContentControlOverrides>
{
    IContentControlOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentControlOverrides>(m_ptr); }
};

struct IContentControlStatics :
    Windows::IInspectable,
    impl::consume<IContentControlStatics>
{
    IContentControlStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentControlStatics>(m_ptr); }
};

struct IContentDialog :
    Windows::IInspectable,
    impl::consume<IContentDialog>
{
    IContentDialog(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentDialog>(m_ptr); }
};

struct IContentDialogButtonClickDeferral :
    Windows::IInspectable,
    impl::consume<IContentDialogButtonClickDeferral>
{
    IContentDialogButtonClickDeferral(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentDialogButtonClickDeferral>(m_ptr); }
};

struct IContentDialogButtonClickEventArgs :
    Windows::IInspectable,
    impl::consume<IContentDialogButtonClickEventArgs>
{
    IContentDialogButtonClickEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentDialogButtonClickEventArgs>(m_ptr); }
};

struct IContentDialogClosedEventArgs :
    Windows::IInspectable,
    impl::consume<IContentDialogClosedEventArgs>
{
    IContentDialogClosedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentDialogClosedEventArgs>(m_ptr); }
};

struct IContentDialogClosingDeferral :
    Windows::IInspectable,
    impl::consume<IContentDialogClosingDeferral>
{
    IContentDialogClosingDeferral(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentDialogClosingDeferral>(m_ptr); }
};

struct IContentDialogClosingEventArgs :
    Windows::IInspectable,
    impl::consume<IContentDialogClosingEventArgs>
{
    IContentDialogClosingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentDialogClosingEventArgs>(m_ptr); }
};

struct IContentDialogFactory :
    Windows::IInspectable,
    impl::consume<IContentDialogFactory>
{
    IContentDialogFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentDialogFactory>(m_ptr); }
};

struct IContentDialogOpenedEventArgs :
    Windows::IInspectable,
    impl::consume<IContentDialogOpenedEventArgs>
{
    IContentDialogOpenedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentDialogOpenedEventArgs>(m_ptr); }
};

struct IContentDialogStatics :
    Windows::IInspectable,
    impl::consume<IContentDialogStatics>
{
    IContentDialogStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentDialogStatics>(m_ptr); }
};

struct IContentPresenter :
    Windows::IInspectable,
    impl::consume<IContentPresenter>
{
    IContentPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentPresenter>(m_ptr); }
};

struct IContentPresenter2 :
    Windows::IInspectable,
    impl::consume<IContentPresenter2>
{
    IContentPresenter2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentPresenter2>(m_ptr); }
};

struct IContentPresenter3 :
    Windows::IInspectable,
    impl::consume<IContentPresenter3>
{
    IContentPresenter3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentPresenter3>(m_ptr); }
};

struct IContentPresenter4 :
    Windows::IInspectable,
    impl::consume<IContentPresenter4>
{
    IContentPresenter4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentPresenter4>(m_ptr); }
};

struct IContentPresenterFactory :
    Windows::IInspectable,
    impl::consume<IContentPresenterFactory>
{
    IContentPresenterFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentPresenterFactory>(m_ptr); }
};

struct IContentPresenterOverrides :
    Windows::IInspectable,
    impl::consume<IContentPresenterOverrides>
{
    IContentPresenterOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentPresenterOverrides>(m_ptr); }
};

struct IContentPresenterStatics :
    Windows::IInspectable,
    impl::consume<IContentPresenterStatics>
{
    IContentPresenterStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentPresenterStatics>(m_ptr); }
};

struct IContentPresenterStatics2 :
    Windows::IInspectable,
    impl::consume<IContentPresenterStatics2>
{
    IContentPresenterStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentPresenterStatics2>(m_ptr); }
};

struct IContentPresenterStatics3 :
    Windows::IInspectable,
    impl::consume<IContentPresenterStatics3>
{
    IContentPresenterStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentPresenterStatics3>(m_ptr); }
};

struct IContentPresenterStatics4 :
    Windows::IInspectable,
    impl::consume<IContentPresenterStatics4>
{
    IContentPresenterStatics4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContentPresenterStatics4>(m_ptr); }
};

struct IContextMenuEventArgs :
    Windows::IInspectable,
    impl::consume<IContextMenuEventArgs>
{
    IContextMenuEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IContextMenuEventArgs>(m_ptr); }
};

struct IControl :
    Windows::IInspectable,
    impl::consume<IControl>
{
    IControl(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControl>(m_ptr); }
};

struct IControl2 :
    Windows::IInspectable,
    impl::consume<IControl2>
{
    IControl2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControl2>(m_ptr); }
};

struct IControl3 :
    Windows::IInspectable,
    impl::consume<IControl3>
{
    IControl3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControl3>(m_ptr); }
};

struct IControl4 :
    Windows::IInspectable,
    impl::consume<IControl4>
{
    IControl4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControl4>(m_ptr); }
};

struct IControlFactory :
    Windows::IInspectable,
    impl::consume<IControlFactory>
{
    IControlFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControlFactory>(m_ptr); }
};

struct IControlOverrides :
    Windows::IInspectable,
    impl::consume<IControlOverrides>
{
    IControlOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControlOverrides>(m_ptr); }
};

struct IControlProtected :
    Windows::IInspectable,
    impl::consume<IControlProtected>
{
    IControlProtected(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControlProtected>(m_ptr); }
};

struct IControlStatics :
    Windows::IInspectable,
    impl::consume<IControlStatics>
{
    IControlStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControlStatics>(m_ptr); }
};

struct IControlStatics2 :
    Windows::IInspectable,
    impl::consume<IControlStatics2>
{
    IControlStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControlStatics2>(m_ptr); }
};

struct IControlStatics3 :
    Windows::IInspectable,
    impl::consume<IControlStatics3>
{
    IControlStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControlStatics3>(m_ptr); }
};

struct IControlStatics4 :
    Windows::IInspectable,
    impl::consume<IControlStatics4>
{
    IControlStatics4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControlStatics4>(m_ptr); }
};

struct IControlTemplate :
    Windows::IInspectable,
    impl::consume<IControlTemplate>
{
    IControlTemplate(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IControlTemplate>(m_ptr); }
};

struct IDataTemplateSelector :
    Windows::IInspectable,
    impl::consume<IDataTemplateSelector>
{
    IDataTemplateSelector(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDataTemplateSelector>(m_ptr); }
};

struct IDataTemplateSelector2 :
    Windows::IInspectable,
    impl::consume<IDataTemplateSelector2>
{
    IDataTemplateSelector2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDataTemplateSelector2>(m_ptr); }
};

struct IDataTemplateSelectorFactory :
    Windows::IInspectable,
    impl::consume<IDataTemplateSelectorFactory>
{
    IDataTemplateSelectorFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDataTemplateSelectorFactory>(m_ptr); }
};

struct IDataTemplateSelectorOverrides :
    Windows::IInspectable,
    impl::consume<IDataTemplateSelectorOverrides>
{
    IDataTemplateSelectorOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDataTemplateSelectorOverrides>(m_ptr); }
};

struct IDataTemplateSelectorOverrides2 :
    Windows::IInspectable,
    impl::consume<IDataTemplateSelectorOverrides2>
{
    IDataTemplateSelectorOverrides2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDataTemplateSelectorOverrides2>(m_ptr); }
};

struct IDatePickedEventArgs :
    Windows::IInspectable,
    impl::consume<IDatePickedEventArgs>
{
    IDatePickedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickedEventArgs>(m_ptr); }
};

struct IDatePicker :
    Windows::IInspectable,
    impl::consume<IDatePicker>
{
    IDatePicker(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePicker>(m_ptr); }
};

struct IDatePicker2 :
    Windows::IInspectable,
    impl::consume<IDatePicker2>
{
    IDatePicker2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePicker2>(m_ptr); }
};

struct IDatePickerFactory :
    Windows::IInspectable,
    impl::consume<IDatePickerFactory>
{
    IDatePickerFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickerFactory>(m_ptr); }
};

struct IDatePickerFlyout :
    Windows::IInspectable,
    impl::consume<IDatePickerFlyout>
{
    IDatePickerFlyout(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickerFlyout>(m_ptr); }
};

struct IDatePickerFlyout2 :
    Windows::IInspectable,
    impl::consume<IDatePickerFlyout2>
{
    IDatePickerFlyout2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickerFlyout2>(m_ptr); }
};

struct IDatePickerFlyoutItem :
    Windows::IInspectable,
    impl::consume<IDatePickerFlyoutItem>
{
    IDatePickerFlyoutItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickerFlyoutItem>(m_ptr); }
};

struct IDatePickerFlyoutItemStatics :
    Windows::IInspectable,
    impl::consume<IDatePickerFlyoutItemStatics>
{
    IDatePickerFlyoutItemStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickerFlyoutItemStatics>(m_ptr); }
};

struct IDatePickerFlyoutPresenter :
    Windows::IInspectable,
    impl::consume<IDatePickerFlyoutPresenter>
{
    IDatePickerFlyoutPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickerFlyoutPresenter>(m_ptr); }
};

struct IDatePickerFlyoutStatics :
    Windows::IInspectable,
    impl::consume<IDatePickerFlyoutStatics>
{
    IDatePickerFlyoutStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickerFlyoutStatics>(m_ptr); }
};

struct IDatePickerFlyoutStatics2 :
    Windows::IInspectable,
    impl::consume<IDatePickerFlyoutStatics2>
{
    IDatePickerFlyoutStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickerFlyoutStatics2>(m_ptr); }
};

struct IDatePickerStatics :
    Windows::IInspectable,
    impl::consume<IDatePickerStatics>
{
    IDatePickerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickerStatics>(m_ptr); }
};

struct IDatePickerStatics2 :
    Windows::IInspectable,
    impl::consume<IDatePickerStatics2>
{
    IDatePickerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickerStatics2>(m_ptr); }
};

struct IDatePickerValueChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IDatePickerValueChangedEventArgs>
{
    IDatePickerValueChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDatePickerValueChangedEventArgs>(m_ptr); }
};

struct IDragItemsCompletedEventArgs :
    Windows::IInspectable,
    impl::consume<IDragItemsCompletedEventArgs>
{
    IDragItemsCompletedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDragItemsCompletedEventArgs>(m_ptr); }
};

struct IDragItemsStartingEventArgs :
    Windows::IInspectable,
    impl::consume<IDragItemsStartingEventArgs>
{
    IDragItemsStartingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDragItemsStartingEventArgs>(m_ptr); }
};

struct IDynamicOverflowItemsChangingEventArgs :
    Windows::IInspectable,
    impl::consume<IDynamicOverflowItemsChangingEventArgs>
{
    IDynamicOverflowItemsChangingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDynamicOverflowItemsChangingEventArgs>(m_ptr); }
};

struct IFlipView :
    Windows::IInspectable,
    impl::consume<IFlipView>
{
    IFlipView(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlipView>(m_ptr); }
};

struct IFlipView2 :
    Windows::IInspectable,
    impl::consume<IFlipView2>
{
    IFlipView2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlipView2>(m_ptr); }
};

struct IFlipViewFactory :
    Windows::IInspectable,
    impl::consume<IFlipViewFactory>
{
    IFlipViewFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlipViewFactory>(m_ptr); }
};

struct IFlipViewItem :
    Windows::IInspectable,
    impl::consume<IFlipViewItem>
{
    IFlipViewItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlipViewItem>(m_ptr); }
};

struct IFlipViewItemFactory :
    Windows::IInspectable,
    impl::consume<IFlipViewItemFactory>
{
    IFlipViewItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlipViewItemFactory>(m_ptr); }
};

struct IFlipViewStatics2 :
    Windows::IInspectable,
    impl::consume<IFlipViewStatics2>
{
    IFlipViewStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlipViewStatics2>(m_ptr); }
};

struct IFlyout :
    Windows::IInspectable,
    impl::consume<IFlyout>
{
    IFlyout(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyout>(m_ptr); }
};

struct IFlyoutFactory :
    Windows::IInspectable,
    impl::consume<IFlyoutFactory>
{
    IFlyoutFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyoutFactory>(m_ptr); }
};

struct IFlyoutPresenter :
    Windows::IInspectable,
    impl::consume<IFlyoutPresenter>
{
    IFlyoutPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyoutPresenter>(m_ptr); }
};

struct IFlyoutPresenterFactory :
    Windows::IInspectable,
    impl::consume<IFlyoutPresenterFactory>
{
    IFlyoutPresenterFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyoutPresenterFactory>(m_ptr); }
};

struct IFlyoutStatics :
    Windows::IInspectable,
    impl::consume<IFlyoutStatics>
{
    IFlyoutStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyoutStatics>(m_ptr); }
};

struct IFocusDisengagedEventArgs :
    Windows::IInspectable,
    impl::consume<IFocusDisengagedEventArgs>
{
    IFocusDisengagedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFocusDisengagedEventArgs>(m_ptr); }
};

struct IFocusEngagedEventArgs :
    Windows::IInspectable,
    impl::consume<IFocusEngagedEventArgs>
{
    IFocusEngagedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFocusEngagedEventArgs>(m_ptr); }
};

struct IFontIcon :
    Windows::IInspectable,
    impl::consume<IFontIcon>
{
    IFontIcon(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFontIcon>(m_ptr); }
};

struct IFontIcon2 :
    Windows::IInspectable,
    impl::consume<IFontIcon2>
{
    IFontIcon2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFontIcon2>(m_ptr); }
};

struct IFontIcon3 :
    Windows::IInspectable,
    impl::consume<IFontIcon3>
{
    IFontIcon3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFontIcon3>(m_ptr); }
};

struct IFontIconFactory :
    Windows::IInspectable,
    impl::consume<IFontIconFactory>
{
    IFontIconFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFontIconFactory>(m_ptr); }
};

struct IFontIconStatics :
    Windows::IInspectable,
    impl::consume<IFontIconStatics>
{
    IFontIconStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFontIconStatics>(m_ptr); }
};

struct IFontIconStatics2 :
    Windows::IInspectable,
    impl::consume<IFontIconStatics2>
{
    IFontIconStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFontIconStatics2>(m_ptr); }
};

struct IFontIconStatics3 :
    Windows::IInspectable,
    impl::consume<IFontIconStatics3>
{
    IFontIconStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFontIconStatics3>(m_ptr); }
};

struct IFrame :
    Windows::IInspectable,
    impl::consume<IFrame>
{
    IFrame(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFrame>(m_ptr); }
};

struct IFrame2 :
    Windows::IInspectable,
    impl::consume<IFrame2>
{
    IFrame2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFrame2>(m_ptr); }
};

struct IFrame3 :
    Windows::IInspectable,
    impl::consume<IFrame3>
{
    IFrame3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFrame3>(m_ptr); }
};

struct IFrameFactory :
    Windows::IInspectable,
    impl::consume<IFrameFactory>
{
    IFrameFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFrameFactory>(m_ptr); }
};

struct IFrameStatics :
    Windows::IInspectable,
    impl::consume<IFrameStatics>
{
    IFrameStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFrameStatics>(m_ptr); }
};

struct IFrameStatics2 :
    Windows::IInspectable,
    impl::consume<IFrameStatics2>
{
    IFrameStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFrameStatics2>(m_ptr); }
};

struct IGrid :
    Windows::IInspectable,
    impl::consume<IGrid>
{
    IGrid(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGrid>(m_ptr); }
};

struct IGrid2 :
    Windows::IInspectable,
    impl::consume<IGrid2>
{
    IGrid2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGrid2>(m_ptr); }
};

struct IGridFactory :
    Windows::IInspectable,
    impl::consume<IGridFactory>
{
    IGridFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridFactory>(m_ptr); }
};

struct IGridStatics :
    Windows::IInspectable,
    impl::consume<IGridStatics>
{
    IGridStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridStatics>(m_ptr); }
};

struct IGridStatics2 :
    Windows::IInspectable,
    impl::consume<IGridStatics2>
{
    IGridStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridStatics2>(m_ptr); }
};

struct IGridView :
    Windows::IInspectable,
    impl::consume<IGridView>
{
    IGridView(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridView>(m_ptr); }
};

struct IGridViewFactory :
    Windows::IInspectable,
    impl::consume<IGridViewFactory>
{
    IGridViewFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridViewFactory>(m_ptr); }
};

struct IGridViewHeaderItem :
    Windows::IInspectable,
    impl::consume<IGridViewHeaderItem>
{
    IGridViewHeaderItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridViewHeaderItem>(m_ptr); }
};

struct IGridViewHeaderItemFactory :
    Windows::IInspectable,
    impl::consume<IGridViewHeaderItemFactory>
{
    IGridViewHeaderItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridViewHeaderItemFactory>(m_ptr); }
};

struct IGridViewItem :
    Windows::IInspectable,
    impl::consume<IGridViewItem>
{
    IGridViewItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridViewItem>(m_ptr); }
};

struct IGridViewItemFactory :
    Windows::IInspectable,
    impl::consume<IGridViewItemFactory>
{
    IGridViewItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridViewItemFactory>(m_ptr); }
};

struct IGroupItem :
    Windows::IInspectable,
    impl::consume<IGroupItem>
{
    IGroupItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGroupItem>(m_ptr); }
};

struct IGroupItemFactory :
    Windows::IInspectable,
    impl::consume<IGroupItemFactory>
{
    IGroupItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGroupItemFactory>(m_ptr); }
};

struct IGroupStyle :
    Windows::IInspectable,
    impl::consume<IGroupStyle>
{
    IGroupStyle(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGroupStyle>(m_ptr); }
};

struct IGroupStyle2 :
    Windows::IInspectable,
    impl::consume<IGroupStyle2>
{
    IGroupStyle2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGroupStyle2>(m_ptr); }
};

struct IGroupStyleFactory :
    Windows::IInspectable,
    impl::consume<IGroupStyleFactory>
{
    IGroupStyleFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGroupStyleFactory>(m_ptr); }
};

struct IGroupStyleSelector :
    Windows::IInspectable,
    impl::consume<IGroupStyleSelector>
{
    IGroupStyleSelector(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGroupStyleSelector>(m_ptr); }
};

struct IGroupStyleSelectorFactory :
    Windows::IInspectable,
    impl::consume<IGroupStyleSelectorFactory>
{
    IGroupStyleSelectorFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGroupStyleSelectorFactory>(m_ptr); }
};

struct IGroupStyleSelectorOverrides :
    Windows::IInspectable,
    impl::consume<IGroupStyleSelectorOverrides>
{
    IGroupStyleSelectorOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGroupStyleSelectorOverrides>(m_ptr); }
};

struct IHub :
    Windows::IInspectable,
    impl::consume<IHub>
{
    IHub(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHub>(m_ptr); }
};

struct IHubFactory :
    Windows::IInspectable,
    impl::consume<IHubFactory>
{
    IHubFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHubFactory>(m_ptr); }
};

struct IHubSection :
    Windows::IInspectable,
    impl::consume<IHubSection>
{
    IHubSection(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHubSection>(m_ptr); }
};

struct IHubSectionFactory :
    Windows::IInspectable,
    impl::consume<IHubSectionFactory>
{
    IHubSectionFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHubSectionFactory>(m_ptr); }
};

struct IHubSectionHeaderClickEventArgs :
    Windows::IInspectable,
    impl::consume<IHubSectionHeaderClickEventArgs>
{
    IHubSectionHeaderClickEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHubSectionHeaderClickEventArgs>(m_ptr); }
};

struct IHubSectionStatics :
    Windows::IInspectable,
    impl::consume<IHubSectionStatics>
{
    IHubSectionStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHubSectionStatics>(m_ptr); }
};

struct IHubStatics :
    Windows::IInspectable,
    impl::consume<IHubStatics>
{
    IHubStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHubStatics>(m_ptr); }
};

struct IHyperlinkButton :
    Windows::IInspectable,
    impl::consume<IHyperlinkButton>
{
    IHyperlinkButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHyperlinkButton>(m_ptr); }
};

struct IHyperlinkButtonFactory :
    Windows::IInspectable,
    impl::consume<IHyperlinkButtonFactory>
{
    IHyperlinkButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHyperlinkButtonFactory>(m_ptr); }
};

struct IHyperlinkButtonStatics :
    Windows::IInspectable,
    impl::consume<IHyperlinkButtonStatics>
{
    IHyperlinkButtonStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHyperlinkButtonStatics>(m_ptr); }
};

struct IIconElement :
    Windows::IInspectable,
    impl::consume<IIconElement>
{
    IIconElement(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IIconElement>(m_ptr); }
};

struct IIconElementFactory :
    Windows::IInspectable,
    impl::consume<IIconElementFactory>
{
    IIconElementFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IIconElementFactory>(m_ptr); }
};

struct IIconElementStatics :
    Windows::IInspectable,
    impl::consume<IIconElementStatics>
{
    IIconElementStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IIconElementStatics>(m_ptr); }
};

struct IImage :
    Windows::IInspectable,
    impl::consume<IImage>
{
    IImage(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IImage>(m_ptr); }
};

struct IImage2 :
    Windows::IInspectable,
    impl::consume<IImage2>
{
    IImage2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IImage2>(m_ptr); }
};

struct IImage3 :
    Windows::IInspectable,
    impl::consume<IImage3>
{
    IImage3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IImage3>(m_ptr); }
};

struct IImageStatics :
    Windows::IInspectable,
    impl::consume<IImageStatics>
{
    IImageStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IImageStatics>(m_ptr); }
};

struct IInkCanvas :
    Windows::IInspectable,
    impl::consume<IInkCanvas>
{
    IInkCanvas(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkCanvas>(m_ptr); }
};

struct IInkCanvasFactory :
    Windows::IInspectable,
    impl::consume<IInkCanvasFactory>
{
    IInkCanvasFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkCanvasFactory>(m_ptr); }
};

struct IInkToolbar :
    Windows::IInspectable,
    impl::consume<IInkToolbar>
{
    IInkToolbar(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbar>(m_ptr); }
};

struct IInkToolbarBallpointPenButton :
    Windows::IInspectable,
    impl::consume<IInkToolbarBallpointPenButton>
{
    IInkToolbarBallpointPenButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarBallpointPenButton>(m_ptr); }
};

struct IInkToolbarBallpointPenButtonFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarBallpointPenButtonFactory>
{
    IInkToolbarBallpointPenButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarBallpointPenButtonFactory>(m_ptr); }
};

struct IInkToolbarCustomPen :
    Windows::IInspectable,
    impl::consume<IInkToolbarCustomPen>
{
    IInkToolbarCustomPen(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarCustomPen>(m_ptr); }
};

struct IInkToolbarCustomPenButton :
    Windows::IInspectable,
    impl::consume<IInkToolbarCustomPenButton>
{
    IInkToolbarCustomPenButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarCustomPenButton>(m_ptr); }
};

struct IInkToolbarCustomPenButtonFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarCustomPenButtonFactory>
{
    IInkToolbarCustomPenButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarCustomPenButtonFactory>(m_ptr); }
};

struct IInkToolbarCustomPenButtonStatics :
    Windows::IInspectable,
    impl::consume<IInkToolbarCustomPenButtonStatics>
{
    IInkToolbarCustomPenButtonStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarCustomPenButtonStatics>(m_ptr); }
};

struct IInkToolbarCustomPenFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarCustomPenFactory>
{
    IInkToolbarCustomPenFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarCustomPenFactory>(m_ptr); }
};

struct IInkToolbarCustomPenOverrides :
    Windows::IInspectable,
    impl::consume<IInkToolbarCustomPenOverrides>
{
    IInkToolbarCustomPenOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarCustomPenOverrides>(m_ptr); }
};

struct IInkToolbarCustomToggleButton :
    Windows::IInspectable,
    impl::consume<IInkToolbarCustomToggleButton>
{
    IInkToolbarCustomToggleButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarCustomToggleButton>(m_ptr); }
};

struct IInkToolbarCustomToggleButtonFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarCustomToggleButtonFactory>
{
    IInkToolbarCustomToggleButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarCustomToggleButtonFactory>(m_ptr); }
};

struct IInkToolbarCustomToolButton :
    Windows::IInspectable,
    impl::consume<IInkToolbarCustomToolButton>
{
    IInkToolbarCustomToolButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarCustomToolButton>(m_ptr); }
};

struct IInkToolbarCustomToolButtonFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarCustomToolButtonFactory>
{
    IInkToolbarCustomToolButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarCustomToolButtonFactory>(m_ptr); }
};

struct IInkToolbarCustomToolButtonStatics :
    Windows::IInspectable,
    impl::consume<IInkToolbarCustomToolButtonStatics>
{
    IInkToolbarCustomToolButtonStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarCustomToolButtonStatics>(m_ptr); }
};

struct IInkToolbarEraserButton :
    Windows::IInspectable,
    impl::consume<IInkToolbarEraserButton>
{
    IInkToolbarEraserButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarEraserButton>(m_ptr); }
};

struct IInkToolbarEraserButtonFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarEraserButtonFactory>
{
    IInkToolbarEraserButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarEraserButtonFactory>(m_ptr); }
};

struct IInkToolbarFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarFactory>
{
    IInkToolbarFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarFactory>(m_ptr); }
};

struct IInkToolbarHighlighterButton :
    Windows::IInspectable,
    impl::consume<IInkToolbarHighlighterButton>
{
    IInkToolbarHighlighterButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarHighlighterButton>(m_ptr); }
};

struct IInkToolbarHighlighterButtonFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarHighlighterButtonFactory>
{
    IInkToolbarHighlighterButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarHighlighterButtonFactory>(m_ptr); }
};

struct IInkToolbarPenButton :
    Windows::IInspectable,
    impl::consume<IInkToolbarPenButton>
{
    IInkToolbarPenButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarPenButton>(m_ptr); }
};

struct IInkToolbarPenButtonFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarPenButtonFactory>
{
    IInkToolbarPenButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarPenButtonFactory>(m_ptr); }
};

struct IInkToolbarPenButtonStatics :
    Windows::IInspectable,
    impl::consume<IInkToolbarPenButtonStatics>
{
    IInkToolbarPenButtonStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarPenButtonStatics>(m_ptr); }
};

struct IInkToolbarPenConfigurationControl :
    Windows::IInspectable,
    impl::consume<IInkToolbarPenConfigurationControl>
{
    IInkToolbarPenConfigurationControl(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarPenConfigurationControl>(m_ptr); }
};

struct IInkToolbarPenConfigurationControlFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarPenConfigurationControlFactory>
{
    IInkToolbarPenConfigurationControlFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarPenConfigurationControlFactory>(m_ptr); }
};

struct IInkToolbarPenConfigurationControlStatics :
    Windows::IInspectable,
    impl::consume<IInkToolbarPenConfigurationControlStatics>
{
    IInkToolbarPenConfigurationControlStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarPenConfigurationControlStatics>(m_ptr); }
};

struct IInkToolbarPencilButton :
    Windows::IInspectable,
    impl::consume<IInkToolbarPencilButton>
{
    IInkToolbarPencilButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarPencilButton>(m_ptr); }
};

struct IInkToolbarPencilButtonFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarPencilButtonFactory>
{
    IInkToolbarPencilButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarPencilButtonFactory>(m_ptr); }
};

struct IInkToolbarRulerButton :
    Windows::IInspectable,
    impl::consume<IInkToolbarRulerButton>
{
    IInkToolbarRulerButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarRulerButton>(m_ptr); }
};

struct IInkToolbarRulerButtonFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarRulerButtonFactory>
{
    IInkToolbarRulerButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarRulerButtonFactory>(m_ptr); }
};

struct IInkToolbarRulerButtonStatics :
    Windows::IInspectable,
    impl::consume<IInkToolbarRulerButtonStatics>
{
    IInkToolbarRulerButtonStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarRulerButtonStatics>(m_ptr); }
};

struct IInkToolbarStatics :
    Windows::IInspectable,
    impl::consume<IInkToolbarStatics>
{
    IInkToolbarStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarStatics>(m_ptr); }
};

struct IInkToolbarToggleButton :
    Windows::IInspectable,
    impl::consume<IInkToolbarToggleButton>
{
    IInkToolbarToggleButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarToggleButton>(m_ptr); }
};

struct IInkToolbarToggleButtonFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarToggleButtonFactory>
{
    IInkToolbarToggleButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarToggleButtonFactory>(m_ptr); }
};

struct IInkToolbarToolButton :
    Windows::IInspectable,
    impl::consume<IInkToolbarToolButton>
{
    IInkToolbarToolButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarToolButton>(m_ptr); }
};

struct IInkToolbarToolButtonFactory :
    Windows::IInspectable,
    impl::consume<IInkToolbarToolButtonFactory>
{
    IInkToolbarToolButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarToolButtonFactory>(m_ptr); }
};

struct IInkToolbarToolButtonStatics :
    Windows::IInspectable,
    impl::consume<IInkToolbarToolButtonStatics>
{
    IInkToolbarToolButtonStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInkToolbarToolButtonStatics>(m_ptr); }
};

struct IInsertionPanel :
    Windows::IInspectable,
    impl::consume<IInsertionPanel>
{
    IInsertionPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IInsertionPanel>(m_ptr); }
};

struct IItemClickEventArgs :
    Windows::IInspectable,
    impl::consume<IItemClickEventArgs>
{
    IItemClickEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemClickEventArgs>(m_ptr); }
};

struct IItemContainerGenerator :
    Windows::IInspectable,
    impl::consume<IItemContainerGenerator>
{
    IItemContainerGenerator(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemContainerGenerator>(m_ptr); }
};

struct IItemContainerMapping :
    Windows::IInspectable,
    impl::consume<IItemContainerMapping>
{
    IItemContainerMapping(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemContainerMapping>(m_ptr); }
};

struct IItemsControl :
    Windows::IInspectable,
    impl::consume<IItemsControl>
{
    IItemsControl(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsControl>(m_ptr); }
};

struct IItemsControl2 :
    Windows::IInspectable,
    impl::consume<IItemsControl2>
{
    IItemsControl2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsControl2>(m_ptr); }
};

struct IItemsControl3 :
    Windows::IInspectable,
    impl::consume<IItemsControl3>
{
    IItemsControl3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsControl3>(m_ptr); }
};

struct IItemsControlFactory :
    Windows::IInspectable,
    impl::consume<IItemsControlFactory>
{
    IItemsControlFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsControlFactory>(m_ptr); }
};

struct IItemsControlOverrides :
    Windows::IInspectable,
    impl::consume<IItemsControlOverrides>
{
    IItemsControlOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsControlOverrides>(m_ptr); }
};

struct IItemsControlStatics :
    Windows::IInspectable,
    impl::consume<IItemsControlStatics>
{
    IItemsControlStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsControlStatics>(m_ptr); }
};

struct IItemsPanelTemplate :
    Windows::IInspectable,
    impl::consume<IItemsPanelTemplate>
{
    IItemsPanelTemplate(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsPanelTemplate>(m_ptr); }
};

struct IItemsPickedEventArgs :
    Windows::IInspectable,
    impl::consume<IItemsPickedEventArgs>
{
    IItemsPickedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsPickedEventArgs>(m_ptr); }
};

struct IItemsPresenter :
    Windows::IInspectable,
    impl::consume<IItemsPresenter>
{
    IItemsPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsPresenter>(m_ptr); }
};

struct IItemsPresenter2 :
    Windows::IInspectable,
    impl::consume<IItemsPresenter2>
{
    IItemsPresenter2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsPresenter2>(m_ptr); }
};

struct IItemsPresenterStatics :
    Windows::IInspectable,
    impl::consume<IItemsPresenterStatics>
{
    IItemsPresenterStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsPresenterStatics>(m_ptr); }
};

struct IItemsPresenterStatics2 :
    Windows::IInspectable,
    impl::consume<IItemsPresenterStatics2>
{
    IItemsPresenterStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsPresenterStatics2>(m_ptr); }
};

struct IItemsStackPanel :
    Windows::IInspectable,
    impl::consume<IItemsStackPanel>
{
    IItemsStackPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsStackPanel>(m_ptr); }
};

struct IItemsStackPanel2 :
    Windows::IInspectable,
    impl::consume<IItemsStackPanel2>
{
    IItemsStackPanel2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsStackPanel2>(m_ptr); }
};

struct IItemsStackPanelStatics :
    Windows::IInspectable,
    impl::consume<IItemsStackPanelStatics>
{
    IItemsStackPanelStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsStackPanelStatics>(m_ptr); }
};

struct IItemsStackPanelStatics2 :
    Windows::IInspectable,
    impl::consume<IItemsStackPanelStatics2>
{
    IItemsStackPanelStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsStackPanelStatics2>(m_ptr); }
};

struct IItemsWrapGrid :
    Windows::IInspectable,
    impl::consume<IItemsWrapGrid>
{
    IItemsWrapGrid(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsWrapGrid>(m_ptr); }
};

struct IItemsWrapGrid2 :
    Windows::IInspectable,
    impl::consume<IItemsWrapGrid2>
{
    IItemsWrapGrid2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsWrapGrid2>(m_ptr); }
};

struct IItemsWrapGridStatics :
    Windows::IInspectable,
    impl::consume<IItemsWrapGridStatics>
{
    IItemsWrapGridStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsWrapGridStatics>(m_ptr); }
};

struct IItemsWrapGridStatics2 :
    Windows::IInspectable,
    impl::consume<IItemsWrapGridStatics2>
{
    IItemsWrapGridStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsWrapGridStatics2>(m_ptr); }
};

struct IListBox :
    Windows::IInspectable,
    impl::consume<IListBox>
{
    IListBox(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListBox>(m_ptr); }
};

struct IListBox2 :
    Windows::IInspectable,
    impl::consume<IListBox2>
{
    IListBox2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListBox2>(m_ptr); }
};

struct IListBoxFactory :
    Windows::IInspectable,
    impl::consume<IListBoxFactory>
{
    IListBoxFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListBoxFactory>(m_ptr); }
};

struct IListBoxItem :
    Windows::IInspectable,
    impl::consume<IListBoxItem>
{
    IListBoxItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListBoxItem>(m_ptr); }
};

struct IListBoxItemFactory :
    Windows::IInspectable,
    impl::consume<IListBoxItemFactory>
{
    IListBoxItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListBoxItemFactory>(m_ptr); }
};

struct IListBoxStatics :
    Windows::IInspectable,
    impl::consume<IListBoxStatics>
{
    IListBoxStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListBoxStatics>(m_ptr); }
};

struct IListBoxStatics2 :
    Windows::IInspectable,
    impl::consume<IListBoxStatics2>
{
    IListBoxStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListBoxStatics2>(m_ptr); }
};

struct IListPickerFlyout :
    Windows::IInspectable,
    impl::consume<IListPickerFlyout>
{
    IListPickerFlyout(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListPickerFlyout>(m_ptr); }
};

struct IListPickerFlyoutPresenter :
    Windows::IInspectable,
    impl::consume<IListPickerFlyoutPresenter>
{
    IListPickerFlyoutPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListPickerFlyoutPresenter>(m_ptr); }
};

struct IListPickerFlyoutStatics :
    Windows::IInspectable,
    impl::consume<IListPickerFlyoutStatics>
{
    IListPickerFlyoutStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListPickerFlyoutStatics>(m_ptr); }
};

struct IListView :
    Windows::IInspectable,
    impl::consume<IListView>
{
    IListView(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListView>(m_ptr); }
};

struct IListViewBase :
    Windows::IInspectable,
    impl::consume<IListViewBase>
{
    IListViewBase(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBase>(m_ptr); }
};

struct IListViewBase2 :
    Windows::IInspectable,
    impl::consume<IListViewBase2>
{
    IListViewBase2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBase2>(m_ptr); }
};

struct IListViewBase3 :
    Windows::IInspectable,
    impl::consume<IListViewBase3>
{
    IListViewBase3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBase3>(m_ptr); }
};

struct IListViewBase4 :
    Windows::IInspectable,
    impl::consume<IListViewBase4>
{
    IListViewBase4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBase4>(m_ptr); }
};

struct IListViewBase5 :
    Windows::IInspectable,
    impl::consume<IListViewBase5>
{
    IListViewBase5(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBase5>(m_ptr); }
};

struct IListViewBaseFactory :
    Windows::IInspectable,
    impl::consume<IListViewBaseFactory>
{
    IListViewBaseFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBaseFactory>(m_ptr); }
};

struct IListViewBaseHeaderItem :
    Windows::IInspectable,
    impl::consume<IListViewBaseHeaderItem>
{
    IListViewBaseHeaderItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBaseHeaderItem>(m_ptr); }
};

struct IListViewBaseHeaderItemFactory :
    Windows::IInspectable,
    impl::consume<IListViewBaseHeaderItemFactory>
{
    IListViewBaseHeaderItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBaseHeaderItemFactory>(m_ptr); }
};

struct IListViewBaseStatics :
    Windows::IInspectable,
    impl::consume<IListViewBaseStatics>
{
    IListViewBaseStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBaseStatics>(m_ptr); }
};

struct IListViewBaseStatics2 :
    Windows::IInspectable,
    impl::consume<IListViewBaseStatics2>
{
    IListViewBaseStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBaseStatics2>(m_ptr); }
};

struct IListViewBaseStatics3 :
    Windows::IInspectable,
    impl::consume<IListViewBaseStatics3>
{
    IListViewBaseStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBaseStatics3>(m_ptr); }
};

struct IListViewBaseStatics4 :
    Windows::IInspectable,
    impl::consume<IListViewBaseStatics4>
{
    IListViewBaseStatics4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBaseStatics4>(m_ptr); }
};

struct IListViewBaseStatics5 :
    Windows::IInspectable,
    impl::consume<IListViewBaseStatics5>
{
    IListViewBaseStatics5(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewBaseStatics5>(m_ptr); }
};

struct IListViewFactory :
    Windows::IInspectable,
    impl::consume<IListViewFactory>
{
    IListViewFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewFactory>(m_ptr); }
};

struct IListViewHeaderItem :
    Windows::IInspectable,
    impl::consume<IListViewHeaderItem>
{
    IListViewHeaderItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewHeaderItem>(m_ptr); }
};

struct IListViewHeaderItemFactory :
    Windows::IInspectable,
    impl::consume<IListViewHeaderItemFactory>
{
    IListViewHeaderItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewHeaderItemFactory>(m_ptr); }
};

struct IListViewItem :
    Windows::IInspectable,
    impl::consume<IListViewItem>
{
    IListViewItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewItem>(m_ptr); }
};

struct IListViewItemFactory :
    Windows::IInspectable,
    impl::consume<IListViewItemFactory>
{
    IListViewItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewItemFactory>(m_ptr); }
};

struct IListViewPersistenceHelper :
    Windows::IInspectable,
    impl::consume<IListViewPersistenceHelper>
{
    IListViewPersistenceHelper(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewPersistenceHelper>(m_ptr); }
};

struct IListViewPersistenceHelperStatics :
    Windows::IInspectable,
    impl::consume<IListViewPersistenceHelperStatics>
{
    IListViewPersistenceHelperStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewPersistenceHelperStatics>(m_ptr); }
};

struct IMediaElement :
    Windows::IInspectable,
    impl::consume<IMediaElement>
{
    IMediaElement(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaElement>(m_ptr); }
};

struct IMediaElement2 :
    Windows::IInspectable,
    impl::consume<IMediaElement2>
{
    IMediaElement2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaElement2>(m_ptr); }
};

struct IMediaElement3 :
    Windows::IInspectable,
    impl::consume<IMediaElement3>
{
    IMediaElement3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaElement3>(m_ptr); }
};

struct IMediaElementStatics :
    Windows::IInspectable,
    impl::consume<IMediaElementStatics>
{
    IMediaElementStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaElementStatics>(m_ptr); }
};

struct IMediaElementStatics2 :
    Windows::IInspectable,
    impl::consume<IMediaElementStatics2>
{
    IMediaElementStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaElementStatics2>(m_ptr); }
};

struct IMediaPlayerElement :
    Windows::IInspectable,
    impl::consume<IMediaPlayerElement>
{
    IMediaPlayerElement(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaPlayerElement>(m_ptr); }
};

struct IMediaPlayerElementFactory :
    Windows::IInspectable,
    impl::consume<IMediaPlayerElementFactory>
{
    IMediaPlayerElementFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaPlayerElementFactory>(m_ptr); }
};

struct IMediaPlayerElementStatics :
    Windows::IInspectable,
    impl::consume<IMediaPlayerElementStatics>
{
    IMediaPlayerElementStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaPlayerElementStatics>(m_ptr); }
};

struct IMediaPlayerPresenter :
    Windows::IInspectable,
    impl::consume<IMediaPlayerPresenter>
{
    IMediaPlayerPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaPlayerPresenter>(m_ptr); }
};

struct IMediaPlayerPresenterFactory :
    Windows::IInspectable,
    impl::consume<IMediaPlayerPresenterFactory>
{
    IMediaPlayerPresenterFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaPlayerPresenterFactory>(m_ptr); }
};

struct IMediaPlayerPresenterStatics :
    Windows::IInspectable,
    impl::consume<IMediaPlayerPresenterStatics>
{
    IMediaPlayerPresenterStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaPlayerPresenterStatics>(m_ptr); }
};

struct IMediaTransportControls :
    Windows::IInspectable,
    impl::consume<IMediaTransportControls>
{
    IMediaTransportControls(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaTransportControls>(m_ptr); }
};

struct IMediaTransportControls2 :
    Windows::IInspectable,
    impl::consume<IMediaTransportControls2>
{
    IMediaTransportControls2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaTransportControls2>(m_ptr); }
};

struct IMediaTransportControlsFactory :
    Windows::IInspectable,
    impl::consume<IMediaTransportControlsFactory>
{
    IMediaTransportControlsFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaTransportControlsFactory>(m_ptr); }
};

struct IMediaTransportControlsHelper :
    Windows::IInspectable,
    impl::consume<IMediaTransportControlsHelper>
{
    IMediaTransportControlsHelper(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaTransportControlsHelper>(m_ptr); }
};

struct IMediaTransportControlsHelperStatics :
    Windows::IInspectable,
    impl::consume<IMediaTransportControlsHelperStatics>
{
    IMediaTransportControlsHelperStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaTransportControlsHelperStatics>(m_ptr); }
};

struct IMediaTransportControlsStatics :
    Windows::IInspectable,
    impl::consume<IMediaTransportControlsStatics>
{
    IMediaTransportControlsStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaTransportControlsStatics>(m_ptr); }
};

struct IMediaTransportControlsStatics2 :
    Windows::IInspectable,
    impl::consume<IMediaTransportControlsStatics2>
{
    IMediaTransportControlsStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaTransportControlsStatics2>(m_ptr); }
};

struct IMenuFlyout :
    Windows::IInspectable,
    impl::consume<IMenuFlyout>
{
    IMenuFlyout(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyout>(m_ptr); }
};

struct IMenuFlyout2 :
    Windows::IInspectable,
    impl::consume<IMenuFlyout2>
{
    IMenuFlyout2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyout2>(m_ptr); }
};

struct IMenuFlyoutFactory :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutFactory>
{
    IMenuFlyoutFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutFactory>(m_ptr); }
};

struct IMenuFlyoutItem :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutItem>
{
    IMenuFlyoutItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutItem>(m_ptr); }
};

struct IMenuFlyoutItemBase :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutItemBase>
{
    IMenuFlyoutItemBase(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutItemBase>(m_ptr); }
};

struct IMenuFlyoutItemBaseFactory :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutItemBaseFactory>
{
    IMenuFlyoutItemBaseFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutItemBaseFactory>(m_ptr); }
};

struct IMenuFlyoutItemFactory :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutItemFactory>
{
    IMenuFlyoutItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutItemFactory>(m_ptr); }
};

struct IMenuFlyoutItemStatics :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutItemStatics>
{
    IMenuFlyoutItemStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutItemStatics>(m_ptr); }
};

struct IMenuFlyoutPresenter :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutPresenter>
{
    IMenuFlyoutPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutPresenter>(m_ptr); }
};

struct IMenuFlyoutPresenter2 :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutPresenter2>
{
    IMenuFlyoutPresenter2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutPresenter2>(m_ptr); }
};

struct IMenuFlyoutPresenterFactory :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutPresenterFactory>
{
    IMenuFlyoutPresenterFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutPresenterFactory>(m_ptr); }
};

struct IMenuFlyoutSeparator :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutSeparator>
{
    IMenuFlyoutSeparator(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutSeparator>(m_ptr); }
};

struct IMenuFlyoutSeparatorFactory :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutSeparatorFactory>
{
    IMenuFlyoutSeparatorFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutSeparatorFactory>(m_ptr); }
};

struct IMenuFlyoutStatics :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutStatics>
{
    IMenuFlyoutStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutStatics>(m_ptr); }
};

struct IMenuFlyoutSubItem :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutSubItem>
{
    IMenuFlyoutSubItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutSubItem>(m_ptr); }
};

struct IMenuFlyoutSubItemStatics :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutSubItemStatics>
{
    IMenuFlyoutSubItemStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutSubItemStatics>(m_ptr); }
};

struct INavigate :
    Windows::IInspectable,
    impl::consume<INavigate>
{
    INavigate(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<INavigate>(m_ptr); }
};

struct INotifyEventArgs :
    Windows::IInspectable,
    impl::consume<INotifyEventArgs>
{
    INotifyEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<INotifyEventArgs>(m_ptr); }
};

struct INotifyEventArgs2 :
    Windows::IInspectable,
    impl::consume<INotifyEventArgs2>
{
    INotifyEventArgs2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<INotifyEventArgs2>(m_ptr); }
};

struct IPage :
    Windows::IInspectable,
    impl::consume<IPage>
{
    IPage(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPage>(m_ptr); }
};

struct IPageFactory :
    Windows::IInspectable,
    impl::consume<IPageFactory>
{
    IPageFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPageFactory>(m_ptr); }
};

struct IPageOverrides :
    Windows::IInspectable,
    impl::consume<IPageOverrides>
{
    IPageOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPageOverrides>(m_ptr); }
};

struct IPageStatics :
    Windows::IInspectable,
    impl::consume<IPageStatics>
{
    IPageStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPageStatics>(m_ptr); }
};

struct IPanel :
    Windows::IInspectable,
    impl::consume<IPanel>
{
    IPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPanel>(m_ptr); }
};

struct IPanelFactory :
    Windows::IInspectable,
    impl::consume<IPanelFactory>
{
    IPanelFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPanelFactory>(m_ptr); }
};

struct IPanelStatics :
    Windows::IInspectable,
    impl::consume<IPanelStatics>
{
    IPanelStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPanelStatics>(m_ptr); }
};

struct IPasswordBox :
    Windows::IInspectable,
    impl::consume<IPasswordBox>
{
    IPasswordBox(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPasswordBox>(m_ptr); }
};

struct IPasswordBox2 :
    Windows::IInspectable,
    impl::consume<IPasswordBox2>
{
    IPasswordBox2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPasswordBox2>(m_ptr); }
};

struct IPasswordBox3 :
    Windows::IInspectable,
    impl::consume<IPasswordBox3>
{
    IPasswordBox3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPasswordBox3>(m_ptr); }
};

struct IPasswordBoxStatics :
    Windows::IInspectable,
    impl::consume<IPasswordBoxStatics>
{
    IPasswordBoxStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPasswordBoxStatics>(m_ptr); }
};

struct IPasswordBoxStatics2 :
    Windows::IInspectable,
    impl::consume<IPasswordBoxStatics2>
{
    IPasswordBoxStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPasswordBoxStatics2>(m_ptr); }
};

struct IPasswordBoxStatics3 :
    Windows::IInspectable,
    impl::consume<IPasswordBoxStatics3>
{
    IPasswordBoxStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPasswordBoxStatics3>(m_ptr); }
};

struct IPathIcon :
    Windows::IInspectable,
    impl::consume<IPathIcon>
{
    IPathIcon(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPathIcon>(m_ptr); }
};

struct IPathIconFactory :
    Windows::IInspectable,
    impl::consume<IPathIconFactory>
{
    IPathIconFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPathIconFactory>(m_ptr); }
};

struct IPathIconStatics :
    Windows::IInspectable,
    impl::consume<IPathIconStatics>
{
    IPathIconStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPathIconStatics>(m_ptr); }
};

struct IPickerConfirmedEventArgs :
    Windows::IInspectable,
    impl::consume<IPickerConfirmedEventArgs>
{
    IPickerConfirmedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPickerConfirmedEventArgs>(m_ptr); }
};

struct IPickerFlyout :
    Windows::IInspectable,
    impl::consume<IPickerFlyout>
{
    IPickerFlyout(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPickerFlyout>(m_ptr); }
};

struct IPickerFlyoutPresenter :
    Windows::IInspectable,
    impl::consume<IPickerFlyoutPresenter>
{
    IPickerFlyoutPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPickerFlyoutPresenter>(m_ptr); }
};

struct IPickerFlyoutStatics :
    Windows::IInspectable,
    impl::consume<IPickerFlyoutStatics>
{
    IPickerFlyoutStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPickerFlyoutStatics>(m_ptr); }
};

struct IPivot :
    Windows::IInspectable,
    impl::consume<IPivot>
{
    IPivot(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivot>(m_ptr); }
};

struct IPivot2 :
    Windows::IInspectable,
    impl::consume<IPivot2>
{
    IPivot2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivot2>(m_ptr); }
};

struct IPivot3 :
    Windows::IInspectable,
    impl::consume<IPivot3>
{
    IPivot3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivot3>(m_ptr); }
};

struct IPivotFactory :
    Windows::IInspectable,
    impl::consume<IPivotFactory>
{
    IPivotFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotFactory>(m_ptr); }
};

struct IPivotItem :
    Windows::IInspectable,
    impl::consume<IPivotItem>
{
    IPivotItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotItem>(m_ptr); }
};

struct IPivotItemEventArgs :
    Windows::IInspectable,
    impl::consume<IPivotItemEventArgs>
{
    IPivotItemEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotItemEventArgs>(m_ptr); }
};

struct IPivotItemFactory :
    Windows::IInspectable,
    impl::consume<IPivotItemFactory>
{
    IPivotItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotItemFactory>(m_ptr); }
};

struct IPivotItemStatics :
    Windows::IInspectable,
    impl::consume<IPivotItemStatics>
{
    IPivotItemStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotItemStatics>(m_ptr); }
};

struct IPivotStatics :
    Windows::IInspectable,
    impl::consume<IPivotStatics>
{
    IPivotStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotStatics>(m_ptr); }
};

struct IPivotStatics2 :
    Windows::IInspectable,
    impl::consume<IPivotStatics2>
{
    IPivotStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotStatics2>(m_ptr); }
};

struct IPivotStatics3 :
    Windows::IInspectable,
    impl::consume<IPivotStatics3>
{
    IPivotStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotStatics3>(m_ptr); }
};

struct IProgressBar :
    Windows::IInspectable,
    impl::consume<IProgressBar>
{
    IProgressBar(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProgressBar>(m_ptr); }
};

struct IProgressBarFactory :
    Windows::IInspectable,
    impl::consume<IProgressBarFactory>
{
    IProgressBarFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProgressBarFactory>(m_ptr); }
};

struct IProgressBarStatics :
    Windows::IInspectable,
    impl::consume<IProgressBarStatics>
{
    IProgressBarStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProgressBarStatics>(m_ptr); }
};

struct IProgressRing :
    Windows::IInspectable,
    impl::consume<IProgressRing>
{
    IProgressRing(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProgressRing>(m_ptr); }
};

struct IProgressRingStatics :
    Windows::IInspectable,
    impl::consume<IProgressRingStatics>
{
    IProgressRingStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProgressRingStatics>(m_ptr); }
};

struct IRadioButton :
    Windows::IInspectable,
    impl::consume<IRadioButton>
{
    IRadioButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadioButton>(m_ptr); }
};

struct IRadioButtonFactory :
    Windows::IInspectable,
    impl::consume<IRadioButtonFactory>
{
    IRadioButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadioButtonFactory>(m_ptr); }
};

struct IRadioButtonStatics :
    Windows::IInspectable,
    impl::consume<IRadioButtonStatics>
{
    IRadioButtonStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadioButtonStatics>(m_ptr); }
};

struct IRelativePanel :
    Windows::IInspectable,
    impl::consume<IRelativePanel>
{
    IRelativePanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRelativePanel>(m_ptr); }
};

struct IRelativePanelFactory :
    Windows::IInspectable,
    impl::consume<IRelativePanelFactory>
{
    IRelativePanelFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRelativePanelFactory>(m_ptr); }
};

struct IRelativePanelStatics :
    Windows::IInspectable,
    impl::consume<IRelativePanelStatics>
{
    IRelativePanelStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRelativePanelStatics>(m_ptr); }
};

struct IRichEditBox :
    Windows::IInspectable,
    impl::consume<IRichEditBox>
{
    IRichEditBox(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichEditBox>(m_ptr); }
};

struct IRichEditBox2 :
    Windows::IInspectable,
    impl::consume<IRichEditBox2>
{
    IRichEditBox2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichEditBox2>(m_ptr); }
};

struct IRichEditBox3 :
    Windows::IInspectable,
    impl::consume<IRichEditBox3>
{
    IRichEditBox3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichEditBox3>(m_ptr); }
};

struct IRichEditBox4 :
    Windows::IInspectable,
    impl::consume<IRichEditBox4>
{
    IRichEditBox4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichEditBox4>(m_ptr); }
};

struct IRichEditBoxFactory :
    Windows::IInspectable,
    impl::consume<IRichEditBoxFactory>
{
    IRichEditBoxFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichEditBoxFactory>(m_ptr); }
};

struct IRichEditBoxStatics :
    Windows::IInspectable,
    impl::consume<IRichEditBoxStatics>
{
    IRichEditBoxStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichEditBoxStatics>(m_ptr); }
};

struct IRichEditBoxStatics2 :
    Windows::IInspectable,
    impl::consume<IRichEditBoxStatics2>
{
    IRichEditBoxStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichEditBoxStatics2>(m_ptr); }
};

struct IRichEditBoxStatics3 :
    Windows::IInspectable,
    impl::consume<IRichEditBoxStatics3>
{
    IRichEditBoxStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichEditBoxStatics3>(m_ptr); }
};

struct IRichEditBoxStatics4 :
    Windows::IInspectable,
    impl::consume<IRichEditBoxStatics4>
{
    IRichEditBoxStatics4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichEditBoxStatics4>(m_ptr); }
};

struct IRichEditBoxTextChangingEventArgs :
    Windows::IInspectable,
    impl::consume<IRichEditBoxTextChangingEventArgs>
{
    IRichEditBoxTextChangingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichEditBoxTextChangingEventArgs>(m_ptr); }
};

struct IRichTextBlock :
    Windows::IInspectable,
    impl::consume<IRichTextBlock>
{
    IRichTextBlock(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichTextBlock>(m_ptr); }
};

struct IRichTextBlock2 :
    Windows::IInspectable,
    impl::consume<IRichTextBlock2>
{
    IRichTextBlock2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichTextBlock2>(m_ptr); }
};

struct IRichTextBlock3 :
    Windows::IInspectable,
    impl::consume<IRichTextBlock3>
{
    IRichTextBlock3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichTextBlock3>(m_ptr); }
};

struct IRichTextBlockOverflow :
    Windows::IInspectable,
    impl::consume<IRichTextBlockOverflow>
{
    IRichTextBlockOverflow(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichTextBlockOverflow>(m_ptr); }
};

struct IRichTextBlockOverflow2 :
    Windows::IInspectable,
    impl::consume<IRichTextBlockOverflow2>
{
    IRichTextBlockOverflow2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichTextBlockOverflow2>(m_ptr); }
};

struct IRichTextBlockOverflowStatics :
    Windows::IInspectable,
    impl::consume<IRichTextBlockOverflowStatics>
{
    IRichTextBlockOverflowStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichTextBlockOverflowStatics>(m_ptr); }
};

struct IRichTextBlockOverflowStatics2 :
    Windows::IInspectable,
    impl::consume<IRichTextBlockOverflowStatics2>
{
    IRichTextBlockOverflowStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichTextBlockOverflowStatics2>(m_ptr); }
};

struct IRichTextBlockStatics :
    Windows::IInspectable,
    impl::consume<IRichTextBlockStatics>
{
    IRichTextBlockStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichTextBlockStatics>(m_ptr); }
};

struct IRichTextBlockStatics2 :
    Windows::IInspectable,
    impl::consume<IRichTextBlockStatics2>
{
    IRichTextBlockStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichTextBlockStatics2>(m_ptr); }
};

struct IRichTextBlockStatics3 :
    Windows::IInspectable,
    impl::consume<IRichTextBlockStatics3>
{
    IRichTextBlockStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRichTextBlockStatics3>(m_ptr); }
};

struct IRowDefinition :
    Windows::IInspectable,
    impl::consume<IRowDefinition>
{
    IRowDefinition(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRowDefinition>(m_ptr); }
};

struct IRowDefinitionStatics :
    Windows::IInspectable,
    impl::consume<IRowDefinitionStatics>
{
    IRowDefinitionStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRowDefinitionStatics>(m_ptr); }
};

struct IScrollContentPresenter :
    Windows::IInspectable,
    impl::consume<IScrollContentPresenter>
{
    IScrollContentPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollContentPresenter>(m_ptr); }
};

struct IScrollViewer :
    Windows::IInspectable,
    impl::consume<IScrollViewer>
{
    IScrollViewer(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollViewer>(m_ptr); }
};

struct IScrollViewer2 :
    Windows::IInspectable,
    impl::consume<IScrollViewer2>
{
    IScrollViewer2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollViewer2>(m_ptr); }
};

struct IScrollViewer3 :
    Windows::IInspectable,
    impl::consume<IScrollViewer3>
{
    IScrollViewer3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollViewer3>(m_ptr); }
};

struct IScrollViewerStatics :
    Windows::IInspectable,
    impl::consume<IScrollViewerStatics>
{
    IScrollViewerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollViewerStatics>(m_ptr); }
};

struct IScrollViewerStatics2 :
    Windows::IInspectable,
    impl::consume<IScrollViewerStatics2>
{
    IScrollViewerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollViewerStatics2>(m_ptr); }
};

struct IScrollViewerView :
    Windows::IInspectable,
    impl::consume<IScrollViewerView>
{
    IScrollViewerView(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollViewerView>(m_ptr); }
};

struct IScrollViewerViewChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IScrollViewerViewChangedEventArgs>
{
    IScrollViewerViewChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollViewerViewChangedEventArgs>(m_ptr); }
};

struct IScrollViewerViewChangingEventArgs :
    Windows::IInspectable,
    impl::consume<IScrollViewerViewChangingEventArgs>
{
    IScrollViewerViewChangingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollViewerViewChangingEventArgs>(m_ptr); }
};

struct ISearchBox :
    Windows::IInspectable,
    impl::consume<ISearchBox>
{
    ISearchBox(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISearchBox>(m_ptr); }
};

struct ISearchBoxFactory :
    Windows::IInspectable,
    impl::consume<ISearchBoxFactory>
{
    ISearchBoxFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISearchBoxFactory>(m_ptr); }
};

struct ISearchBoxQueryChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ISearchBoxQueryChangedEventArgs>
{
    ISearchBoxQueryChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISearchBoxQueryChangedEventArgs>(m_ptr); }
};

struct ISearchBoxQuerySubmittedEventArgs :
    Windows::IInspectable,
    impl::consume<ISearchBoxQuerySubmittedEventArgs>
{
    ISearchBoxQuerySubmittedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISearchBoxQuerySubmittedEventArgs>(m_ptr); }
};

struct ISearchBoxResultSuggestionChosenEventArgs :
    Windows::IInspectable,
    impl::consume<ISearchBoxResultSuggestionChosenEventArgs>
{
    ISearchBoxResultSuggestionChosenEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISearchBoxResultSuggestionChosenEventArgs>(m_ptr); }
};

struct ISearchBoxStatics :
    Windows::IInspectable,
    impl::consume<ISearchBoxStatics>
{
    ISearchBoxStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISearchBoxStatics>(m_ptr); }
};

struct ISearchBoxSuggestionsRequestedEventArgs :
    Windows::IInspectable,
    impl::consume<ISearchBoxSuggestionsRequestedEventArgs>
{
    ISearchBoxSuggestionsRequestedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISearchBoxSuggestionsRequestedEventArgs>(m_ptr); }
};

struct ISectionsInViewChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ISectionsInViewChangedEventArgs>
{
    ISectionsInViewChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISectionsInViewChangedEventArgs>(m_ptr); }
};

struct ISectionsInViewChangedEventArgsFactory :
    Windows::IInspectable,
    impl::consume<ISectionsInViewChangedEventArgsFactory>
{
    ISectionsInViewChangedEventArgsFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISectionsInViewChangedEventArgsFactory>(m_ptr); }
};

struct ISelectionChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ISelectionChangedEventArgs>
{
    ISelectionChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISelectionChangedEventArgs>(m_ptr); }
};

struct ISelectionChangedEventArgsFactory :
    Windows::IInspectable,
    impl::consume<ISelectionChangedEventArgsFactory>
{
    ISelectionChangedEventArgsFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISelectionChangedEventArgsFactory>(m_ptr); }
};

struct ISemanticZoom :
    Windows::IInspectable,
    impl::consume<ISemanticZoom>
{
    ISemanticZoom(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISemanticZoom>(m_ptr); }
};

struct ISemanticZoomInformation :
    Windows::IInspectable,
    impl::consume<ISemanticZoomInformation>
{
    ISemanticZoomInformation(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISemanticZoomInformation>(m_ptr); }
};

struct ISemanticZoomLocation :
    Windows::IInspectable,
    impl::consume<ISemanticZoomLocation>
{
    ISemanticZoomLocation(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISemanticZoomLocation>(m_ptr); }
};

struct ISemanticZoomStatics :
    Windows::IInspectable,
    impl::consume<ISemanticZoomStatics>
{
    ISemanticZoomStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISemanticZoomStatics>(m_ptr); }
};

struct ISemanticZoomViewChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ISemanticZoomViewChangedEventArgs>
{
    ISemanticZoomViewChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISemanticZoomViewChangedEventArgs>(m_ptr); }
};

struct ISettingsFlyout :
    Windows::IInspectable,
    impl::consume<ISettingsFlyout>
{
    ISettingsFlyout(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISettingsFlyout>(m_ptr); }
};

struct ISettingsFlyoutFactory :
    Windows::IInspectable,
    impl::consume<ISettingsFlyoutFactory>
{
    ISettingsFlyoutFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISettingsFlyoutFactory>(m_ptr); }
};

struct ISettingsFlyoutStatics :
    Windows::IInspectable,
    impl::consume<ISettingsFlyoutStatics>
{
    ISettingsFlyoutStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISettingsFlyoutStatics>(m_ptr); }
};

struct ISlider :
    Windows::IInspectable,
    impl::consume<ISlider>
{
    ISlider(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISlider>(m_ptr); }
};

struct ISlider2 :
    Windows::IInspectable,
    impl::consume<ISlider2>
{
    ISlider2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISlider2>(m_ptr); }
};

struct ISliderFactory :
    Windows::IInspectable,
    impl::consume<ISliderFactory>
{
    ISliderFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISliderFactory>(m_ptr); }
};

struct ISliderStatics :
    Windows::IInspectable,
    impl::consume<ISliderStatics>
{
    ISliderStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISliderStatics>(m_ptr); }
};

struct ISliderStatics2 :
    Windows::IInspectable,
    impl::consume<ISliderStatics2>
{
    ISliderStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISliderStatics2>(m_ptr); }
};

struct ISplitView :
    Windows::IInspectable,
    impl::consume<ISplitView>
{
    ISplitView(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISplitView>(m_ptr); }
};

struct ISplitView2 :
    Windows::IInspectable,
    impl::consume<ISplitView2>
{
    ISplitView2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISplitView2>(m_ptr); }
};

struct ISplitViewFactory :
    Windows::IInspectable,
    impl::consume<ISplitViewFactory>
{
    ISplitViewFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISplitViewFactory>(m_ptr); }
};

struct ISplitViewPaneClosingEventArgs :
    Windows::IInspectable,
    impl::consume<ISplitViewPaneClosingEventArgs>
{
    ISplitViewPaneClosingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISplitViewPaneClosingEventArgs>(m_ptr); }
};

struct ISplitViewStatics :
    Windows::IInspectable,
    impl::consume<ISplitViewStatics>
{
    ISplitViewStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISplitViewStatics>(m_ptr); }
};

struct ISplitViewStatics2 :
    Windows::IInspectable,
    impl::consume<ISplitViewStatics2>
{
    ISplitViewStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISplitViewStatics2>(m_ptr); }
};

struct IStackPanel :
    Windows::IInspectable,
    impl::consume<IStackPanel>
{
    IStackPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStackPanel>(m_ptr); }
};

struct IStackPanel2 :
    Windows::IInspectable,
    impl::consume<IStackPanel2>
{
    IStackPanel2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStackPanel2>(m_ptr); }
};

struct IStackPanelFactory :
    Windows::IInspectable,
    impl::consume<IStackPanelFactory>
{
    IStackPanelFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStackPanelFactory>(m_ptr); }
};

struct IStackPanelStatics :
    Windows::IInspectable,
    impl::consume<IStackPanelStatics>
{
    IStackPanelStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStackPanelStatics>(m_ptr); }
};

struct IStackPanelStatics2 :
    Windows::IInspectable,
    impl::consume<IStackPanelStatics2>
{
    IStackPanelStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStackPanelStatics2>(m_ptr); }
};

struct IStyleSelector :
    Windows::IInspectable,
    impl::consume<IStyleSelector>
{
    IStyleSelector(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStyleSelector>(m_ptr); }
};

struct IStyleSelectorFactory :
    Windows::IInspectable,
    impl::consume<IStyleSelectorFactory>
{
    IStyleSelectorFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStyleSelectorFactory>(m_ptr); }
};

struct IStyleSelectorOverrides :
    Windows::IInspectable,
    impl::consume<IStyleSelectorOverrides>
{
    IStyleSelectorOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IStyleSelectorOverrides>(m_ptr); }
};

struct ISwapChainBackgroundPanel :
    Windows::IInspectable,
    impl::consume<ISwapChainBackgroundPanel>
{
    ISwapChainBackgroundPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISwapChainBackgroundPanel>(m_ptr); }
};

struct ISwapChainBackgroundPanel2 :
    Windows::IInspectable,
    impl::consume<ISwapChainBackgroundPanel2>
{
    ISwapChainBackgroundPanel2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISwapChainBackgroundPanel2>(m_ptr); }
};

struct ISwapChainBackgroundPanelFactory :
    Windows::IInspectable,
    impl::consume<ISwapChainBackgroundPanelFactory>
{
    ISwapChainBackgroundPanelFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISwapChainBackgroundPanelFactory>(m_ptr); }
};

struct ISwapChainPanel :
    Windows::IInspectable,
    impl::consume<ISwapChainPanel>
{
    ISwapChainPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISwapChainPanel>(m_ptr); }
};

struct ISwapChainPanelFactory :
    Windows::IInspectable,
    impl::consume<ISwapChainPanelFactory>
{
    ISwapChainPanelFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISwapChainPanelFactory>(m_ptr); }
};

struct ISwapChainPanelStatics :
    Windows::IInspectable,
    impl::consume<ISwapChainPanelStatics>
{
    ISwapChainPanelStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISwapChainPanelStatics>(m_ptr); }
};

struct ISymbolIcon :
    Windows::IInspectable,
    impl::consume<ISymbolIcon>
{
    ISymbolIcon(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISymbolIcon>(m_ptr); }
};

struct ISymbolIconFactory :
    Windows::IInspectable,
    impl::consume<ISymbolIconFactory>
{
    ISymbolIconFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISymbolIconFactory>(m_ptr); }
};

struct ISymbolIconStatics :
    Windows::IInspectable,
    impl::consume<ISymbolIconStatics>
{
    ISymbolIconStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISymbolIconStatics>(m_ptr); }
};

struct ITextBlock :
    Windows::IInspectable,
    impl::consume<ITextBlock>
{
    ITextBlock(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBlock>(m_ptr); }
};

struct ITextBlock2 :
    Windows::IInspectable,
    impl::consume<ITextBlock2>
{
    ITextBlock2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBlock2>(m_ptr); }
};

struct ITextBlock3 :
    Windows::IInspectable,
    impl::consume<ITextBlock3>
{
    ITextBlock3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBlock3>(m_ptr); }
};

struct ITextBlock4 :
    Windows::IInspectable,
    impl::consume<ITextBlock4>
{
    ITextBlock4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBlock4>(m_ptr); }
};

struct ITextBlockStatics :
    Windows::IInspectable,
    impl::consume<ITextBlockStatics>
{
    ITextBlockStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBlockStatics>(m_ptr); }
};

struct ITextBlockStatics2 :
    Windows::IInspectable,
    impl::consume<ITextBlockStatics2>
{
    ITextBlockStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBlockStatics2>(m_ptr); }
};

struct ITextBlockStatics3 :
    Windows::IInspectable,
    impl::consume<ITextBlockStatics3>
{
    ITextBlockStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBlockStatics3>(m_ptr); }
};

struct ITextBox :
    Windows::IInspectable,
    impl::consume<ITextBox>
{
    ITextBox(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBox>(m_ptr); }
};

struct ITextBox2 :
    Windows::IInspectable,
    impl::consume<ITextBox2>
{
    ITextBox2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBox2>(m_ptr); }
};

struct ITextBox3 :
    Windows::IInspectable,
    impl::consume<ITextBox3>
{
    ITextBox3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBox3>(m_ptr); }
};

struct ITextBox4 :
    Windows::IInspectable,
    impl::consume<ITextBox4>
{
    ITextBox4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBox4>(m_ptr); }
};

struct ITextBoxFactory :
    Windows::IInspectable,
    impl::consume<ITextBoxFactory>
{
    ITextBoxFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBoxFactory>(m_ptr); }
};

struct ITextBoxStatics :
    Windows::IInspectable,
    impl::consume<ITextBoxStatics>
{
    ITextBoxStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBoxStatics>(m_ptr); }
};

struct ITextBoxStatics2 :
    Windows::IInspectable,
    impl::consume<ITextBoxStatics2>
{
    ITextBoxStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBoxStatics2>(m_ptr); }
};

struct ITextBoxStatics3 :
    Windows::IInspectable,
    impl::consume<ITextBoxStatics3>
{
    ITextBoxStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBoxStatics3>(m_ptr); }
};

struct ITextBoxTextChangingEventArgs :
    Windows::IInspectable,
    impl::consume<ITextBoxTextChangingEventArgs>
{
    ITextBoxTextChangingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextBoxTextChangingEventArgs>(m_ptr); }
};

struct ITextChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ITextChangedEventArgs>
{
    ITextChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextChangedEventArgs>(m_ptr); }
};

struct ITextCompositionChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ITextCompositionChangedEventArgs>
{
    ITextCompositionChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextCompositionChangedEventArgs>(m_ptr); }
};

struct ITextCompositionEndedEventArgs :
    Windows::IInspectable,
    impl::consume<ITextCompositionEndedEventArgs>
{
    ITextCompositionEndedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextCompositionEndedEventArgs>(m_ptr); }
};

struct ITextCompositionStartedEventArgs :
    Windows::IInspectable,
    impl::consume<ITextCompositionStartedEventArgs>
{
    ITextCompositionStartedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextCompositionStartedEventArgs>(m_ptr); }
};

struct ITextControlPasteEventArgs :
    Windows::IInspectable,
    impl::consume<ITextControlPasteEventArgs>
{
    ITextControlPasteEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITextControlPasteEventArgs>(m_ptr); }
};

struct ITimePickedEventArgs :
    Windows::IInspectable,
    impl::consume<ITimePickedEventArgs>
{
    ITimePickedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimePickedEventArgs>(m_ptr); }
};

struct ITimePicker :
    Windows::IInspectable,
    impl::consume<ITimePicker>
{
    ITimePicker(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimePicker>(m_ptr); }
};

struct ITimePicker2 :
    Windows::IInspectable,
    impl::consume<ITimePicker2>
{
    ITimePicker2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimePicker2>(m_ptr); }
};

struct ITimePickerFactory :
    Windows::IInspectable,
    impl::consume<ITimePickerFactory>
{
    ITimePickerFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimePickerFactory>(m_ptr); }
};

struct ITimePickerFlyout :
    Windows::IInspectable,
    impl::consume<ITimePickerFlyout>
{
    ITimePickerFlyout(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimePickerFlyout>(m_ptr); }
};

struct ITimePickerFlyoutPresenter :
    Windows::IInspectable,
    impl::consume<ITimePickerFlyoutPresenter>
{
    ITimePickerFlyoutPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimePickerFlyoutPresenter>(m_ptr); }
};

struct ITimePickerFlyoutStatics :
    Windows::IInspectable,
    impl::consume<ITimePickerFlyoutStatics>
{
    ITimePickerFlyoutStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimePickerFlyoutStatics>(m_ptr); }
};

struct ITimePickerStatics :
    Windows::IInspectable,
    impl::consume<ITimePickerStatics>
{
    ITimePickerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimePickerStatics>(m_ptr); }
};

struct ITimePickerStatics2 :
    Windows::IInspectable,
    impl::consume<ITimePickerStatics2>
{
    ITimePickerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimePickerStatics2>(m_ptr); }
};

struct ITimePickerValueChangedEventArgs :
    Windows::IInspectable,
    impl::consume<ITimePickerValueChangedEventArgs>
{
    ITimePickerValueChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimePickerValueChangedEventArgs>(m_ptr); }
};

struct IToggleMenuFlyoutItem :
    Windows::IInspectable,
    impl::consume<IToggleMenuFlyoutItem>
{
    IToggleMenuFlyoutItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToggleMenuFlyoutItem>(m_ptr); }
};

struct IToggleMenuFlyoutItemFactory :
    Windows::IInspectable,
    impl::consume<IToggleMenuFlyoutItemFactory>
{
    IToggleMenuFlyoutItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToggleMenuFlyoutItemFactory>(m_ptr); }
};

struct IToggleMenuFlyoutItemStatics :
    Windows::IInspectable,
    impl::consume<IToggleMenuFlyoutItemStatics>
{
    IToggleMenuFlyoutItemStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToggleMenuFlyoutItemStatics>(m_ptr); }
};

struct IToggleSwitch :
    Windows::IInspectable,
    impl::consume<IToggleSwitch>
{
    IToggleSwitch(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToggleSwitch>(m_ptr); }
};

struct IToggleSwitchOverrides :
    Windows::IInspectable,
    impl::consume<IToggleSwitchOverrides>
{
    IToggleSwitchOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToggleSwitchOverrides>(m_ptr); }
};

struct IToggleSwitchStatics :
    Windows::IInspectable,
    impl::consume<IToggleSwitchStatics>
{
    IToggleSwitchStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToggleSwitchStatics>(m_ptr); }
};

struct IToolTip :
    Windows::IInspectable,
    impl::consume<IToolTip>
{
    IToolTip(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToolTip>(m_ptr); }
};

struct IToolTipFactory :
    Windows::IInspectable,
    impl::consume<IToolTipFactory>
{
    IToolTipFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToolTipFactory>(m_ptr); }
};

struct IToolTipService :
    Windows::IInspectable,
    impl::consume<IToolTipService>
{
    IToolTipService(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToolTipService>(m_ptr); }
};

struct IToolTipServiceStatics :
    Windows::IInspectable,
    impl::consume<IToolTipServiceStatics>
{
    IToolTipServiceStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToolTipServiceStatics>(m_ptr); }
};

struct IToolTipStatics :
    Windows::IInspectable,
    impl::consume<IToolTipStatics>
{
    IToolTipStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToolTipStatics>(m_ptr); }
};

struct IUIElementCollection :
    Windows::IInspectable,
    impl::consume<IUIElementCollection>
{
    IUIElementCollection(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUIElementCollection>(m_ptr); }
};

struct IUserControl :
    Windows::IInspectable,
    impl::consume<IUserControl>
{
    IUserControl(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserControl>(m_ptr); }
};

struct IUserControlFactory :
    Windows::IInspectable,
    impl::consume<IUserControlFactory>
{
    IUserControlFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserControlFactory>(m_ptr); }
};

struct IUserControlStatics :
    Windows::IInspectable,
    impl::consume<IUserControlStatics>
{
    IUserControlStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserControlStatics>(m_ptr); }
};

struct IVariableSizedWrapGrid :
    Windows::IInspectable,
    impl::consume<IVariableSizedWrapGrid>
{
    IVariableSizedWrapGrid(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVariableSizedWrapGrid>(m_ptr); }
};

struct IVariableSizedWrapGridStatics :
    Windows::IInspectable,
    impl::consume<IVariableSizedWrapGridStatics>
{
    IVariableSizedWrapGridStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVariableSizedWrapGridStatics>(m_ptr); }
};

struct IViewbox :
    Windows::IInspectable,
    impl::consume<IViewbox>
{
    IViewbox(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IViewbox>(m_ptr); }
};

struct IViewboxStatics :
    Windows::IInspectable,
    impl::consume<IViewboxStatics>
{
    IViewboxStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IViewboxStatics>(m_ptr); }
};

struct IVirtualizingPanel :
    Windows::IInspectable,
    impl::consume<IVirtualizingPanel>
{
    IVirtualizingPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVirtualizingPanel>(m_ptr); }
};

struct IVirtualizingPanelFactory :
    Windows::IInspectable,
    impl::consume<IVirtualizingPanelFactory>
{
    IVirtualizingPanelFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVirtualizingPanelFactory>(m_ptr); }
};

struct IVirtualizingPanelOverrides :
    Windows::IInspectable,
    impl::consume<IVirtualizingPanelOverrides>
{
    IVirtualizingPanelOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVirtualizingPanelOverrides>(m_ptr); }
};

struct IVirtualizingPanelProtected :
    Windows::IInspectable,
    impl::consume<IVirtualizingPanelProtected>
{
    IVirtualizingPanelProtected(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVirtualizingPanelProtected>(m_ptr); }
};

struct IVirtualizingStackPanel :
    Windows::IInspectable,
    impl::consume<IVirtualizingStackPanel>
{
    IVirtualizingStackPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVirtualizingStackPanel>(m_ptr); }
};

struct IVirtualizingStackPanelOverrides :
    Windows::IInspectable,
    impl::consume<IVirtualizingStackPanelOverrides>
{
    IVirtualizingStackPanelOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVirtualizingStackPanelOverrides>(m_ptr); }
};

struct IVirtualizingStackPanelStatics :
    Windows::IInspectable,
    impl::consume<IVirtualizingStackPanelStatics>
{
    IVirtualizingStackPanelStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVirtualizingStackPanelStatics>(m_ptr); }
};

struct IWebView :
    Windows::IInspectable,
    impl::consume<IWebView>
{
    IWebView(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebView>(m_ptr); }
};

struct IWebView2 :
    Windows::IInspectable,
    impl::consume<IWebView2>
{
    IWebView2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebView2>(m_ptr); }
};

struct IWebView3 :
    Windows::IInspectable,
    impl::consume<IWebView3>
{
    IWebView3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebView3>(m_ptr); }
};

struct IWebView4 :
    Windows::IInspectable,
    impl::consume<IWebView4>
{
    IWebView4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebView4>(m_ptr); }
};

struct IWebView5 :
    Windows::IInspectable,
    impl::consume<IWebView5>
{
    IWebView5(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebView5>(m_ptr); }
};

struct IWebViewBrush :
    Windows::IInspectable,
    impl::consume<IWebViewBrush>
{
    IWebViewBrush(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewBrush>(m_ptr); }
};

struct IWebViewBrushStatics :
    Windows::IInspectable,
    impl::consume<IWebViewBrushStatics>
{
    IWebViewBrushStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewBrushStatics>(m_ptr); }
};

struct IWebViewContentLoadingEventArgs :
    Windows::IInspectable,
    impl::consume<IWebViewContentLoadingEventArgs>
{
    IWebViewContentLoadingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewContentLoadingEventArgs>(m_ptr); }
};

struct IWebViewDOMContentLoadedEventArgs :
    Windows::IInspectable,
    impl::consume<IWebViewDOMContentLoadedEventArgs>
{
    IWebViewDOMContentLoadedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewDOMContentLoadedEventArgs>(m_ptr); }
};

struct IWebViewDeferredPermissionRequest :
    Windows::IInspectable,
    impl::consume<IWebViewDeferredPermissionRequest>
{
    IWebViewDeferredPermissionRequest(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewDeferredPermissionRequest>(m_ptr); }
};

struct IWebViewFactory4 :
    Windows::IInspectable,
    impl::consume<IWebViewFactory4>
{
    IWebViewFactory4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewFactory4>(m_ptr); }
};

struct IWebViewLongRunningScriptDetectedEventArgs :
    Windows::IInspectable,
    impl::consume<IWebViewLongRunningScriptDetectedEventArgs>
{
    IWebViewLongRunningScriptDetectedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewLongRunningScriptDetectedEventArgs>(m_ptr); }
};

struct IWebViewNavigationCompletedEventArgs :
    Windows::IInspectable,
    impl::consume<IWebViewNavigationCompletedEventArgs>
{
    IWebViewNavigationCompletedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewNavigationCompletedEventArgs>(m_ptr); }
};

struct IWebViewNavigationFailedEventArgs :
    Windows::IInspectable,
    impl::consume<IWebViewNavigationFailedEventArgs>
{
    IWebViewNavigationFailedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewNavigationFailedEventArgs>(m_ptr); }
};

struct IWebViewNavigationStartingEventArgs :
    Windows::IInspectable,
    impl::consume<IWebViewNavigationStartingEventArgs>
{
    IWebViewNavigationStartingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewNavigationStartingEventArgs>(m_ptr); }
};

struct IWebViewNewWindowRequestedEventArgs :
    Windows::IInspectable,
    impl::consume<IWebViewNewWindowRequestedEventArgs>
{
    IWebViewNewWindowRequestedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewNewWindowRequestedEventArgs>(m_ptr); }
};

struct IWebViewPermissionRequest :
    Windows::IInspectable,
    impl::consume<IWebViewPermissionRequest>
{
    IWebViewPermissionRequest(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewPermissionRequest>(m_ptr); }
};

struct IWebViewPermissionRequestedEventArgs :
    Windows::IInspectable,
    impl::consume<IWebViewPermissionRequestedEventArgs>
{
    IWebViewPermissionRequestedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewPermissionRequestedEventArgs>(m_ptr); }
};

struct IWebViewSettings :
    Windows::IInspectable,
    impl::consume<IWebViewSettings>
{
    IWebViewSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewSettings>(m_ptr); }
};

struct IWebViewStatics :
    Windows::IInspectable,
    impl::consume<IWebViewStatics>
{
    IWebViewStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewStatics>(m_ptr); }
};

struct IWebViewStatics2 :
    Windows::IInspectable,
    impl::consume<IWebViewStatics2>
{
    IWebViewStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewStatics2>(m_ptr); }
};

struct IWebViewStatics3 :
    Windows::IInspectable,
    impl::consume<IWebViewStatics3>
{
    IWebViewStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewStatics3>(m_ptr); }
};

struct IWebViewStatics4 :
    Windows::IInspectable,
    impl::consume<IWebViewStatics4>
{
    IWebViewStatics4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewStatics4>(m_ptr); }
};

struct IWebViewStatics5 :
    Windows::IInspectable,
    impl::consume<IWebViewStatics5>
{
    IWebViewStatics5(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewStatics5>(m_ptr); }
};

struct IWebViewUnsupportedUriSchemeIdentifiedEventArgs :
    Windows::IInspectable,
    impl::consume<IWebViewUnsupportedUriSchemeIdentifiedEventArgs>
{
    IWebViewUnsupportedUriSchemeIdentifiedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewUnsupportedUriSchemeIdentifiedEventArgs>(m_ptr); }
};

struct IWebViewUnviewableContentIdentifiedEventArgs :
    Windows::IInspectable,
    impl::consume<IWebViewUnviewableContentIdentifiedEventArgs>
{
    IWebViewUnviewableContentIdentifiedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewUnviewableContentIdentifiedEventArgs>(m_ptr); }
};

struct IWebViewUnviewableContentIdentifiedEventArgs2 :
    Windows::IInspectable,
    impl::consume<IWebViewUnviewableContentIdentifiedEventArgs2>
{
    IWebViewUnviewableContentIdentifiedEventArgs2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWebViewUnviewableContentIdentifiedEventArgs2>(m_ptr); }
};

struct IWrapGrid :
    Windows::IInspectable,
    impl::consume<IWrapGrid>
{
    IWrapGrid(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWrapGrid>(m_ptr); }
};

struct IWrapGridStatics :
    Windows::IInspectable,
    impl::consume<IWrapGridStatics>
{
    IWrapGridStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IWrapGridStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Devices.Perception.Provider.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Graphics.Imaging.3.h"
#include "internal/Windows.Devices.Perception.3.h"
#include "internal/Windows.Media.3.h"
#include "internal/Windows.Devices.Perception.Provider.3.h"
#include "Windows.Devices.Perception.h"
#include "Windows.Foundation.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Devices::Perception::Provider {

template <typename L> PerceptionStartFaceAuthenticationHandler::PerceptionStartFaceAuthenticationHandler(L lambda) :
    PerceptionStartFaceAuthenticationHandler(impl::make_delegate<impl_PerceptionStartFaceAuthenticationHandler<L>, PerceptionStartFaceAuthenticationHandler>(std::forward<L>(lambda)))
{}

template <typename F> PerceptionStartFaceAuthenticationHandler::PerceptionStartFaceAuthenticationHandler(F * function) :
    PerceptionStartFaceAuthenticationHandler([=](auto && ... args) { return function(args ...); })
{}

template <typename O, typename M> PerceptionStartFaceAuthenticationHandler::PerceptionStartFaceAuthenticationHandler(O * object, M method) :
    PerceptionStartFaceAuthenticationHandler([=](auto && ... args) { return ((*object).*(method))(args ...); })
{}

inline bool PerceptionStartFaceAuthenticationHandler::operator()(const Windows::Devices::Perception::Provider::PerceptionFaceAuthenticationGroup & sender) const
{
    bool result {};
    check_hresult((*this)->abi_Invoke(get(sender), &result));
    return result;
}

template <typename L> PerceptionStopFaceAuthenticationHandler::PerceptionStopFaceAuthenticationHandler(L lambda) :
    PerceptionStopFaceAuthenticationHandler(impl::make_delegate<impl_PerceptionStopFaceAuthenticationHandler<L>, PerceptionStopFaceAuthenticationHandler>(std::forward<L>(lambda)))
{}

template <typename F> PerceptionStopFaceAuthenticationHandler::PerceptionStopFaceAuthenticationHandler(F * function) :
    PerceptionStopFaceAuthenticationHandler([=](auto && ... args) { function(args ...); })
{}

template <typename O, typename M> PerceptionStopFaceAuthenticationHandler::PerceptionStopFaceAuthenticationHandler(O * object, M method) :
    PerceptionStopFaceAuthenticationHandler([=](auto && ... args) { ((*object).*(method))(args ...); })
{}

inline void PerceptionStopFaceAuthenticationHandler::operator()(const Windows::Devices::Perception::Provider::PerceptionFaceAuthenticationGroup & sender) const
{
    check_hresult((*this)->abi_Invoke(get(sender)));
}

}

namespace impl {

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IKnownPerceptionFrameKindStatics> : produce_base<D, Windows::Devices::Perception::Provider::IKnownPerceptionFrameKindStatics>
{
    HRESULT __stdcall get_Color(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Color());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Depth(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Depth());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Infrared(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Infrared());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionControlGroup> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionControlGroup>
{
    HRESULT __stdcall get_FrameProviderIds(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FrameProviderIds());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionControlGroupFactory> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionControlGroupFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<Windows::Foundation::Collections::IIterable<hstring>> ids, abi_arg_out<Windows::Devices::Perception::Provider::IPerceptionControlGroup> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().Create(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<hstring> *>(&ids)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionCorrelation> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionCorrelation>
{
    HRESULT __stdcall get_TargetId(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().TargetId());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Position(abi_arg_out<Windows::Foundation::Numerics::float3> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Position());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Orientation(abi_arg_out<Windows::Foundation::Numerics::quaternion> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Orientation());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionCorrelationFactory> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionCorrelationFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<hstring> targetId, abi_arg_in<Windows::Foundation::Numerics::float3> position, abi_arg_in<Windows::Foundation::Numerics::quaternion> orientation, abi_arg_out<Windows::Devices::Perception::Provider::IPerceptionCorrelation> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().Create(*reinterpret_cast<const hstring *>(&targetId), *reinterpret_cast<const Windows::Foundation::Numerics::float3 *>(&position), *reinterpret_cast<const Windows::Foundation::Numerics::quaternion *>(&orientation)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionCorrelationGroup> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionCorrelationGroup>
{
    HRESULT __stdcall get_RelativeLocations(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Perception::Provider::PerceptionCorrelation>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RelativeLocations());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionCorrelationGroupFactory> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionCorrelationGroupFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<Windows::Foundation::Collections::IIterable<Windows::Devices::Perception::Provider::PerceptionCorrelation>> relativeLocations, abi_arg_out<Windows::Devices::Perception::Provider::IPerceptionCorrelationGroup> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().Create(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<Windows::Devices::Perception::Provider::PerceptionCorrelation> *>(&relativeLocations)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionFaceAuthenticationGroup> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionFaceAuthenticationGroup>
{
    HRESULT __stdcall get_FrameProviderIds(abi_arg_out<Windows::Foundation::Collections::IVectorView<hstring>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FrameProviderIds());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionFaceAuthenticationGroupFactory> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionFaceAuthenticationGroupFactory>
{
    HRESULT __stdcall abi_Create(abi_arg_in<Windows::Foundation::Collections::IIterable<hstring>> ids, abi_arg_in<Windows::Devices::Perception::Provider::PerceptionStartFaceAuthenticationHandler> startHandler, abi_arg_in<Windows::Devices::Perception::Provider::PerceptionStopFaceAuthenticationHandler> stopHandler, abi_arg_out<Windows::Devices::Perception::Provider::IPerceptionFaceAuthenticationGroup> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().Create(*reinterpret_cast<const Windows::Foundation::Collections::IIterable<hstring> *>(&ids), *reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionStartFaceAuthenticationHandler *>(&startHandler), *reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionStopFaceAuthenticationHandler *>(&stopHandler)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionFrame> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionFrame>
{
    HRESULT __stdcall get_RelativeTime(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RelativeTime());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_RelativeTime(abi_arg_in<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            this->shim().RelativeTime(*reinterpret_cast<const Windows::Foundation::TimeSpan *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Properties(abi_arg_out<Windows::Foundation::Collections::IPropertySet> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Properties());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FrameData(abi_arg_out<Windows::Foundation::IMemoryBuffer> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FrameData());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionFrameProvider> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionFrameProvider>
{
    HRESULT __stdcall get_FrameProviderInfo(abi_arg_out<Windows::Devices::Perception::Provider::IPerceptionFrameProviderInfo> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().FrameProviderInfo());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Available(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Available());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Properties(abi_arg_out<Windows::Foundation::Collections::IPropertySet> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Properties());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Start() noexcept override
    {
        try
        {
            this->shim().Start();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Stop() noexcept override
    {
        try
        {
            this->shim().Stop();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SetProperty(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionPropertyChangeRequest> value) noexcept override
    {
        try
        {
            this->shim().SetProperty(*reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionPropertyChangeRequest *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionFrameProviderInfo> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionFrameProviderInfo>
{
    HRESULT __stdcall get_Id(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Id());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Id(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().Id(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DisplayName(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DisplayName());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DisplayName(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().DisplayName(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DeviceKind(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DeviceKind());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_DeviceKind(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().DeviceKind(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_FrameKind(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().FrameKind());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_FrameKind(abi_arg_in<hstring> value) noexcept override
    {
        try
        {
            this->shim().FrameKind(*reinterpret_cast<const hstring *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Hidden(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Hidden());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Hidden(bool value) noexcept override
    {
        try
        {
            this->shim().Hidden(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager>
{
    HRESULT __stdcall abi_GetFrameProvider(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProviderInfo> frameProviderInfo, abi_arg_out<Windows::Devices::Perception::Provider::IPerceptionFrameProvider> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetFrameProvider(*reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionFrameProviderInfo *>(&frameProviderInfo)));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionFrameProviderManagerServiceStatics> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionFrameProviderManagerServiceStatics>
{
    HRESULT __stdcall abi_RegisterFrameProviderInfo(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager> manager, abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProviderInfo> frameProviderInfo) noexcept override
    {
        try
        {
            this->shim().RegisterFrameProviderInfo(*reinterpret_cast<const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager *>(&manager), *reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionFrameProviderInfo *>(&frameProviderInfo));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UnregisterFrameProviderInfo(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager> manager, abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProviderInfo> frameProviderInfo) noexcept override
    {
        try
        {
            this->shim().UnregisterFrameProviderInfo(*reinterpret_cast<const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager *>(&manager), *reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionFrameProviderInfo *>(&frameProviderInfo));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RegisterFaceAuthenticationGroup(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager> manager, abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFaceAuthenticationGroup> faceAuthenticationGroup) noexcept override
    {
        try
        {
            this->shim().RegisterFaceAuthenticationGroup(*reinterpret_cast<const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager *>(&manager), *reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionFaceAuthenticationGroup *>(&faceAuthenticationGroup));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UnregisterFaceAuthenticationGroup(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager> manager, abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFaceAuthenticationGroup> faceAuthenticationGroup) noexcept override
    {
        try
        {
            this->shim().UnregisterFaceAuthenticationGroup(*reinterpret_cast<const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager *>(&manager), *reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionFaceAuthenticationGroup *>(&faceAuthenticationGroup));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RegisterControlGroup(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager> manager, abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionControlGroup> controlGroup) noexcept override
    {
        try
        {
            this->shim().RegisterControlGroup(*reinterpret_cast<const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager *>(&manager), *reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionControlGroup *>(&controlGroup));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UnregisterControlGroup(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager> manager, abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionControlGroup> controlGroup) noexcept override
    {
        try
        {
            this->shim().UnregisterControlGroup(*reinterpret_cast<const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager *>(&manager), *reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionControlGroup *>(&controlGroup));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_RegisterCorrelationGroup(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager> manager, abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionCorrelationGroup> correlationGroup) noexcept override
    {
        try
        {
            this->shim().RegisterCorrelationGroup(*reinterpret_cast<const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager *>(&manager), *reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionCorrelationGroup *>(&correlationGroup));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UnregisterCorrelationGroup(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager> manager, abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionCorrelationGroup> correlationGroup) noexcept override
    {
        try
        {
            this->shim().UnregisterCorrelationGroup(*reinterpret_cast<const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager *>(&manager), *reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionCorrelationGroup *>(&correlationGroup));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_UpdateAvailabilityForProvider(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProvider> provider, bool available) noexcept override
    {
        try
        {
            this->shim().UpdateAvailabilityForProvider(*reinterpret_cast<const Windows::Devices::Perception::Provider::IPerceptionFrameProvider *>(&provider), available);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_PublishFrameForProvider(abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrameProvider> provider, abi_arg_in<Windows::Devices::Perception::Provider::IPerceptionFrame> frame) noexcept override
    {
        try
        {
            this->shim().PublishFrameForProvider(*reinterpret_cast<const Windows::Devices::Perception::Provider::IPerceptionFrameProvider *>(&provider), *reinterpret_cast<const Windows::Devices::Perception::Provider::PerceptionFrame *>(&frame));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionPropertyChangeRequest> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionPropertyChangeRequest>
{
    HRESULT __stdcall get_Name(abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Name());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(abi_arg_out<Windows::IInspectable> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Status(Windows::Devices::Perception::PerceptionFrameSourcePropertyChangeStatus * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Status());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Status(Windows::Devices::Perception::PerceptionFrameSourcePropertyChangeStatus value) noexcept override
    {
        try
        {
            this->shim().Status(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeferral(abi_arg_out<Windows::Foundation::IDeferral> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().GetDeferral());
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionVideoFrameAllocator> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionVideoFrameAllocator>
{
    HRESULT __stdcall abi_AllocateFrame(abi_arg_out<Windows::Devices::Perception::Provider::IPerceptionFrame> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AllocateFrame());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_CopyFromVideoFrame(abi_arg_in<Windows::Media::IVideoFrame> frame, abi_arg_out<Windows::Devices::Perception::Provider::IPerceptionFrame> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CopyFromVideoFrame(*reinterpret_cast<const Windows::Media::VideoFrame *>(&frame)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Perception::Provider::IPerceptionVideoFrameAllocatorFactory> : produce_base<D, Windows::Devices::Perception::Provider::IPerceptionVideoFrameAllocatorFactory>
{
    HRESULT __stdcall abi_Create(uint32_t maxOutstandingFrameCountForWrite, Windows::Graphics::Imaging::BitmapPixelFormat format, abi_arg_in<Windows::Foundation::Size> resolution, Windows::Graphics::Imaging::BitmapAlphaMode alpha, abi_arg_out<Windows::Devices::Perception::Provider::IPerceptionVideoFrameAllocator> result) noexcept override
    {
        try
        {
            *result = detach(this->shim().Create(maxOutstandingFrameCountForWrite, format, *reinterpret_cast<const Windows::Foundation::Size *>(&resolution), alpha));
            return S_OK;
        }
        catch (...)
        {
            *result = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Devices::Perception::Provider {

template <typename D> hstring impl_IKnownPerceptionFrameKindStatics<D>::Color() const
{
    hstring value;
    check_hresult(static_cast<const IKnownPerceptionFrameKindStatics &>(static_cast<const D &>(*this))->get_Color(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownPerceptionFrameKindStatics<D>::Depth() const
{
    hstring value;
    check_hresult(static_cast<const IKnownPerceptionFrameKindStatics &>(static_cast<const D &>(*this))->get_Depth(put(value)));
    return value;
}

template <typename D> hstring impl_IKnownPerceptionFrameKindStatics<D>::Infrared() const
{
    hstring value;
    check_hresult(static_cast<const IKnownPerceptionFrameKindStatics &>(static_cast<const D &>(*this))->get_Infrared(put(value)));
    return value;
}

template <typename D> void impl_IPerceptionFrameProviderManagerServiceStatics<D>::RegisterFrameProviderInfo(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionFrameProviderInfo & frameProviderInfo) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderManagerServiceStatics &>(static_cast<const D &>(*this))->abi_RegisterFrameProviderInfo(get(manager), get(frameProviderInfo)));
}

template <typename D> void impl_IPerceptionFrameProviderManagerServiceStatics<D>::UnregisterFrameProviderInfo(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionFrameProviderInfo & frameProviderInfo) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderManagerServiceStatics &>(static_cast<const D &>(*this))->abi_UnregisterFrameProviderInfo(get(manager), get(frameProviderInfo)));
}

template <typename D> void impl_IPerceptionFrameProviderManagerServiceStatics<D>::RegisterFaceAuthenticationGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionFaceAuthenticationGroup & faceAuthenticationGroup) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderManagerServiceStatics &>(static_cast<const D &>(*this))->abi_RegisterFaceAuthenticationGroup(get(manager), get(faceAuthenticationGroup)));
}

template <typename D> void impl_IPerceptionFrameProviderManagerServiceStatics<D>::UnregisterFaceAuthenticationGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionFaceAuthenticationGroup & faceAuthenticationGroup) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderManagerServiceStatics &>(static_cast<const D &>(*this))->abi_UnregisterFaceAuthenticationGroup(get(manager), get(faceAuthenticationGroup)));
}

template <typename D> void impl_IPerceptionFrameProviderManagerServiceStatics<D>::RegisterControlGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionControlGroup & controlGroup) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderManagerServiceStatics &>(static_cast<const D &>(*this))->abi_RegisterControlGroup(get(manager), get(controlGroup)));
}

template <typename D> void impl_IPerceptionFrameProviderManagerServiceStatics<D>::UnregisterControlGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionControlGroup & controlGroup) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderManagerServiceStatics &>(static_cast<const D &>(*this))->abi_UnregisterControlGroup(get(manager), get(controlGroup)));
}

template <typename D> void impl_IPerceptionFrameProviderManagerServiceStatics<D>::RegisterCorrelationGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionCorrelationGroup & correlationGroup) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderManagerServiceStatics &>(static_cast<const D &>(*this))->abi_RegisterCorrelationGroup(get(manager), get(correlationGroup)));
}

template <typename D> void impl_IPerceptionFrameProviderManagerServiceStatics<D>::UnregisterCorrelationGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionCorrelationGroup & correlationGroup) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderManagerServiceStatics &>(static_cast<const D &>(*this))->abi_UnregisterCorrelationGroup(get(manager), get(correlationGroup)));
}

template <typename D> void impl_IPerceptionFrameProviderManagerServiceStatics<D>::UpdateAvailabilityForProvider(const Windows::Devices::Perception::Provider::IPerceptionFrameProvider & provider, bool available) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderManagerServiceStatics &>(static_cast<const D &>(*this))->abi_UpdateAvailabilityForProvider(get(provider), available));
}

template <typename D> void impl_IPerceptionFrameProviderManagerServiceStatics<D>::PublishFrameForProvider(const Windows::Devices::Perception::Provider::IPerceptionFrameProvider & provider, const Windows::Devices::Perception::Provider::PerceptionFrame & frame) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderManagerServiceStatics &>(static_cast<const D &>(*this))->abi_PublishFrameForProvider(get(provider), get(frame)));
}

template <typename D> hstring impl_IPerceptionFrameProviderInfo<D>::Id() const
{
    hstring value;
    check_hresult(static_cast<const IPerceptionFrameProviderInfo &>(static_cast<const D &>(*this))->get_Id(put(value)));
    return value;
}

template <typename D> void impl_IPerceptionFrameProviderInfo<D>::Id(hstring_ref value) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderInfo &>(static_cast<const D &>(*this))->put_Id(get(value)));
}

template <typename D> hstring impl_IPerceptionFrameProviderInfo<D>::DisplayName() const
{
    hstring value;
    check_hresult(static_cast<const IPerceptionFrameProviderInfo &>(static_cast<const D &>(*this))->get_DisplayName(put(value)));
    return value;
}

template <typename D> void impl_IPerceptionFrameProviderInfo<D>::DisplayName(hstring_ref value) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderInfo &>(static_cast<const D &>(*this))->put_DisplayName(get(value)));
}

template <typename D> hstring impl_IPerceptionFrameProviderInfo<D>::DeviceKind() const
{
    hstring value;
    check_hresult(static_cast<const IPerceptionFrameProviderInfo &>(static_cast<const D &>(*this))->get_DeviceKind(put(value)));
    return value;
}

template <typename D> void impl_IPerceptionFrameProviderInfo<D>::DeviceKind(hstring_ref value) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderInfo &>(static_cast<const D &>(*this))->put_DeviceKind(get(value)));
}

template <typename D> hstring impl_IPerceptionFrameProviderInfo<D>::FrameKind() const
{
    hstring value;
    check_hresult(static_cast<const IPerceptionFrameProviderInfo &>(static_cast<const D &>(*this))->get_FrameKind(put(value)));
    return value;
}

template <typename D> void impl_IPerceptionFrameProviderInfo<D>::FrameKind(hstring_ref value) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderInfo &>(static_cast<const D &>(*this))->put_FrameKind(get(value)));
}

template <typename D> bool impl_IPerceptionFrameProviderInfo<D>::Hidden() const
{
    bool value {};
    check_hresult(static_cast<const IPerceptionFrameProviderInfo &>(static_cast<const D &>(*this))->get_Hidden(&value));
    return value;
}

template <typename D> void impl_IPerceptionFrameProviderInfo<D>::Hidden(bool value) const
{
    check_hresult(static_cast<const IPerceptionFrameProviderInfo &>(static_cast<const D &>(*this))->put_Hidden(value));
}

template <typename D> Windows::Devices::Perception::Provider::PerceptionControlGroup impl_IPerceptionControlGroupFactory<D>::Create(const Windows::Foundation::Collections::IIterable<hstring> & ids) const
{
    Windows::Devices::Perception::Provider::PerceptionControlGroup result { nullptr };
    check_hresult(static_cast<const IPerceptionControlGroupFactory &>(static_cast<const D &>(*this))->abi_Create(get(ids), put(result)));
    return result;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_IPerceptionControlGroup<D>::FrameProviderIds() const
{
    Windows::Foundation::Collections::IVectorView<hstring> value;
    check_hresult(static_cast<const IPerceptionControlGroup &>(static_cast<const D &>(*this))->get_FrameProviderIds(put(value)));
    return value;
}

template <typename D> Windows::Devices::Perception::Provider::PerceptionFaceAuthenticationGroup impl_IPerceptionFaceAuthenticationGroupFactory<D>::Create(const Windows::Foundation::Collections::IIterable<hstring> & ids, const Windows::Devices::Perception::Provider::PerceptionStartFaceAuthenticationHandler & startHandler, const Windows::Devices::Perception::Provider::PerceptionStopFaceAuthenticationHandler & stopHandler) const
{
    Windows::Devices::Perception::Provider::PerceptionFaceAuthenticationGroup result { nullptr };
    check_hresult(static_cast<const IPerceptionFaceAuthenticationGroupFactory &>(static_cast<const D &>(*this))->abi_Create(get(ids), get(startHandler), get(stopHandler), put(result)));
    return result;
}

template <typename D> Windows::Foundation::Collections::IVectorView<hstring> impl_IPerceptionFaceAuthenticationGroup<D>::FrameProviderIds() const
{
    Windows::Foundation::Collections::IVectorView<hstring> value;
    check_hresult(static_cast<const IPerceptionFaceAuthenticationGroup &>(static_cast<const D &>(*this))->get_FrameProviderIds(put(value)));
    return value;
}

template <typename D> Windows::Devices::Perception::Provider::PerceptionCorrelation impl_IPerceptionCorrelationFactory<D>::Create(hstring_ref targetId, const Windows::Foundation::Numerics::float3 & position, const Windows::Foundation::Numerics::quaternion & orientation) const
{
    Windows::Devices::Perception::Provider::PerceptionCorrelation result { nullptr };
    check_hresult(static_cast<const IPerceptionCorrelationFactory &>(static_cast<const D &>(*this))->abi_Create(get(targetId), get(position), get(orientation), put(result)));
    return result;
}

template <typename D> hstring impl_IPerceptionCorrelation<D>::TargetId() const
{
    hstring value;
    check_hresult(static_cast<const IPerceptionCorrelation &>(static_cast<const D &>(*this))->get_TargetId(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Numerics::float3 impl_IPerceptionCorrelation<D>::Position() const
{
    Windows::Foundation::Numerics::float3 value {};
    check_hresult(static_cast<const IPerceptionCorrelation &>(static_cast<const D &>(*this))->get_Position(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Numerics::quaternion impl_IPerceptionCorrelation<D>::Orientation() const
{
    Windows::Foundation::Numerics::quaternion value {};
    check_hresult(static_cast<const IPerceptionCorrelation &>(static_cast<const D &>(*this))->get_Orientation(put(value)));
    return value;
}

template <typename D> Windows::Devices::Perception::Provider::PerceptionCorrelationGroup impl_IPerceptionCorrelationGroupFactory<D>::Create(const Windows::Foundation::Collections::IIterable<Windows::Devices::Perception::Provider::PerceptionCorrelation> & relativeLocations) const
{
    Windows::Devices::Perception::Provider::PerceptionCorrelationGroup result { nullptr };
    check_hresult(static_cast<const IPerceptionCorrelationGroupFactory &>(static_cast<const D &>(*this))->abi_Create(get(relativeLocations), put(result)));
    return result;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Perception::Provider::PerceptionCorrelation> impl_IPerceptionCorrelationGroup<D>::RelativeLocations() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Perception::Provider::PerceptionCorrelation> value;
    check_hresult(static_cast<const IPerceptionCorrelationGroup &>(static_cast<const D &>(*this))->get_RelativeLocations(put(value)));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_IPerceptionFrame<D>::RelativeTime() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IPerceptionFrame &>(static_cast<const D &>(*this))->get_RelativeTime(put(value)));
    return value;
}

template <typename D> void impl_IPerceptionFrame<D>::RelativeTime(const Windows::Foundation::TimeSpan & value) const
{
    check_hresult(static_cast<const IPerceptionFrame &>(static_cast<const D &>(*this))->put_RelativeTime(get(value)));
}

template <typename D> Windows::Foundation::Collections::ValueSet impl_IPerceptionFrame<D>::Properties() const
{
    Windows::Foundation::Collections::ValueSet value { nullptr };
    check_hresult(static_cast<const IPerceptionFrame &>(static_cast<const D &>(*this))->get_Properties(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IMemoryBuffer impl_IPerceptionFrame<D>::FrameData() const
{
    Windows::Foundation::IMemoryBuffer value;
    check_hresult(static_cast<const IPerceptionFrame &>(static_cast<const D &>(*this))->get_FrameData(put(value)));
    return value;
}

template <typename D> Windows::Devices::Perception::Provider::PerceptionVideoFrameAllocator impl_IPerceptionVideoFrameAllocatorFactory<D>::Create(uint32_t maxOutstandingFrameCountForWrite, Windows::Graphics::Imaging::BitmapPixelFormat format, const Windows::Foundation::Size & resolution, Windows::Graphics::Imaging::BitmapAlphaMode alpha) const
{
    Windows::Devices::Perception::Provider::PerceptionVideoFrameAllocator result { nullptr };
    check_hresult(static_cast<const IPerceptionVideoFrameAllocatorFactory &>(static_cast<const D &>(*this))->abi_Create(maxOutstandingFrameCountForWrite, format, get(resolution), alpha, put(result)));
    return result;
}

template <typename D> hstring impl_IPerceptionPropertyChangeRequest<D>::Name() const
{
    hstring value;
    check_hresult(static_cast<const IPerceptionPropertyChangeRequest &>(static_cast<const D &>(*this))->get_Name(put(value)));
    return value;
}

template <typename D> Windows::IInspectable impl_IPerceptionPropertyChangeRequest<D>::Value() const
{
    Windows::IInspectable value;
    check_hresult(static_cast<const IPerceptionPropertyChangeRequest &>(static_cast<const D &>(*this))->get_Value(put(value)));
    return value;
}

template <typename D> Windows::Devices::Perception::PerceptionFrameSourcePropertyChangeStatus impl_IPerceptionPropertyChangeRequest<D>::Status() const
{
    Windows::Devices::Perception::PerceptionFrameSourcePropertyChangeStatus value {};
    check_hresult(static_cast<const IPerceptionPropertyChangeRequest &>(static_cast<const D &>(*this))->get_Status(&value));
    return value;
}

template <typename D> void impl_IPerceptionPropertyChangeRequest<D>::Status(Windows::Devices::Perception::PerceptionFrameSourcePropertyChangeStatus value) const
{
    check_hresult(static_cast<const IPerceptionPropertyChangeRequest &>(static_cast<const D &>(*this))->put_Status(value));
}

template <typename D> Windows::Foundation::Deferral impl_IPerceptionPropertyChangeRequest<D>::GetDeferral() const
{
    Windows::Foundation::Deferral result { nullptr };
    check_hresult(static_cast<const IPerceptionPropertyChangeRequest &>(static_cast<const D &>(*this))->abi_GetDeferral(put(result)));
    return result;
}

template <typename D> Windows::Devices::Perception::Provider::IPerceptionFrameProvider impl_IPerceptionFrameProviderManager<D>::GetFrameProvider(const Windows::Devices::Perception::Provider::PerceptionFrameProviderInfo & frameProviderInfo) const
{
    Windows::Devices::Perception::Provider::IPerceptionFrameProvider result;
    check_hresult(static_cast<const IPerceptionFrameProviderManager &>(static_cast<const D &>(*this))->abi_GetFrameProvider(get(frameProviderInfo), put(result)));
    return result;
}

template <typename D> Windows::Devices::Perception::Provider::PerceptionFrameProviderInfo impl_IPerceptionFrameProvider<D>::FrameProviderInfo() const
{
    Windows::Devices::Perception::Provider::PerceptionFrameProviderInfo result { nullptr };
    check_hresult(static_cast<const IPerceptionFrameProvider &>(static_cast<const D &>(*this))->get_FrameProviderInfo(put(result)));
    return result;
}

template <typename D> bool impl_IPerceptionFrameProvider<D>::Available() const
{
    bool value {};
    check_hresult(static_cast<const IPerceptionFrameProvider &>(static_cast<const D &>(*this))->get_Available(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IPropertySet impl_IPerceptionFrameProvider<D>::Properties() const
{
    Windows::Foundation::Collections::IPropertySet value;
    check_hresult(static_cast<const IPerceptionFrameProvider &>(static_cast<const D &>(*this))->get_Properties(put(value)));
    return value;
}

template <typename D> void impl_IPerceptionFrameProvider<D>::Start() const
{
    check_hresult(static_cast<const IPerceptionFrameProvider &>(static_cast<const D &>(*this))->abi_Start());
}

template <typename D> void impl_IPerceptionFrameProvider<D>::Stop() const
{
    check_hresult(static_cast<const IPerceptionFrameProvider &>(static_cast<const D &>(*this))->abi_Stop());
}

template <typename D> void impl_IPerceptionFrameProvider<D>::SetProperty(const Windows::Devices::Perception::Provider::PerceptionPropertyChangeRequest & value) const
{
    check_hresult(static_cast<const IPerceptionFrameProvider &>(static_cast<const D &>(*this))->abi_SetProperty(get(value)));
}

template <typename D> Windows::Devices::Perception::Provider::PerceptionFrame impl_IPerceptionVideoFrameAllocator<D>::AllocateFrame() const
{
    Windows::Devices::Perception::Provider::PerceptionFrame value { nullptr };
    check_hresult(static_cast<const IPerceptionVideoFrameAllocator &>(static_cast<const D &>(*this))->abi_AllocateFrame(put(value)));
    return value;
}

template <typename D> Windows::Devices::Perception::Provider::PerceptionFrame impl_IPerceptionVideoFrameAllocator<D>::CopyFromVideoFrame(const Windows::Media::VideoFrame & frame) const
{
    Windows::Devices::Perception::Provider::PerceptionFrame value { nullptr };
    check_hresult(static_cast<const IPerceptionVideoFrameAllocator &>(static_cast<const D &>(*this))->abi_CopyFromVideoFrame(get(frame), put(value)));
    return value;
}

inline hstring KnownPerceptionFrameKind::Color()
{
    return get_activation_factory<KnownPerceptionFrameKind, IKnownPerceptionFrameKindStatics>().Color();
}

inline hstring KnownPerceptionFrameKind::Depth()
{
    return get_activation_factory<KnownPerceptionFrameKind, IKnownPerceptionFrameKindStatics>().Depth();
}

inline hstring KnownPerceptionFrameKind::Infrared()
{
    return get_activation_factory<KnownPerceptionFrameKind, IKnownPerceptionFrameKindStatics>().Infrared();
}

inline PerceptionControlGroup::PerceptionControlGroup(const Windows::Foundation::Collections::IIterable<hstring> & ids) :
    PerceptionControlGroup(get_activation_factory<PerceptionControlGroup, IPerceptionControlGroupFactory>().Create(ids))
{}

inline PerceptionCorrelation::PerceptionCorrelation(hstring_ref targetId, const Windows::Foundation::Numerics::float3 & position, const Windows::Foundation::Numerics::quaternion & orientation) :
    PerceptionCorrelation(get_activation_factory<PerceptionCorrelation, IPerceptionCorrelationFactory>().Create(targetId, position, orientation))
{}

inline PerceptionCorrelationGroup::PerceptionCorrelationGroup(const Windows::Foundation::Collections::IIterable<Windows::Devices::Perception::Provider::PerceptionCorrelation> & relativeLocations) :
    PerceptionCorrelationGroup(get_activation_factory<PerceptionCorrelationGroup, IPerceptionCorrelationGroupFactory>().Create(relativeLocations))
{}

inline PerceptionFaceAuthenticationGroup::PerceptionFaceAuthenticationGroup(const Windows::Foundation::Collections::IIterable<hstring> & ids, const Windows::Devices::Perception::Provider::PerceptionStartFaceAuthenticationHandler & startHandler, const Windows::Devices::Perception::Provider::PerceptionStopFaceAuthenticationHandler & stopHandler) :
    PerceptionFaceAuthenticationGroup(get_activation_factory<PerceptionFaceAuthenticationGroup, IPerceptionFaceAuthenticationGroupFactory>().Create(ids, startHandler, stopHandler))
{}

inline PerceptionFrameProviderInfo::PerceptionFrameProviderInfo() :
    PerceptionFrameProviderInfo(activate_instance<PerceptionFrameProviderInfo>())
{}

inline void PerceptionFrameProviderManagerService::RegisterFrameProviderInfo(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionFrameProviderInfo & frameProviderInfo)
{
    get_activation_factory<PerceptionFrameProviderManagerService, IPerceptionFrameProviderManagerServiceStatics>().RegisterFrameProviderInfo(manager, frameProviderInfo);
}

inline void PerceptionFrameProviderManagerService::UnregisterFrameProviderInfo(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionFrameProviderInfo & frameProviderInfo)
{
    get_activation_factory<PerceptionFrameProviderManagerService, IPerceptionFrameProviderManagerServiceStatics>().UnregisterFrameProviderInfo(manager, frameProviderInfo);
}

inline void PerceptionFrameProviderManagerService::RegisterFaceAuthenticationGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionFaceAuthenticationGroup & faceAuthenticationGroup)
{
    get_activation_factory<PerceptionFrameProviderManagerService, IPerceptionFrameProviderManagerServiceStatics>().RegisterFaceAuthenticationGroup(manager, faceAuthenticationGroup);
}

inline void PerceptionFrameProviderManagerService::UnregisterFaceAuthenticationGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionFaceAuthenticationGroup & faceAuthenticationGroup)
{
    get_activation_factory<PerceptionFrameProviderManagerService, IPerceptionFrameProviderManagerServiceStatics>().UnregisterFaceAuthenticationGroup(manager, faceAuthenticationGroup);
}

inline void PerceptionFrameProviderManagerService::RegisterControlGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionControlGroup & controlGroup)
{
    get_activation_factory<PerceptionFrameProviderManagerService, IPerceptionFrameProviderManagerServiceStatics>().RegisterControlGroup(manager, controlGroup);
}

inline void PerceptionFrameProviderManagerService::UnregisterControlGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionControlGroup & controlGroup)
{
    get_activation_factory<PerceptionFrameProviderManagerService, IPerceptionFrameProviderManagerServiceStatics>().UnregisterControlGroup(manager, controlGroup);
}

inline void PerceptionFrameProviderManagerService::RegisterCorrelationGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionCorrelationGroup & correlationGroup)
{
    get_activation_factory<PerceptionFrameProviderManagerService, IPerceptionFrameProviderManagerServiceStatics>().RegisterCorrelationGroup(manager, correlationGroup);
}

inline void PerceptionFrameProviderManagerService::UnregisterCorrelationGroup(const Windows::Devices::Perception::Provider::IPerceptionFrameProviderManager & manager, const Windows::Devices::Perception::Provider::PerceptionCorrelationGroup & correlationGroup)
{
    get_activation_factory<PerceptionFrameProviderManagerService, IPerceptionFrameProviderManagerServiceStatics>().UnregisterCorrelationGroup(manager, correlationGroup);
}

inline void PerceptionFrameProviderManagerService::UpdateAvailabilityForProvider(const Windows::Devices::Perception::Provider::IPerceptionFrameProvider & provider, bool available)
{
    get_activation_factory<PerceptionFrameProviderManagerService, IPerceptionFrameProviderManagerServiceStatics>().UpdateAvailabilityForProvider(provider, available);
}

inline void PerceptionFrameProviderManagerService::PublishFrameForProvider(const Windows::Devices::Perception::Provider::IPerceptionFrameProvider & provider, const Windows::Devices::Perception::Provider::PerceptionFrame & frame)
{
    get_activation_factory<PerceptionFrameProviderManagerService, IPerceptionFrameProviderManagerServiceStatics>().PublishFrameForProvider(provider, frame);
}

inline PerceptionVideoFrameAllocator::PerceptionVideoFrameAllocator(uint32_t maxOutstandingFrameCountForWrite, Windows::Graphics::Imaging::BitmapPixelFormat format, const Windows::Foundation::Size & resolution, Windows::Graphics::Imaging::BitmapAlphaMode alpha) :
    PerceptionVideoFrameAllocator(get_activation_factory<PerceptionVideoFrameAllocator, IPerceptionVideoFrameAllocatorFactory>().Create(maxOutstandingFrameCountForWrite, format, resolution, alpha))
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Printing.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Xaml::Printing {

struct AddPagesEventHandler;
struct GetPreviewPageEventHandler;
struct IAddPagesEventArgs;
struct IGetPreviewPageEventArgs;
struct IPaginateEventArgs;
struct IPrintDocument;
struct IPrintDocumentFactory;
struct IPrintDocumentStatics;
struct PaginateEventHandler;
struct AddPagesEventArgs;
struct GetPreviewPageEventArgs;
struct PaginateEventArgs;
struct PrintDocument;

}

namespace Windows::UI::Xaml::Printing {

struct AddPagesEventHandler;
struct GetPreviewPageEventHandler;
struct PaginateEventHandler;
struct IAddPagesEventArgs;
struct IGetPreviewPageEventArgs;
struct IPaginateEventArgs;
struct IPrintDocument;
struct IPrintDocumentFactory;
struct IPrintDocumentStatics;
struct AddPagesEventArgs;
struct GetPreviewPageEventArgs;
struct PaginateEventArgs;
struct PrintDocument;

}

namespace Windows::UI::Xaml::Printing {

enum class PreviewPageCountType
{
    Final = 0,
    Intermediate = 1,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Services.Maps.LocalSearch.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Services::Maps::LocalSearch {

struct ILocalCategoriesStatics;
struct ILocalLocation;
struct ILocalLocation2;
struct ILocalLocationFinderResult;
struct ILocalLocationFinderStatics;
struct ILocalLocationHoursOfOperationItem;
struct ILocalLocationRatingInfo;
struct LocalLocation;
struct LocalLocationFinderResult;
struct LocalLocationHoursOfOperationItem;
struct LocalLocationRatingInfo;

}

namespace Windows::Services::Maps::LocalSearch {

struct ILocalCategoriesStatics;
struct ILocalLocation;
struct ILocalLocation2;
struct ILocalLocationFinderResult;
struct ILocalLocationFinderStatics;
struct ILocalLocationHoursOfOperationItem;
struct ILocalLocationRatingInfo;
struct LocalCategories;
struct LocalLocation;
struct LocalLocationFinder;
struct LocalLocationFinderResult;
struct LocalLocationHoursOfOperationItem;
struct LocalLocationRatingInfo;

}

namespace Windows::Services::Maps::LocalSearch {

enum class LocalLocationFinderStatus
{
    Success = 0,
    UnknownError = 1,
    InvalidCredentials = 2,
    InvalidCategory = 3,
    InvalidSearchTerm = 4,
    InvalidSearchArea = 5,
    NetworkFailure = 6,
    NotSupported = 7,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Phone.System.Power.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Phone.System.Power.3.h"
#include "Windows.Phone.System.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Phone::System::Power::IPowerManagerStatics> : produce_base<D, Windows::Phone::System::Power::IPowerManagerStatics>
{
    HRESULT __stdcall get_PowerSavingMode(Windows::Phone::System::Power::PowerSavingMode * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PowerSavingMode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_PowerSavingModeChanged(abi_arg_in<Windows::Foundation::EventHandler<Windows::IInspectable>> changeHandler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().PowerSavingModeChanged(*reinterpret_cast<const Windows::Foundation::EventHandler<Windows::IInspectable> *>(&changeHandler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_PowerSavingModeChanged(event_token token) noexcept override
    {
        try
        {
            this->shim().PowerSavingModeChanged(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Phone::System::Power::IPowerManagerStatics2> : produce_base<D, Windows::Phone::System::Power::IPowerManagerStatics2>
{
    HRESULT __stdcall get_PowerSavingModeEnabled(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PowerSavingModeEnabled());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Phone::System::Power {

template <typename D> Windows::Phone::System::Power::PowerSavingMode impl_IPowerManagerStatics<D>::PowerSavingMode() const
{
    Windows::Phone::System::Power::PowerSavingMode value {};
    check_hresult(static_cast<const IPowerManagerStatics &>(static_cast<const D &>(*this))->get_PowerSavingMode(&value));
    return value;
}

template <typename D> event_token impl_IPowerManagerStatics<D>::PowerSavingModeChanged(const Windows::Foundation::EventHandler<Windows::IInspectable> & changeHandler) const
{
    event_token token {};
    check_hresult(static_cast<const IPowerManagerStatics &>(static_cast<const D &>(*this))->add_PowerSavingModeChanged(get(changeHandler), &token));
    return token;
}

template <typename D> event_revoker<IPowerManagerStatics> impl_IPowerManagerStatics<D>::PowerSavingModeChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & changeHandler) const
{
    return impl::make_event_revoker<D, IPowerManagerStatics>(this, &ABI::Windows::Phone::System::Power::IPowerManagerStatics::remove_PowerSavingModeChanged, PowerSavingModeChanged(changeHandler));
}

template <typename D> void impl_IPowerManagerStatics<D>::PowerSavingModeChanged(event_token token) const
{
    check_hresult(static_cast<const IPowerManagerStatics &>(static_cast<const D &>(*this))->remove_PowerSavingModeChanged(token));
}

template <typename D> bool impl_IPowerManagerStatics2<D>::PowerSavingModeEnabled() const
{
    bool value {};
    check_hresult(static_cast<const IPowerManagerStatics2 &>(static_cast<const D &>(*this))->get_PowerSavingModeEnabled(&value));
    return value;
}

inline Windows::Phone::System::Power::PowerSavingMode PowerManager::PowerSavingMode()
{
    return get_activation_factory<PowerManager, IPowerManagerStatics>().PowerSavingMode();
}

inline event_token PowerManager::PowerSavingModeChanged(const Windows::Foundation::EventHandler<Windows::IInspectable> & changeHandler)
{
    return get_activation_factory<PowerManager, IPowerManagerStatics>().PowerSavingModeChanged(changeHandler);
}

inline factory_event_revoker<IPowerManagerStatics> PowerManager::PowerSavingModeChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & changeHandler)
{
    auto factory = get_activation_factory<PowerManager, IPowerManagerStatics>();
    return { factory, &ABI::Windows::Phone::System::Power::IPowerManagerStatics::remove_PowerSavingModeChanged, factory.PowerSavingModeChanged(changeHandler) };
}

inline void PowerManager::PowerSavingModeChanged(event_token token)
{
    get_activation_factory<PowerManager, IPowerManagerStatics>().PowerSavingModeChanged(token);
}

inline bool PowerManager::PowerSavingModeEnabled()
{
    return get_activation_factory<PowerManager, IPowerManagerStatics2>().PowerSavingModeEnabled();
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Appointments.AppointmentsProvider.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.ApplicationModel.Appointments.AppointmentsProvider.0.h"
#include "Windows.ApplicationModel.Appointments.0.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::ApplicationModel::Appointments::AppointmentsProvider {

struct __declspec(uuid("ec4a9af3-620d-4c69-add7-9794e918081f")) __declspec(novtable) IAddAppointmentOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AppointmentInformation(Windows::ApplicationModel::Appointments::IAppointment ** value) = 0;
    virtual HRESULT __stdcall get_SourcePackageFamilyName(hstring * value) = 0;
    virtual HRESULT __stdcall abi_ReportCompleted(hstring itemId) = 0;
    virtual HRESULT __stdcall abi_ReportCanceled() = 0;
    virtual HRESULT __stdcall abi_ReportError(hstring value) = 0;
    virtual HRESULT __stdcall abi_DismissUI() = 0;
};

struct __declspec(uuid("36dbba28-9e2e-49c6-8ef7-3ab7a5dcc8b8")) __declspec(novtable) IAppointmentsProviderLaunchActionVerbsStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AddAppointment(hstring * value) = 0;
    virtual HRESULT __stdcall get_ReplaceAppointment(hstring * value) = 0;
    virtual HRESULT __stdcall get_RemoveAppointment(hstring * value) = 0;
    virtual HRESULT __stdcall get_ShowTimeFrame(hstring * value) = 0;
};

struct __declspec(uuid("ef9049a4-af21-473c-88dc-76cd89f60ca5")) __declspec(novtable) IAppointmentsProviderLaunchActionVerbsStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ShowAppointmentDetails(hstring * value) = 0;
};

struct __declspec(uuid("08b66aba-fe33-46cd-a50c-a8ffb3260537")) __declspec(novtable) IRemoveAppointmentOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AppointmentId(hstring * value) = 0;
    virtual HRESULT __stdcall get_InstanceStartDate(Windows::Foundation::IReference<Windows::Foundation::DateTime> ** value) = 0;
    virtual HRESULT __stdcall get_SourcePackageFamilyName(hstring * value) = 0;
    virtual HRESULT __stdcall abi_ReportCompleted() = 0;
    virtual HRESULT __stdcall abi_ReportCanceled() = 0;
    virtual HRESULT __stdcall abi_ReportError(hstring value) = 0;
    virtual HRESULT __stdcall abi_DismissUI() = 0;
};

struct __declspec(uuid("f4903d9b-9e61-4de2-a732-2687c07d1de8")) __declspec(novtable) IReplaceAppointmentOperation : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AppointmentId(hstring * value) = 0;
    virtual HRESULT __stdcall get_AppointmentInformation(Windows::ApplicationModel::Appointments::IAppointment ** value) = 0;
    virtual HRESULT __stdcall get_InstanceStartDate(Windows::Foundation::IReference<Windows::Foundation::DateTime> ** value) = 0;
    virtual HRESULT __stdcall get_SourcePackageFamilyName(hstring * value) = 0;
    virtual HRESULT __stdcall abi_ReportCompleted(hstring itemId) = 0;
    virtual HRESULT __stdcall abi_ReportCanceled() = 0;
    virtual HRESULT __stdcall abi_ReportError(hstring value) = 0;
    virtual HRESULT __stdcall abi_DismissUI() = 0;
};

}

namespace ABI {

template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::AddAppointmentOperation> { using default_interface = Windows::ApplicationModel::Appointments::AppointmentsProvider::IAddAppointmentOperation; };
template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::RemoveAppointmentOperation> { using default_interface = Windows::ApplicationModel::Appointments::AppointmentsProvider::IRemoveAppointmentOperation; };
template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::ReplaceAppointmentOperation> { using default_interface = Windows::ApplicationModel::Appointments::AppointmentsProvider::IReplaceAppointmentOperation; };

}

namespace Windows::ApplicationModel::Appointments::AppointmentsProvider {

template <typename T> struct impl_IAddAppointmentOperation;
template <typename T> struct impl_IAppointmentsProviderLaunchActionVerbsStatics;
template <typename T> struct impl_IAppointmentsProviderLaunchActionVerbsStatics2;
template <typename T> struct impl_IRemoveAppointmentOperation;
template <typename T> struct impl_IReplaceAppointmentOperation;

}

namespace impl {

template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::IAddAppointmentOperation>
{
    using abi = ABI::Windows::ApplicationModel::Appointments::AppointmentsProvider::IAddAppointmentOperation;
    template <typename D> using consume = Windows::ApplicationModel::Appointments::AppointmentsProvider::impl_IAddAppointmentOperation<D>;
};

template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::IAppointmentsProviderLaunchActionVerbsStatics>
{
    using abi = ABI::Windows::ApplicationModel::Appointments::AppointmentsProvider::IAppointmentsProviderLaunchActionVerbsStatics;
    template <typename D> using consume = Windows::ApplicationModel::Appointments::AppointmentsProvider::impl_IAppointmentsProviderLaunchActionVerbsStatics<D>;
};

template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::IAppointmentsProviderLaunchActionVerbsStatics2>
{
    using abi = ABI::Windows::ApplicationModel::Appointments::AppointmentsProvider::IAppointmentsProviderLaunchActionVerbsStatics2;
    template <typename D> using consume = Windows::ApplicationModel::Appointments::AppointmentsProvider::impl_IAppointmentsProviderLaunchActionVerbsStatics2<D>;
};

template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::IRemoveAppointmentOperation>
{
    using abi = ABI::Windows::ApplicationModel::Appointments::AppointmentsProvider::IRemoveAppointmentOperation;
    template <typename D> using consume = Windows::ApplicationModel::Appointments::AppointmentsProvider::impl_IRemoveAppointmentOperation<D>;
};

template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::IReplaceAppointmentOperation>
{
    using abi = ABI::Windows::ApplicationModel::Appointments::AppointmentsProvider::IReplaceAppointmentOperation;
    template <typename D> using consume = Windows::ApplicationModel::Appointments::AppointmentsProvider::impl_IReplaceAppointmentOperation<D>;
};

template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::AddAppointmentOperation>
{
    using abi = ABI::Windows::ApplicationModel::Appointments::AppointmentsProvider::AddAppointmentOperation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Appointments.AppointmentsProvider.AddAppointmentOperation"; }
};

template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::AppointmentsProviderLaunchActionVerbs>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Appointments.AppointmentsProvider.AppointmentsProviderLaunchActionVerbs"; }
};

template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::RemoveAppointmentOperation>
{
    using abi = ABI::Windows::ApplicationModel::Appointments::AppointmentsProvider::RemoveAppointmentOperation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Appointments.AppointmentsProvider.RemoveAppointmentOperation"; }
};

template <> struct traits<Windows::ApplicationModel::Appointments::AppointmentsProvider::ReplaceAppointmentOperation>
{
    using abi = ABI::Windows::ApplicationModel::Appointments::AppointmentsProvider::ReplaceAppointmentOperation;
    static constexpr const wchar_t * name() noexcept { return L"Windows.ApplicationModel.Appointments.AppointmentsProvider.ReplaceAppointmentOperation"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.Devices.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Media.Devices.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Media.Capture.0.h"
#include "Windows.Media.Devices.Core.0.h"
#include "Windows.Media.MediaProperties.0.h"
#include "Windows.Foundation.1.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Media.MediaProperties.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Media::Devices {

struct __declspec(uuid("596f759f-50df-4454-bc63-4d3d01b61958")) __declspec(novtable) CallControlEventHandler : IUnknown
{
    virtual HRESULT __stdcall abi_Invoke(Windows::Media::Devices::ICallControl * sender) = 0;
};

struct __declspec(uuid("5abbffdb-c21f-4bc4-891b-257e28c1b1a4")) __declspec(novtable) DialRequestedEventHandler : IUnknown
{
    virtual HRESULT __stdcall abi_Invoke(Windows::Media::Devices::ICallControl * sender, Windows::Media::Devices::IDialRequestedEventArgs * e) = 0;
};

struct __declspec(uuid("08f3863a-0018-445b-93d2-646d1c5ed05c")) __declspec(novtable) IAdvancedPhotoCaptureSettings : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Mode(winrt::Windows::Media::Devices::AdvancedPhotoMode * value) = 0;
    virtual HRESULT __stdcall put_Mode(winrt::Windows::Media::Devices::AdvancedPhotoMode value) = 0;
};

struct __declspec(uuid("c5b15486-9001-4682-9309-68eae0080eec")) __declspec(novtable) IAdvancedPhotoControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_SupportedModes(Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::AdvancedPhotoMode> ** value) = 0;
    virtual HRESULT __stdcall get_Mode(winrt::Windows::Media::Devices::AdvancedPhotoMode * value) = 0;
    virtual HRESULT __stdcall abi_Configure(Windows::Media::Devices::IAdvancedPhotoCaptureSettings * settings) = 0;
};

struct __declspec(uuid("de6ff4d3-2b96-4583-80ab-b5b01dc6a8d7")) __declspec(novtable) IAdvancedVideoCaptureDeviceController : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_SetDeviceProperty(hstring propertyId, Windows::IInspectable * propertyValue) = 0;
    virtual HRESULT __stdcall abi_GetDeviceProperty(hstring propertyId, Windows::IInspectable ** propertyValue) = 0;
};

struct __declspec(uuid("8bb94f8f-f11a-43db-b402-11930b80ae56")) __declspec(novtable) IAdvancedVideoCaptureDeviceController2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_LowLagPhotoSequence(Windows::Media::Devices::ILowLagPhotoSequenceControl ** value) = 0;
    virtual HRESULT __stdcall get_LowLagPhoto(Windows::Media::Devices::ILowLagPhotoControl ** value) = 0;
    virtual HRESULT __stdcall get_SceneModeControl(Windows::Media::Devices::ISceneModeControl ** value) = 0;
    virtual HRESULT __stdcall get_TorchControl(Windows::Media::Devices::ITorchControl ** value) = 0;
    virtual HRESULT __stdcall get_FlashControl(Windows::Media::Devices::IFlashControl ** value) = 0;
    virtual HRESULT __stdcall get_WhiteBalanceControl(Windows::Media::Devices::IWhiteBalanceControl ** value) = 0;
    virtual HRESULT __stdcall get_ExposureControl(Windows::Media::Devices::IExposureControl ** value) = 0;
    virtual HRESULT __stdcall get_FocusControl(Windows::Media::Devices::IFocusControl ** value) = 0;
    virtual HRESULT __stdcall get_ExposureCompensationControl(Windows::Media::Devices::IExposureCompensationControl ** value) = 0;
    virtual HRESULT __stdcall get_IsoSpeedControl(Windows::Media::Devices::IIsoSpeedControl ** value) = 0;
    virtual HRESULT __stdcall get_RegionsOfInterestControl(Windows::Media::Devices::IRegionsOfInterestControl ** value) = 0;
    virtual HRESULT __stdcall get_PrimaryUse(winrt::Windows::Media::Devices::CaptureUse * value) = 0;
    virtual HRESULT __stdcall put_PrimaryUse(winrt::Windows::Media::Devices::CaptureUse value) = 0;
};

struct __declspec(uuid("a98b8f34-ee0d-470c-b9f0-4229c4bbd089")) __declspec(novtable) IAdvancedVideoCaptureDeviceController3 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_VariablePhotoSequenceController(Windows::Media::Devices::Core::IVariablePhotoSequenceController ** value) = 0;
    virtual HRESULT __stdcall get_PhotoConfirmationControl(Windows::Media::Devices::IPhotoConfirmationControl ** value) = 0;
    virtual HRESULT __stdcall get_ZoomControl(Windows::Media::Devices::IZoomControl ** value) = 0;
};

struct __declspec(uuid("ea9fbfaf-d371-41c3-9a17-824a87ebdfd2")) __declspec(novtable) IAdvancedVideoCaptureDeviceController4 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ExposurePriorityVideoControl(Windows::Media::Devices::IExposurePriorityVideoControl ** value) = 0;
    virtual HRESULT __stdcall get_DesiredOptimization(winrt::Windows::Media::Devices::MediaCaptureOptimization * value) = 0;
    virtual HRESULT __stdcall put_DesiredOptimization(winrt::Windows::Media::Devices::MediaCaptureOptimization value) = 0;
    virtual HRESULT __stdcall get_HdrVideoControl(Windows::Media::Devices::IHdrVideoControl ** value) = 0;
    virtual HRESULT __stdcall get_OpticalImageStabilizationControl(Windows::Media::Devices::IOpticalImageStabilizationControl ** value) = 0;
    virtual HRESULT __stdcall get_AdvancedPhotoControl(Windows::Media::Devices::IAdvancedPhotoControl ** value) = 0;
};

struct __declspec(uuid("edd4a388-79c7-4f7c-90e8-ef934b21580a")) __declspec(novtable) IAudioDeviceController : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Muted(bool value) = 0;
    virtual HRESULT __stdcall get_Muted(bool * value) = 0;
    virtual HRESULT __stdcall put_VolumePercent(float value) = 0;
    virtual HRESULT __stdcall get_VolumePercent(float * value) = 0;
};

struct __declspec(uuid("a520d0d6-ae8d-45db-8011-ca49d3b3e578")) __declspec(novtable) ICallControl : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_IndicateNewIncomingCall(bool enableRinger, hstring callerId, uint64_t * callToken) = 0;
    virtual HRESULT __stdcall abi_IndicateNewOutgoingCall(uint64_t * callToken) = 0;
    virtual HRESULT __stdcall abi_IndicateActiveCall(uint64_t callToken) = 0;
    virtual HRESULT __stdcall abi_EndCall(uint64_t callToken) = 0;
    virtual HRESULT __stdcall get_HasRinger(bool * value) = 0;
    virtual HRESULT __stdcall add_AnswerRequested(Windows::Media::Devices::CallControlEventHandler * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_AnswerRequested(event_token token) = 0;
    virtual HRESULT __stdcall add_HangUpRequested(Windows::Media::Devices::CallControlEventHandler * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_HangUpRequested(event_token token) = 0;
    virtual HRESULT __stdcall add_DialRequested(Windows::Media::Devices::DialRequestedEventHandler * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_DialRequested(event_token token) = 0;
    virtual HRESULT __stdcall add_RedialRequested(Windows::Media::Devices::RedialRequestedEventHandler * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_RedialRequested(event_token token) = 0;
    virtual HRESULT __stdcall add_KeypadPressed(Windows::Media::Devices::KeypadPressedEventHandler * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_KeypadPressed(event_token token) = 0;
    virtual HRESULT __stdcall add_AudioTransferRequested(Windows::Media::Devices::CallControlEventHandler * handler, event_token * token) = 0;
    virtual HRESULT __stdcall remove_AudioTransferRequested(event_token token) = 0;
};

struct __declspec(uuid("03945ad5-85ab-40e1-af19-56c94303b019")) __declspec(novtable) ICallControlStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefault(Windows::Media::Devices::ICallControl ** callControl) = 0;
    virtual HRESULT __stdcall abi_FromId(hstring deviceId, Windows::Media::Devices::ICallControl ** callControl) = 0;
};

struct __declspec(uuid("110f882f-1c05-4657-a18e-47c9b69f07ab")) __declspec(novtable) IDefaultAudioDeviceChangedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Id(hstring * value) = 0;
    virtual HRESULT __stdcall get_Role(winrt::Windows::Media::Devices::AudioDeviceRole * value) = 0;
};

struct __declspec(uuid("037b929e-953c-4286-8866-4f0f376c855a")) __declspec(novtable) IDialRequestedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Handled() = 0;
    virtual HRESULT __stdcall get_Contact(Windows::IInspectable ** value) = 0;
};

struct __declspec(uuid("81c8e834-dcec-4011-a610-1f3847e64aca")) __declspec(novtable) IExposureCompensationControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_Min(float * value) = 0;
    virtual HRESULT __stdcall get_Max(float * value) = 0;
    virtual HRESULT __stdcall get_Step(float * value) = 0;
    virtual HRESULT __stdcall get_Value(float * value) = 0;
    virtual HRESULT __stdcall abi_SetValueAsync(float value, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("09e8cbe2-ad96-4f28-a0e0-96ed7e1b5fd2")) __declspec(novtable) IExposureControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_Auto(bool * value) = 0;
    virtual HRESULT __stdcall abi_SetAutoAsync(bool value, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall get_Min(Windows::Foundation::TimeSpan * value) = 0;
    virtual HRESULT __stdcall get_Max(Windows::Foundation::TimeSpan * value) = 0;
    virtual HRESULT __stdcall get_Step(Windows::Foundation::TimeSpan * value) = 0;
    virtual HRESULT __stdcall get_Value(Windows::Foundation::TimeSpan * value) = 0;
    virtual HRESULT __stdcall abi_SetValueAsync(Windows::Foundation::TimeSpan shutterDuration, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("2cb240a3-5168-4271-9ea5-47621a98a352")) __declspec(novtable) IExposurePriorityVideoControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_Enabled(bool * value) = 0;
    virtual HRESULT __stdcall put_Enabled(bool value) = 0;
};

struct __declspec(uuid("def41dbe-7d68-45e3-8c0f-be7bb32837d0")) __declspec(novtable) IFlashControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_PowerSupported(bool * value) = 0;
    virtual HRESULT __stdcall get_RedEyeReductionSupported(bool * value) = 0;
    virtual HRESULT __stdcall get_Enabled(bool * value) = 0;
    virtual HRESULT __stdcall put_Enabled(bool value) = 0;
    virtual HRESULT __stdcall get_Auto(bool * value) = 0;
    virtual HRESULT __stdcall put_Auto(bool value) = 0;
    virtual HRESULT __stdcall get_RedEyeReduction(bool * value) = 0;
    virtual HRESULT __stdcall put_RedEyeReduction(bool value) = 0;
    virtual HRESULT __stdcall get_PowerPercent(float * value) = 0;
    virtual HRESULT __stdcall put_PowerPercent(float value) = 0;
};

struct __declspec(uuid("7d29cc9e-75e1-4af7-bd7d-4e38e1c06cd6")) __declspec(novtable) IFlashControl2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AssistantLightSupported(bool * value) = 0;
    virtual HRESULT __stdcall get_AssistantLightEnabled(bool * value) = 0;
    virtual HRESULT __stdcall put_AssistantLightEnabled(bool value) = 0;
};

struct __declspec(uuid("c0d889f6-5228-4453-b153-85606592b238")) __declspec(novtable) IFocusControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_SupportedPresets(Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::FocusPreset> ** value) = 0;
    virtual HRESULT __stdcall get_Preset(winrt::Windows::Media::Devices::FocusPreset * value) = 0;
    virtual HRESULT __stdcall abi_SetPresetAsync(winrt::Windows::Media::Devices::FocusPreset preset, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_SetPresetWithCompletionOptionAsync(winrt::Windows::Media::Devices::FocusPreset preset, bool completeBeforeFocus, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall get_Min(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_Max(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_Step(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_Value(uint32_t * value) = 0;
    virtual HRESULT __stdcall abi_SetValueAsync(uint32_t focus, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_FocusAsync(Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("3f7cff48-c534-4e9e-94c3-52ef2afd5d07")) __declspec(novtable) IFocusControl2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_FocusChangedSupported(bool * value) = 0;
    virtual HRESULT __stdcall get_WaitForFocusSupported(bool * value) = 0;
    virtual HRESULT __stdcall get_SupportedFocusModes(Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::FocusMode> ** value) = 0;
    virtual HRESULT __stdcall get_SupportedFocusDistances(Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::ManualFocusDistance> ** value) = 0;
    virtual HRESULT __stdcall get_SupportedFocusRanges(Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::AutoFocusRange> ** value) = 0;
    virtual HRESULT __stdcall get_Mode(winrt::Windows::Media::Devices::FocusMode * value) = 0;
    virtual HRESULT __stdcall get_FocusState(winrt::Windows::Media::Devices::MediaCaptureFocusState * value) = 0;
    virtual HRESULT __stdcall abi_UnlockAsync(Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_LockAsync(Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_Configure(Windows::Media::Devices::IFocusSettings * settings) = 0;
};

struct __declspec(uuid("79958f6b-3263-4275-85d6-aeae891c96ee")) __declspec(novtable) IFocusSettings : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Mode(winrt::Windows::Media::Devices::FocusMode * value) = 0;
    virtual HRESULT __stdcall put_Mode(winrt::Windows::Media::Devices::FocusMode value) = 0;
    virtual HRESULT __stdcall get_AutoFocusRange(winrt::Windows::Media::Devices::AutoFocusRange * value) = 0;
    virtual HRESULT __stdcall put_AutoFocusRange(winrt::Windows::Media::Devices::AutoFocusRange value) = 0;
    virtual HRESULT __stdcall get_Value(Windows::Foundation::IReference<uint32_t> ** value) = 0;
    virtual HRESULT __stdcall put_Value(Windows::Foundation::IReference<uint32_t> * value) = 0;
    virtual HRESULT __stdcall get_Distance(Windows::Foundation::IReference<winrt::Windows::Media::Devices::ManualFocusDistance> ** value) = 0;
    virtual HRESULT __stdcall put_Distance(Windows::Foundation::IReference<winrt::Windows::Media::Devices::ManualFocusDistance> * value) = 0;
    virtual HRESULT __stdcall get_WaitForFocus(bool * value) = 0;
    virtual HRESULT __stdcall put_WaitForFocus(bool value) = 0;
    virtual HRESULT __stdcall get_DisableDriverFallback(bool * value) = 0;
    virtual HRESULT __stdcall put_DisableDriverFallback(bool value) = 0;
};

struct __declspec(uuid("55d8e2d0-30c0-43bf-9b9a-9799d70ced94")) __declspec(novtable) IHdrVideoControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_SupportedModes(Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::HdrVideoMode> ** value) = 0;
    virtual HRESULT __stdcall get_Mode(winrt::Windows::Media::Devices::HdrVideoMode * value) = 0;
    virtual HRESULT __stdcall put_Mode(winrt::Windows::Media::Devices::HdrVideoMode value) = 0;
};

struct __declspec(uuid("27b6c322-25ad-4f1b-aaab-524ab376ca33")) __declspec(novtable) IIsoSpeedControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_SupportedPresets(Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::IsoSpeedPreset> ** value) = 0;
    virtual HRESULT __stdcall get_Preset(winrt::Windows::Media::Devices::IsoSpeedPreset * value) = 0;
    virtual HRESULT __stdcall abi_SetPresetAsync(winrt::Windows::Media::Devices::IsoSpeedPreset preset, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("6f1578f2-6d77-4f8a-8c2f-6130b6395053")) __declspec(novtable) IIsoSpeedControl2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Min(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_Max(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_Step(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_Value(uint32_t * value) = 0;
    virtual HRESULT __stdcall abi_SetValueAsync(uint32_t isoSpeed, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall get_Auto(bool * value) = 0;
    virtual HRESULT __stdcall abi_SetAutoAsync(Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("d3a43900-b4fa-49cd-9442-89af6568f601")) __declspec(novtable) IKeypadPressedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall get_TelephonyKey(winrt::Windows::Media::Devices::TelephonyKey * telephonyKey) = 0;
};

struct __declspec(uuid("6d5c4dd0-fadf-415d-aee6-3baa529300c9")) __declspec(novtable) ILowLagPhotoControl : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetHighestConcurrentFrameRate(Windows::Media::MediaProperties::IMediaEncodingProperties * captureProperties, Windows::Media::MediaProperties::IMediaRatio ** value) = 0;
    virtual HRESULT __stdcall abi_GetCurrentFrameRate(Windows::Media::MediaProperties::IMediaRatio ** value) = 0;
    virtual HRESULT __stdcall get_ThumbnailEnabled(bool * value) = 0;
    virtual HRESULT __stdcall put_ThumbnailEnabled(bool value) = 0;
    virtual HRESULT __stdcall get_ThumbnailFormat(winrt::Windows::Media::MediaProperties::MediaThumbnailFormat * value) = 0;
    virtual HRESULT __stdcall put_ThumbnailFormat(winrt::Windows::Media::MediaProperties::MediaThumbnailFormat value) = 0;
    virtual HRESULT __stdcall get_DesiredThumbnailSize(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_DesiredThumbnailSize(uint32_t value) = 0;
    virtual HRESULT __stdcall get_HardwareAcceleratedThumbnailSupported(uint32_t * value) = 0;
};

struct __declspec(uuid("3dcf909d-6d16-409c-bafe-b9a594c6fde6")) __declspec(novtable) ILowLagPhotoSequenceControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_MaxPastPhotos(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_MaxPhotosPerSecond(float * value) = 0;
    virtual HRESULT __stdcall get_PastPhotoLimit(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_PastPhotoLimit(uint32_t value) = 0;
    virtual HRESULT __stdcall get_PhotosPerSecondLimit(float * value) = 0;
    virtual HRESULT __stdcall put_PhotosPerSecondLimit(float value) = 0;
    virtual HRESULT __stdcall abi_GetHighestConcurrentFrameRate(Windows::Media::MediaProperties::IMediaEncodingProperties * captureProperties, Windows::Media::MediaProperties::IMediaRatio ** value) = 0;
    virtual HRESULT __stdcall abi_GetCurrentFrameRate(Windows::Media::MediaProperties::IMediaRatio ** value) = 0;
    virtual HRESULT __stdcall get_ThumbnailEnabled(bool * value) = 0;
    virtual HRESULT __stdcall put_ThumbnailEnabled(bool value) = 0;
    virtual HRESULT __stdcall get_ThumbnailFormat(winrt::Windows::Media::MediaProperties::MediaThumbnailFormat * value) = 0;
    virtual HRESULT __stdcall put_ThumbnailFormat(winrt::Windows::Media::MediaProperties::MediaThumbnailFormat value) = 0;
    virtual HRESULT __stdcall get_DesiredThumbnailSize(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_DesiredThumbnailSize(uint32_t value) = 0;
    virtual HRESULT __stdcall get_HardwareAcceleratedThumbnailSupported(uint32_t * value) = 0;
};

struct __declspec(uuid("efa8dfa9-6f75-4863-ba0b-583f3036b4de")) __declspec(novtable) IMediaDeviceControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Capabilities(Windows::Media::Devices::IMediaDeviceControlCapabilities ** value) = 0;
    virtual HRESULT __stdcall abi_TryGetValue(double * value, bool * succeeded) = 0;
    virtual HRESULT __stdcall abi_TrySetValue(double value, bool * succeeded) = 0;
    virtual HRESULT __stdcall abi_TryGetAuto(bool * value, bool * succeeded) = 0;
    virtual HRESULT __stdcall abi_TrySetAuto(bool value, bool * succeeded) = 0;
};

struct __declspec(uuid("23005816-eb85-43e2-b92b-8240d5ee70ec")) __declspec(novtable) IMediaDeviceControlCapabilities : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_Min(double * value) = 0;
    virtual HRESULT __stdcall get_Max(double * value) = 0;
    virtual HRESULT __stdcall get_Step(double * value) = 0;
    virtual HRESULT __stdcall get_Default(double * value) = 0;
    virtual HRESULT __stdcall get_AutoModeSupported(bool * value) = 0;
};

struct __declspec(uuid("f6f8f5ce-209a-48fb-86fc-d44578f317e6")) __declspec(novtable) IMediaDeviceController : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetAvailableMediaStreamProperties(winrt::Windows::Media::Capture::MediaStreamType mediaStreamType, Windows::Foundation::Collections::IVectorView<Windows::Media::MediaProperties::IMediaEncodingProperties> ** value) = 0;
    virtual HRESULT __stdcall abi_GetMediaStreamProperties(winrt::Windows::Media::Capture::MediaStreamType mediaStreamType, Windows::Media::MediaProperties::IMediaEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall abi_SetMediaStreamPropertiesAsync(winrt::Windows::Media::Capture::MediaStreamType mediaStreamType, Windows::Media::MediaProperties::IMediaEncodingProperties * mediaEncodingProperties, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("aa2d9a40-909f-4bba-bf8b-0c0d296f14f0")) __declspec(novtable) IMediaDeviceStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetAudioCaptureSelector(hstring * selector) = 0;
    virtual HRESULT __stdcall abi_GetAudioRenderSelector(hstring * selector) = 0;
    virtual HRESULT __stdcall abi_GetVideoCaptureSelector(hstring * selector) = 0;
    virtual HRESULT __stdcall abi_GetDefaultAudioCaptureId(winrt::Windows::Media::Devices::AudioDeviceRole role, hstring * deviceId) = 0;
    virtual HRESULT __stdcall abi_GetDefaultAudioRenderId(winrt::Windows::Media::Devices::AudioDeviceRole role, hstring * deviceId) = 0;
    virtual HRESULT __stdcall add_DefaultAudioCaptureDeviceChanged(Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioCaptureDeviceChangedEventArgs> * handler, event_token * cookie) = 0;
    virtual HRESULT __stdcall remove_DefaultAudioCaptureDeviceChanged(event_token cookie) = 0;
    virtual HRESULT __stdcall add_DefaultAudioRenderDeviceChanged(Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::Media::Devices::DefaultAudioRenderDeviceChangedEventArgs> * handler, event_token * cookie) = 0;
    virtual HRESULT __stdcall remove_DefaultAudioRenderDeviceChanged(event_token cookie) = 0;
};

struct __declspec(uuid("bfad9c1d-00bc-423b-8eb2-a0178ca94247")) __declspec(novtable) IOpticalImageStabilizationControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_SupportedModes(Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::OpticalImageStabilizationMode> ** value) = 0;
    virtual HRESULT __stdcall get_Mode(winrt::Windows::Media::Devices::OpticalImageStabilizationMode * value) = 0;
    virtual HRESULT __stdcall put_Mode(winrt::Windows::Media::Devices::OpticalImageStabilizationMode value) = 0;
};

struct __declspec(uuid("c8f3f363-ff5e-4582-a9a8-0550f85a4a76")) __declspec(novtable) IPhotoConfirmationControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * pbSupported) = 0;
    virtual HRESULT __stdcall get_Enabled(bool * value) = 0;
    virtual HRESULT __stdcall put_Enabled(bool value) = 0;
    virtual HRESULT __stdcall get_PixelFormat(winrt::Windows::Media::MediaProperties::MediaPixelFormat * format) = 0;
    virtual HRESULT __stdcall put_PixelFormat(winrt::Windows::Media::MediaProperties::MediaPixelFormat format) = 0;
};

struct __declspec(uuid("7eb55209-76ab-4c31-b40e-4b58379d580c")) __declspec(novtable) IRedialRequestedEventArgs : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_Handled() = 0;
};

struct __declspec(uuid("e5ecc834-ce66-4e05-a78f-cf391a5ec2d1")) __declspec(novtable) IRegionOfInterest : Windows::IInspectable
{
    virtual HRESULT __stdcall get_AutoFocusEnabled(bool * value) = 0;
    virtual HRESULT __stdcall put_AutoFocusEnabled(bool value) = 0;
    virtual HRESULT __stdcall get_AutoWhiteBalanceEnabled(bool * value) = 0;
    virtual HRESULT __stdcall put_AutoWhiteBalanceEnabled(bool value) = 0;
    virtual HRESULT __stdcall get_AutoExposureEnabled(bool * value) = 0;
    virtual HRESULT __stdcall put_AutoExposureEnabled(bool value) = 0;
    virtual HRESULT __stdcall get_Bounds(Windows::Foundation::Rect * value) = 0;
    virtual HRESULT __stdcall put_Bounds(Windows::Foundation::Rect value) = 0;
};

struct __declspec(uuid("19fe2a91-73aa-4d51-8a9d-56ccf7db7f54")) __declspec(novtable) IRegionOfInterest2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Type(winrt::Windows::Media::Devices::RegionOfInterestType * value) = 0;
    virtual HRESULT __stdcall put_Type(winrt::Windows::Media::Devices::RegionOfInterestType value) = 0;
    virtual HRESULT __stdcall get_BoundsNormalized(bool * value) = 0;
    virtual HRESULT __stdcall put_BoundsNormalized(bool value) = 0;
    virtual HRESULT __stdcall get_Weight(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_Weight(uint32_t value) = 0;
};

struct __declspec(uuid("c323f527-ab0b-4558-8b5b-df5693db0378")) __declspec(novtable) IRegionsOfInterestControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_MaxRegions(uint32_t * value) = 0;
    virtual HRESULT __stdcall abi_SetRegionsAsync(Windows::Foundation::Collections::IIterable<Windows::Media::Devices::RegionOfInterest> * regions, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_SetRegionsWithLockAsync(Windows::Foundation::Collections::IIterable<Windows::Media::Devices::RegionOfInterest> * regions, bool lockValues, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall abi_ClearRegionsAsync(Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall get_AutoFocusSupported(bool * value) = 0;
    virtual HRESULT __stdcall get_AutoWhiteBalanceSupported(bool * value) = 0;
    virtual HRESULT __stdcall get_AutoExposureSupported(bool * value) = 0;
};

struct __declspec(uuid("d48e5af7-8d59-4854-8c62-12c70ba89b7c")) __declspec(novtable) ISceneModeControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_SupportedModes(Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::CaptureSceneMode> ** value) = 0;
    virtual HRESULT __stdcall get_Value(winrt::Windows::Media::Devices::CaptureSceneMode * value) = 0;
    virtual HRESULT __stdcall abi_SetValueAsync(winrt::Windows::Media::Devices::CaptureSceneMode sceneMode, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("a6053665-8250-416c-919a-724296afa306")) __declspec(novtable) ITorchControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_PowerSupported(bool * value) = 0;
    virtual HRESULT __stdcall get_Enabled(bool * value) = 0;
    virtual HRESULT __stdcall put_Enabled(bool value) = 0;
    virtual HRESULT __stdcall get_PowerPercent(float * value) = 0;
    virtual HRESULT __stdcall put_PowerPercent(float value) = 0;
};

struct __declspec(uuid("99555575-2e2e-40b8-b6c7-f82d10013210")) __declspec(novtable) IVideoDeviceController : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Brightness(Windows::Media::Devices::IMediaDeviceControl ** value) = 0;
    virtual HRESULT __stdcall get_Contrast(Windows::Media::Devices::IMediaDeviceControl ** value) = 0;
    virtual HRESULT __stdcall get_Hue(Windows::Media::Devices::IMediaDeviceControl ** value) = 0;
    virtual HRESULT __stdcall get_WhiteBalance(Windows::Media::Devices::IMediaDeviceControl ** value) = 0;
    virtual HRESULT __stdcall get_BacklightCompensation(Windows::Media::Devices::IMediaDeviceControl ** value) = 0;
    virtual HRESULT __stdcall get_Pan(Windows::Media::Devices::IMediaDeviceControl ** value) = 0;
    virtual HRESULT __stdcall get_Tilt(Windows::Media::Devices::IMediaDeviceControl ** value) = 0;
    virtual HRESULT __stdcall get_Zoom(Windows::Media::Devices::IMediaDeviceControl ** value) = 0;
    virtual HRESULT __stdcall get_Roll(Windows::Media::Devices::IMediaDeviceControl ** value) = 0;
    virtual HRESULT __stdcall get_Exposure(Windows::Media::Devices::IMediaDeviceControl ** value) = 0;
    virtual HRESULT __stdcall get_Focus(Windows::Media::Devices::IMediaDeviceControl ** value) = 0;
    virtual HRESULT __stdcall abi_TrySetPowerlineFrequency(winrt::Windows::Media::Capture::PowerlineFrequency value, bool * succeeded) = 0;
    virtual HRESULT __stdcall abi_TryGetPowerlineFrequency(winrt::Windows::Media::Capture::PowerlineFrequency * value, bool * succeeded) = 0;
};

struct __declspec(uuid("781f047e-7162-49c8-a8f9-9481c565363e")) __declspec(novtable) IWhiteBalanceControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_Preset(winrt::Windows::Media::Devices::ColorTemperaturePreset * value) = 0;
    virtual HRESULT __stdcall abi_SetPresetAsync(winrt::Windows::Media::Devices::ColorTemperaturePreset preset, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
    virtual HRESULT __stdcall get_Min(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_Max(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_Step(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_Value(uint32_t * value) = 0;
    virtual HRESULT __stdcall abi_SetValueAsync(uint32_t temperature, Windows::Foundation::IAsyncAction ** asyncInfo) = 0;
};

struct __declspec(uuid("3a1e0b12-32da-4c17-bfd7-8d0c73c8f5a5")) __declspec(novtable) IZoomControl : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Supported(bool * value) = 0;
    virtual HRESULT __stdcall get_Min(float * value) = 0;
    virtual HRESULT __stdcall get_Max(float * value) = 0;
    virtual HRESULT __stdcall get_Step(float * value) = 0;
    virtual HRESULT __stdcall get_Value(float * value) = 0;
    virtual HRESULT __stdcall put_Value(float value) = 0;
};

struct __declspec(uuid("69843db0-2e99-4641-8529-184f319d1671")) __declspec(novtable) IZoomControl2 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_SupportedModes(Windows::Foundation::Collections::IVectorView<winrt::Windows::Media::Devices::ZoomTransitionMode> ** value) = 0;
    virtual HRESULT __stdcall get_Mode(winrt::Windows::Media::Devices::ZoomTransitionMode * value) = 0;
    virtual HRESULT __stdcall abi_Configure(Windows::Media::Devices::IZoomSettings * settings) = 0;
};

struct __declspec(uuid("6ad66b24-14b4-4bfd-b18f-88fe24463b52")) __declspec(novtable) IZoomSettings : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Mode(winrt::Windows::Media::Devices::ZoomTransitionMode * value) = 0;
    virtual HRESULT __stdcall put_Mode(winrt::Windows::Media::Devices::ZoomTransitionMode value) = 0;
    virtual HRESULT __stdcall get_Value(float * value) = 0;
    virtual HRESULT __stdcall put_Value(float value) = 0;
};

struct __declspec(uuid("e637a454-c527-422c-8926-c9af83b559a0")) __declspec(novtable) KeypadPressedEventHandler : IUnknown
{
    virtual HRESULT __stdcall abi_Invoke(Windows::Media::Devices::ICallControl * sender, Windows::Media::Devices::IKeypadPressedEventArgs * e) = 0;
};

struct __declspec(uuid("baf257d1-4ebd-4b84-9f47-6ec43d75d8b1")) __declspec(novtable) RedialRequestedEventHandler : IUnknown
{
    virtual HRESULT __stdcall abi_Invoke(Windows::Media::Devices::ICallControl * sender, Windows::Media::Devices::IRedialRequestedEventArgs * e) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Media::Devices::AdvancedPhotoCaptureSettings> { using default_interface = Windows::Media::Devices::IAdvancedPhotoCaptureSettings; };
template <> struct traits<Windows::Media::Devices::AdvancedPhotoControl> { using default_interface = Windows::Media::Devices::IAdvancedPhotoControl; };
template <> struct traits<Windows::Media::Devices::AudioDeviceController> { using default_interface = Windows::Media::Devices::IAudioDeviceController; };
template <> struct traits<Windows::Media::Devices::CallControl> { using default_interface = Windows::Media::Devices::ICallControl; };
template <> struct traits<Windows::Media::Devices::DefaultAudioCaptureDeviceChangedEventArgs> { using default_interface = Windows::Media::Devices::IDefaultAudioDeviceChangedEventArgs; };
template <> struct traits<Windows::Media::Devices::DefaultAudioRenderDeviceChangedEventArgs> { using default_interface = Windows::Media::Devices::IDefaultAudioDeviceChangedEventArgs; };
template <> struct traits<Windows::Media::Devices::DialRequestedEventArgs> { using default_interface = Windows::Media::Devices::IDialRequestedEventArgs; };
template <> struct traits<Windows::Media::Devices::ExposureCompensationControl> { using default_interface = Windows::Media::Devices::IExposureCompensationControl; };
template <> struct traits<Windows::Media::Devices::ExposureControl> { using default_interface = Windows::Media::Devices::IExposureControl; };
template <> struct traits<Windows::Media::Devices::ExposurePriorityVideoControl> { using default_interface = Windows::Media::Devices::IExposurePriorityVideoControl; };
template <> struct traits<Windows::Media::Devices::FlashControl> { using default_interface = Windows::Media::Devices::IFlashControl; };
template <> struct traits<Windows::Media::Devices::FocusControl> { using default_interface = Windows::Media::Devices::IFocusControl; };
template <> struct traits<Windows::Media::Devices::FocusSettings> { using default_interface = Windows::Media::Devices::IFocusSettings; };
template <> struct traits<Windows::Media::Devices::HdrVideoControl> { using default_interface = Windows::Media::Devices::IHdrVideoControl; };
template <> struct traits<Windows::Media::Devices::IsoSpeedControl> { using default_interface = Windows::Media::Devices::IIsoSpeedControl; };
template <> struct traits<Windows::Media::Devices::KeypadPressedEventArgs> { using default_interface = Windows::Media::Devices::IKeypadPressedEventArgs; };
template <> struct traits<Windows::Media::Devices::LowLagPhotoControl> { using default_interface = Windows::Media::Devices::ILowLagPhotoControl; };
template <> struct traits<Windows::Media::Devices::LowLagPhotoSequenceControl> { using default_interface = Windows::Media::Devices::ILowLagPhotoSequenceControl; };
template <> struct traits<Windows::Media::Devices::MediaDeviceControl> { using default_interface = Windows::Media::Devices::IMediaDeviceControl; };
template <> struct traits<Windows::Media::Devices::MediaDeviceControlCapabilities> { using default_interface = Windows::Media::Devices::IMediaDeviceControlCapabilities; };
template <> struct traits<Windows::Media::Devices::OpticalImageStabilizationControl> { using default_interface = Windows::Media::Devices::IOpticalImageStabilizationControl; };
template <> struct traits<Windows::Media::Devices::PhotoConfirmationControl> { using default_interface = Windows::Media::Devices::IPhotoConfirmationControl; };
template <> struct traits<Windows::Media::Devices::RedialRequestedEventArgs> { using default_interface = Windows::Media::Devices::IRedialRequestedEventArgs; };
template <> struct traits<Windows::Media::Devices::RegionOfInterest> { using default_interface = Windows::Media::Devices::IRegionOfInterest; };
template <> struct traits<Windows::Media::Devices::RegionsOfInterestControl> { using default_interface = Windows::Media::Devices::IRegionsOfInterestControl; };
template <> struct traits<Windows::Media::Devices::SceneModeControl> { using default_interface = Windows::Media::Devices::ISceneModeControl; };
template <> struct traits<Windows::Media::Devices::TorchControl> { using default_interface = Windows::Media::Devices::ITorchControl; };
template <> struct traits<Windows::Media::Devices::VideoDeviceController> { using default_interface = Windows::Media::Devices::IVideoDeviceController; };
template <> struct traits<Windows::Media::Devices::WhiteBalanceControl> { using default_interface = Windows::Media::Devices::IWhiteBalanceControl; };
template <> struct traits<Windows::Media::Devices::ZoomControl> { using default_interface = Windows::Media::Devices::IZoomControl; };
template <> struct traits<Windows::Media::Devices::ZoomSettings> { using default_interface = Windows::Media::Devices::IZoomSettings; };

}

namespace Windows::Media::Devices {

template <typename T> struct impl_IAdvancedPhotoCaptureSettings;
template <typename T> struct impl_IAdvancedPhotoControl;
template <typename T> struct impl_IAdvancedVideoCaptureDeviceController;
template <typename T> struct impl_IAdvancedVideoCaptureDeviceController2;
template <typename T> struct impl_IAdvancedVideoCaptureDeviceController3;
template <typename T> struct impl_IAdvancedVideoCaptureDeviceController4;
template <typename T> struct impl_IAudioDeviceController;
template <typename T> struct impl_ICallControl;
template <typename T> struct impl_ICallControlStatics;
template <typename T> struct impl_IDefaultAudioDeviceChangedEventArgs;
template <typename T> struct impl_IDialRequestedEventArgs;
template <typename T> struct impl_IExposureCompensationControl;
template <typename T> struct impl_IExposureControl;
template <typename T> struct impl_IExposurePriorityVideoControl;
template <typename T> struct impl_IFlashControl;
template <typename T> struct impl_IFlashControl2;
template <typename T> struct impl_IFocusControl;
template <typename T> struct impl_IFocusControl2;
template <typename T> struct impl_IFocusSettings;
template <typename T> struct impl_IHdrVideoControl;
template <typename T> struct impl_IIsoSpeedControl;
template <typename T> struct impl_IIsoSpeedControl2;
template <typename T> struct impl_IKeypadPressedEventArgs;
template <typename T> struct impl_ILowLagPhotoControl;
template <typename T> struct impl_ILowLagPhotoSequenceControl;
template <typename T> struct impl_IMediaDeviceControl;
template <typename T> struct impl_IMediaDeviceControlCapabilities;
template <typename T> struct impl_IMediaDeviceController;
template <typename T> struct impl_IMediaDeviceStatics;
template <typename T> struct impl_IOpticalImageStabilizationControl;
template <typename T> struct impl_IPhotoConfirmationControl;
template <typename T> struct impl_IRedialRequestedEventArgs;
template <typename T> struct impl_IRegionOfInterest;
template <typename T> struct impl_IRegionOfInterest2;
template <typename T> struct impl_IRegionsOfInterestControl;
template <typename T> struct impl_ISceneModeControl;
template <typename T> struct impl_ITorchControl;
template <typename T> struct impl_IVideoDeviceController;
template <typename T> struct impl_IWhiteBalanceControl;
template <typename T> struct impl_IZoomControl;
template <typename T> struct impl_IZoomControl2;
template <typename T> struct impl_IZoomSettings;
template <typename T> struct impl_CallControlEventHandler;
template <typename T> struct impl_DialRequestedEventHandler;
template <typename T> struct impl_KeypadPressedEventHandler;
template <typename T> struct impl_RedialRequestedEventHandler;

}

namespace impl {

template <> struct traits<Windows::Media::Devices::CallControlEventHandler>
{
    using abi = ABI::Windows::Media::Devices::CallControlEventHandler;
};

template <> struct traits<Windows::Media::Devices::DialRequestedEventHandler>
{
    using abi = ABI::Windows::Media::Devices::DialRequestedEventHandler;
};

template <> struct traits<Windows::Media::Devices::IAdvancedPhotoCaptureSettings>
{
    using abi = ABI::Windows::Media::Devices::IAdvancedPhotoCaptureSettings;
    template <typename D> using consume = Windows::Media::Devices::impl_IAdvancedPhotoCaptureSettings<D>;
};

template <> struct traits<Windows::Media::Devices::IAdvancedPhotoControl>
{
    using abi = ABI::Windows::Media::Devices::IAdvancedPhotoControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IAdvancedPhotoControl<D>;
};

template <> struct traits<Windows::Media::Devices::IAdvancedVideoCaptureDeviceController>
{
    using abi = ABI::Windows::Media::Devices::IAdvancedVideoCaptureDeviceController;
    template <typename D> using consume = Windows::Media::Devices::impl_IAdvancedVideoCaptureDeviceController<D>;
};

template <> struct traits<Windows::Media::Devices::IAdvancedVideoCaptureDeviceController2>
{
    using abi = ABI::Windows::Media::Devices::IAdvancedVideoCaptureDeviceController2;
    template <typename D> using consume = Windows::Media::Devices::impl_IAdvancedVideoCaptureDeviceController2<D>;
};

template <> struct traits<Windows::Media::Devices::IAdvancedVideoCaptureDeviceController3>
{
    using abi = ABI::Windows::Media::Devices::IAdvancedVideoCaptureDeviceController3;
    template <typename D> using consume = Windows::Media::Devices::impl_IAdvancedVideoCaptureDeviceController3<D>;
};

template <> struct traits<Windows::Media::Devices::IAdvancedVideoCaptureDeviceController4>
{
    using abi = ABI::Windows::Media::Devices::IAdvancedVideoCaptureDeviceController4;
    template <typename D> using consume = Windows::Media::Devices::impl_IAdvancedVideoCaptureDeviceController4<D>;
};

template <> struct traits<Windows::Media::Devices::IAudioDeviceController>
{
    using abi = ABI::Windows::Media::Devices::IAudioDeviceController;
    template <typename D> using consume = Windows::Media::Devices::impl_IAudioDeviceController<D>;
};

template <> struct traits<Windows::Media::Devices::ICallControl>
{
    using abi = ABI::Windows::Media::Devices::ICallControl;
    template <typename D> using consume = Windows::Media::Devices::impl_ICallControl<D>;
};

template <> struct traits<Windows::Media::Devices::ICallControlStatics>
{
    using abi = ABI::Windows::Media::Devices::ICallControlStatics;
    template <typename D> using consume = Windows::Media::Devices::impl_ICallControlStatics<D>;
};

template <> struct traits<Windows::Media::Devices::IDefaultAudioDeviceChangedEventArgs>
{
    using abi = ABI::Windows::Media::Devices::IDefaultAudioDeviceChangedEventArgs;
    template <typename D> using consume = Windows::Media::Devices::impl_IDefaultAudioDeviceChangedEventArgs<D>;
};

template <> struct traits<Windows::Media::Devices::IDialRequestedEventArgs>
{
    using abi = ABI::Windows::Media::Devices::IDialRequestedEventArgs;
    template <typename D> using consume = Windows::Media::Devices::impl_IDialRequestedEventArgs<D>;
};

template <> struct traits<Windows::Media::Devices::IExposureCompensationControl>
{
    using abi = ABI::Windows::Media::Devices::IExposureCompensationControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IExposureCompensationControl<D>;
};

template <> struct traits<Windows::Media::Devices::IExposureControl>
{
    using abi = ABI::Windows::Media::Devices::IExposureControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IExposureControl<D>;
};

template <> struct traits<Windows::Media::Devices::IExposurePriorityVideoControl>
{
    using abi = ABI::Windows::Media::Devices::IExposurePriorityVideoControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IExposurePriorityVideoControl<D>;
};

template <> struct traits<Windows::Media::Devices::IFlashControl>
{
    using abi = ABI::Windows::Media::Devices::IFlashControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IFlashControl<D>;
};

template <> struct traits<Windows::Media::Devices::IFlashControl2>
{
    using abi = ABI::Windows::Media::Devices::IFlashControl2;
    template <typename D> using consume = Windows::Media::Devices::impl_IFlashControl2<D>;
};

template <> struct traits<Windows::Media::Devices::IFocusControl>
{
    using abi = ABI::Windows::Media::Devices::IFocusControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IFocusControl<D>;
};

template <> struct traits<Windows::Media::Devices::IFocusControl2>
{
    using abi = ABI::Windows::Media::Devices::IFocusControl2;
    template <typename D> using consume = Windows::Media::Devices::impl_IFocusControl2<D>;
};

template <> struct traits<Windows::Media::Devices::IFocusSettings>
{
    using abi = ABI::Windows::Media::Devices::IFocusSettings;
    template <typename D> using consume = Windows::Media::Devices::impl_IFocusSettings<D>;
};

template <> struct traits<Windows::Media::Devices::IHdrVideoControl>
{
    using abi = ABI::Windows::Media::Devices::IHdrVideoControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IHdrVideoControl<D>;
};

template <> struct traits<Windows::Media::Devices::IIsoSpeedControl>
{
    using abi = ABI::Windows::Media::Devices::IIsoSpeedControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IIsoSpeedControl<D>;
};

template <> struct traits<Windows::Media::Devices::IIsoSpeedControl2>
{
    using abi = ABI::Windows::Media::Devices::IIsoSpeedControl2;
    template <typename D> using consume = Windows::Media::Devices::impl_IIsoSpeedControl2<D>;
};

template <> struct traits<Windows::Media::Devices::IKeypadPressedEventArgs>
{
    using abi = ABI::Windows::Media::Devices::IKeypadPressedEventArgs;
    template <typename D> using consume = Windows::Media::Devices::impl_IKeypadPressedEventArgs<D>;
};

template <> struct traits<Windows::Media::Devices::ILowLagPhotoControl>
{
    using abi = ABI::Windows::Media::Devices::ILowLagPhotoControl;
    template <typename D> using consume = Windows::Media::Devices::impl_ILowLagPhotoControl<D>;
};

template <> struct traits<Windows::Media::Devices::ILowLagPhotoSequenceControl>
{
    using abi = ABI::Windows::Media::Devices::ILowLagPhotoSequenceControl;
    template <typename D> using consume = Windows::Media::Devices::impl_ILowLagPhotoSequenceControl<D>;
};

template <> struct traits<Windows::Media::Devices::IMediaDeviceControl>
{
    using abi = ABI::Windows::Media::Devices::IMediaDeviceControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IMediaDeviceControl<D>;
};

template <> struct traits<Windows::Media::Devices::IMediaDeviceControlCapabilities>
{
    using abi = ABI::Windows::Media::Devices::IMediaDeviceControlCapabilities;
    template <typename D> using consume = Windows::Media::Devices::impl_IMediaDeviceControlCapabilities<D>;
};

template <> struct traits<Windows::Media::Devices::IMediaDeviceController>
{
    using abi = ABI::Windows::Media::Devices::IMediaDeviceController;
    template <typename D> using consume = Windows::Media::Devices::impl_IMediaDeviceController<D>;
};

template <> struct traits<Windows::Media::Devices::IMediaDeviceStatics>
{
    using abi = ABI::Windows::Media::Devices::IMediaDeviceStatics;
    template <typename D> using consume = Windows::Media::Devices::impl_IMediaDeviceStatics<D>;
};

template <> struct traits<Windows::Media::Devices::IOpticalImageStabilizationControl>
{
    using abi = ABI::Windows::Media::Devices::IOpticalImageStabilizationControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IOpticalImageStabilizationControl<D>;
};

template <> struct traits<Windows::Media::Devices::IPhotoConfirmationControl>
{
    using abi = ABI::Windows::Media::Devices::IPhotoConfirmationControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IPhotoConfirmationControl<D>;
};

template <> struct traits<Windows::Media::Devices::IRedialRequestedEventArgs>
{
    using abi = ABI::Windows::Media::Devices::IRedialRequestedEventArgs;
    template <typename D> using consume = Windows::Media::Devices::impl_IRedialRequestedEventArgs<D>;
};

template <> struct traits<Windows::Media::Devices::IRegionOfInterest>
{
    using abi = ABI::Windows::Media::Devices::IRegionOfInterest;
    template <typename D> using consume = Windows::Media::Devices::impl_IRegionOfInterest<D>;
};

template <> struct traits<Windows::Media::Devices::IRegionOfInterest2>
{
    using abi = ABI::Windows::Media::Devices::IRegionOfInterest2;
    template <typename D> using consume = Windows::Media::Devices::impl_IRegionOfInterest2<D>;
};

template <> struct traits<Windows::Media::Devices::IRegionsOfInterestControl>
{
    using abi = ABI::Windows::Media::Devices::IRegionsOfInterestControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IRegionsOfInterestControl<D>;
};

template <> struct traits<Windows::Media::Devices::ISceneModeControl>
{
    using abi = ABI::Windows::Media::Devices::ISceneModeControl;
    template <typename D> using consume = Windows::Media::Devices::impl_ISceneModeControl<D>;
};

template <> struct traits<Windows::Media::Devices::ITorchControl>
{
    using abi = ABI::Windows::Media::Devices::ITorchControl;
    template <typename D> using consume = Windows::Media::Devices::impl_ITorchControl<D>;
};

template <> struct traits<Windows::Media::Devices::IVideoDeviceController>
{
    using abi = ABI::Windows::Media::Devices::IVideoDeviceController;
    template <typename D> using consume = Windows::Media::Devices::impl_IVideoDeviceController<D>;
};

template <> struct traits<Windows::Media::Devices::IWhiteBalanceControl>
{
    using abi = ABI::Windows::Media::Devices::IWhiteBalanceControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IWhiteBalanceControl<D>;
};

template <> struct traits<Windows::Media::Devices::IZoomControl>
{
    using abi = ABI::Windows::Media::Devices::IZoomControl;
    template <typename D> using consume = Windows::Media::Devices::impl_IZoomControl<D>;
};

template <> struct traits<Windows::Media::Devices::IZoomControl2>
{
    using abi = ABI::Windows::Media::Devices::IZoomControl2;
    template <typename D> using consume = Windows::Media::Devices::impl_IZoomControl2<D>;
};

template <> struct traits<Windows::Media::Devices::IZoomSettings>
{
    using abi = ABI::Windows::Media::Devices::IZoomSettings;
    template <typename D> using consume = Windows::Media::Devices::impl_IZoomSettings<D>;
};

template <> struct traits<Windows::Media::Devices::KeypadPressedEventHandler>
{
    using abi = ABI::Windows::Media::Devices::KeypadPressedEventHandler;
};

template <> struct traits<Windows::Media::Devices::RedialRequestedEventHandler>
{
    using abi = ABI::Windows::Media::Devices::RedialRequestedEventHandler;
};

template <> struct traits<Windows::Media::Devices::AdvancedPhotoCaptureSettings>
{
    using abi = ABI::Windows::Media::Devices::AdvancedPhotoCaptureSettings;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.AdvancedPhotoCaptureSettings"; }
};

template <> struct traits<Windows::Media::Devices::AdvancedPhotoControl>
{
    using abi = ABI::Windows::Media::Devices::AdvancedPhotoControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.AdvancedPhotoControl"; }
};

template <> struct traits<Windows::Media::Devices::AudioDeviceController>
{
    using abi = ABI::Windows::Media::Devices::AudioDeviceController;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.AudioDeviceController"; }
};

template <> struct traits<Windows::Media::Devices::CallControl>
{
    using abi = ABI::Windows::Media::Devices::CallControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.CallControl"; }
};

template <> struct traits<Windows::Media::Devices::DefaultAudioCaptureDeviceChangedEventArgs>
{
    using abi = ABI::Windows::Media::Devices::DefaultAudioCaptureDeviceChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.DefaultAudioCaptureDeviceChangedEventArgs"; }
};

template <> struct traits<Windows::Media::Devices::DefaultAudioRenderDeviceChangedEventArgs>
{
    using abi = ABI::Windows::Media::Devices::DefaultAudioRenderDeviceChangedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.DefaultAudioRenderDeviceChangedEventArgs"; }
};

template <> struct traits<Windows::Media::Devices::DialRequestedEventArgs>
{
    using abi = ABI::Windows::Media::Devices::DialRequestedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.DialRequestedEventArgs"; }
};

template <> struct traits<Windows::Media::Devices::ExposureCompensationControl>
{
    using abi = ABI::Windows::Media::Devices::ExposureCompensationControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.ExposureCompensationControl"; }
};

template <> struct traits<Windows::Media::Devices::ExposureControl>
{
    using abi = ABI::Windows::Media::Devices::ExposureControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.ExposureControl"; }
};

template <> struct traits<Windows::Media::Devices::ExposurePriorityVideoControl>
{
    using abi = ABI::Windows::Media::Devices::ExposurePriorityVideoControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.ExposurePriorityVideoControl"; }
};

template <> struct traits<Windows::Media::Devices::FlashControl>
{
    using abi = ABI::Windows::Media::Devices::FlashControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.FlashControl"; }
};

template <> struct traits<Windows::Media::Devices::FocusControl>
{
    using abi = ABI::Windows::Media::Devices::FocusControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.FocusControl"; }
};

template <> struct traits<Windows::Media::Devices::FocusSettings>
{
    using abi = ABI::Windows::Media::Devices::FocusSettings;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.FocusSettings"; }
};

template <> struct traits<Windows::Media::Devices::HdrVideoControl>
{
    using abi = ABI::Windows::Media::Devices::HdrVideoControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.HdrVideoControl"; }
};

template <> struct traits<Windows::Media::Devices::IsoSpeedControl>
{
    using abi = ABI::Windows::Media::Devices::IsoSpeedControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.IsoSpeedControl"; }
};

template <> struct traits<Windows::Media::Devices::KeypadPressedEventArgs>
{
    using abi = ABI::Windows::Media::Devices::KeypadPressedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.KeypadPressedEventArgs"; }
};

template <> struct traits<Windows::Media::Devices::LowLagPhotoControl>
{
    using abi = ABI::Windows::Media::Devices::LowLagPhotoControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.LowLagPhotoControl"; }
};

template <> struct traits<Windows::Media::Devices::LowLagPhotoSequenceControl>
{
    using abi = ABI::Windows::Media::Devices::LowLagPhotoSequenceControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.LowLagPhotoSequenceControl"; }
};

template <> struct traits<Windows::Media::Devices::MediaDevice>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.MediaDevice"; }
};

template <> struct traits<Windows::Media::Devices::MediaDeviceControl>
{
    using abi = ABI::Windows::Media::Devices::MediaDeviceControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.MediaDeviceControl"; }
};

template <> struct traits<Windows::Media::Devices::MediaDeviceControlCapabilities>
{
    using abi = ABI::Windows::Media::Devices::MediaDeviceControlCapabilities;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.MediaDeviceControlCapabilities"; }
};

template <> struct traits<Windows::Media::Devices::OpticalImageStabilizationControl>
{
    using abi = ABI::Windows::Media::Devices::OpticalImageStabilizationControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.OpticalImageStabilizationControl"; }
};

template <> struct traits<Windows::Media::Devices::PhotoConfirmationControl>
{
    using abi = ABI::Windows::Media::Devices::PhotoConfirmationControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.PhotoConfirmationControl"; }
};

template <> struct traits<Windows::Media::Devices::RedialRequestedEventArgs>
{
    using abi = ABI::Windows::Media::Devices::RedialRequestedEventArgs;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.RedialRequestedEventArgs"; }
};

template <> struct traits<Windows::Media::Devices::RegionOfInterest>
{
    using abi = ABI::Windows::Media::Devices::RegionOfInterest;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.RegionOfInterest"; }
};

template <> struct traits<Windows::Media::Devices::RegionsOfInterestControl>
{
    using abi = ABI::Windows::Media::Devices::RegionsOfInterestControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.RegionsOfInterestControl"; }
};

template <> struct traits<Windows::Media::Devices::SceneModeControl>
{
    using abi = ABI::Windows::Media::Devices::SceneModeControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.SceneModeControl"; }
};

template <> struct traits<Windows::Media::Devices::TorchControl>
{
    using abi = ABI::Windows::Media::Devices::TorchControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.TorchControl"; }
};

template <> struct traits<Windows::Media::Devices::VideoDeviceController>
{
    using abi = ABI::Windows::Media::Devices::VideoDeviceController;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.VideoDeviceController"; }
};

template <> struct traits<Windows::Media::Devices::WhiteBalanceControl>
{
    using abi = ABI::Windows::Media::Devices::WhiteBalanceControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.WhiteBalanceControl"; }
};

template <> struct traits<Windows::Media::Devices::ZoomControl>
{
    using abi = ABI::Windows::Media::Devices::ZoomControl;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.ZoomControl"; }
};

template <> struct traits<Windows::Media::Devices::ZoomSettings>
{
    using abi = ABI::Windows::Media::Devices::ZoomSettings;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.Devices.ZoomSettings"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Printers.Extensions.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::Printers::Extensions {

struct IPrint3DWorkflow;
struct IPrint3DWorkflow2;
struct IPrint3DWorkflowPrintRequestedEventArgs;
struct IPrint3DWorkflowPrinterChangedEventArgs;
struct IPrintExtensionContextStatic;
struct IPrintNotificationEventDetails;
struct IPrintTaskConfiguration;
struct IPrintTaskConfigurationSaveRequest;
struct IPrintTaskConfigurationSaveRequestedDeferral;
struct IPrintTaskConfigurationSaveRequestedEventArgs;
struct Print3DWorkflow;
struct Print3DWorkflowPrintRequestedEventArgs;
struct Print3DWorkflowPrinterChangedEventArgs;
struct PrintNotificationEventDetails;
struct PrintTaskConfiguration;
struct PrintTaskConfigurationSaveRequest;
struct PrintTaskConfigurationSaveRequestedDeferral;
struct PrintTaskConfigurationSaveRequestedEventArgs;

}

namespace Windows::Devices::Printers::Extensions {

struct IPrint3DWorkflow;
struct IPrint3DWorkflow2;
struct IPrint3DWorkflowPrintRequestedEventArgs;
struct IPrint3DWorkflowPrinterChangedEventArgs;
struct IPrintExtensionContextStatic;
struct IPrintNotificationEventDetails;
struct IPrintTaskConfiguration;
struct IPrintTaskConfigurationSaveRequest;
struct IPrintTaskConfigurationSaveRequestedDeferral;
struct IPrintTaskConfigurationSaveRequestedEventArgs;
struct Print3DWorkflow;
struct Print3DWorkflowPrintRequestedEventArgs;
struct Print3DWorkflowPrinterChangedEventArgs;
struct PrintExtensionContext;
struct PrintNotificationEventDetails;
struct PrintTaskConfiguration;
struct PrintTaskConfigurationSaveRequest;
struct PrintTaskConfigurationSaveRequestedDeferral;
struct PrintTaskConfigurationSaveRequestedEventArgs;

}

namespace Windows::Devices::Printers::Extensions {

enum class Print3DWorkflowDetail
{
    Unknown = 0,
    ModelExceedsPrintBed = 1,
    UploadFailed = 2,
    InvalidMaterialSelection = 3,
    InvalidModel = 4,
    ModelNotManifold = 5,
    InvalidPrintTicket = 6,
};

enum class Print3DWorkflowStatus
{
    Abandoned = 0,
    Canceled = 1,
    Failed = 2,
    Slicing = 3,
    Submitted = 4,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Web.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Web.3.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Web::IUriToStreamResolver> : produce_base<D, Windows::Web::IUriToStreamResolver>
{
    HRESULT __stdcall abi_UriToStreamAsync(abi_arg_in<Windows::Foundation::IUriRuntimeClass> uri, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IInputStream>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().UriToStreamAsync(*reinterpret_cast<const Windows::Foundation::Uri *>(&uri)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Web::IWebErrorStatics> : produce_base<D, Windows::Web::IWebErrorStatics>
{
    HRESULT __stdcall abi_GetStatus(int32_t hresult, Windows::Web::WebErrorStatus * status) noexcept override
    {
        try
        {
            *status = detach(this->shim().GetStatus(hresult));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Web {

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IInputStream> impl_IUriToStreamResolver<D>::UriToStreamAsync(const Windows::Foundation::Uri & uri) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IInputStream> operation;
    check_hresult(static_cast<const IUriToStreamResolver &>(static_cast<const D &>(*this))->abi_UriToStreamAsync(get(uri), put(operation)));
    return operation;
}

template <typename D> Windows::Web::WebErrorStatus impl_IWebErrorStatics<D>::GetStatus(int32_t hresult) const
{
    Windows::Web::WebErrorStatus status {};
    check_hresult(static_cast<const IWebErrorStatics &>(static_cast<const D &>(*this))->abi_GetStatus(hresult, &status));
    return status;
}

inline Windows::Web::WebErrorStatus WebError::GetStatus(int32_t hresult)
{
    return get_activation_factory<WebError, IWebErrorStatics>().GetStatus(hresult);
}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Radios.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::Radios {

struct IRadio;
struct IRadioStatics;
struct Radio;

}

namespace Windows::Devices::Radios {

struct IRadio;
struct IRadioStatics;
struct Radio;

}

namespace Windows::Devices::Radios {

enum class RadioAccessStatus
{
    Unspecified = 0,
    Allowed = 1,
    DeniedByUser = 2,
    DeniedBySystem = 3,
};

enum class RadioKind
{
    Other = 0,
    WiFi = 1,
    MobileBroadband = 2,
    Bluetooth = 3,
    FM = 4,
};

enum class RadioState
{
    Unknown = 0,
    On = 1,
    Off = 2,
    Disabled = 3,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Services.Store.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Services.Store.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Services::Store {

struct WINRT_EBO StoreAcquireLicenseResult :
    Windows::Services::Store::IStoreAcquireLicenseResult
{
    StoreAcquireLicenseResult(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreAppLicense :
    Windows::Services::Store::IStoreAppLicense
{
    StoreAppLicense(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreAvailability :
    Windows::Services::Store::IStoreAvailability
{
    StoreAvailability(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreCollectionData :
    Windows::Services::Store::IStoreCollectionData
{
    StoreCollectionData(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreConsumableResult :
    Windows::Services::Store::IStoreConsumableResult
{
    StoreConsumableResult(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreContext :
    Windows::Services::Store::IStoreContext
{
    StoreContext(std::nullptr_t) noexcept {}
    static Windows::Services::Store::StoreContext GetDefault();
    static Windows::Services::Store::StoreContext GetForUser(const Windows::System::User & user);
};

struct WINRT_EBO StoreImage :
    Windows::Services::Store::IStoreImage
{
    StoreImage(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreLicense :
    Windows::Services::Store::IStoreLicense
{
    StoreLicense(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StorePackageLicense :
    Windows::Services::Store::IStorePackageLicense
{
    StorePackageLicense(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StorePackageUpdate :
    Windows::Services::Store::IStorePackageUpdate
{
    StorePackageUpdate(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StorePackageUpdateResult :
    Windows::Services::Store::IStorePackageUpdateResult
{
    StorePackageUpdateResult(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StorePrice :
    Windows::Services::Store::IStorePrice
{
    StorePrice(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreProduct :
    Windows::Services::Store::IStoreProduct
{
    StoreProduct(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreProductPagedQueryResult :
    Windows::Services::Store::IStoreProductPagedQueryResult
{
    StoreProductPagedQueryResult(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreProductQueryResult :
    Windows::Services::Store::IStoreProductQueryResult
{
    StoreProductQueryResult(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreProductResult :
    Windows::Services::Store::IStoreProductResult
{
    StoreProductResult(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StorePurchaseProperties :
    Windows::Services::Store::IStorePurchaseProperties
{
    StorePurchaseProperties(std::nullptr_t) noexcept {}
    StorePurchaseProperties();
    StorePurchaseProperties(hstring_ref name);
};

struct WINRT_EBO StorePurchaseResult :
    Windows::Services::Store::IStorePurchaseResult
{
    StorePurchaseResult(std::nullptr_t) noexcept {}
};

struct StoreRequestHelper
{
    StoreRequestHelper() = delete;
    static Windows::Foundation::IAsyncOperation<Windows::Services::Store::StoreSendRequestResult> SendRequestAsync(const Windows::Services::Store::StoreContext & context, uint32_t requestKind, hstring_ref parametersAsJson);
};

struct WINRT_EBO StoreSendRequestResult :
    Windows::Services::Store::IStoreSendRequestResult
{
    StoreSendRequestResult(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreSku :
    Windows::Services::Store::IStoreSku
{
    StoreSku(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreSubscriptionInfo :
    Windows::Services::Store::IStoreSubscriptionInfo
{
    StoreSubscriptionInfo(std::nullptr_t) noexcept {}
};

struct WINRT_EBO StoreVideo :
    Windows::Services::Store::IStoreVideo
{
    StoreVideo(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/Windows.Devices.Usb.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "internal/Windows.Storage.Streams.3.h"
#include "internal/Windows.Foundation.3.h"
#include "internal/Windows.Foundation.Collections.3.h"
#include "internal/Windows.Devices.Usb.3.h"
#include "Windows.Devices.h"
#include "Windows.Foundation.h"

WINRT_EXPORT namespace winrt {

namespace impl {

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbBulkInEndpointDescriptor> : produce_base<D, Windows::Devices::Usb::IUsbBulkInEndpointDescriptor>
{
    HRESULT __stdcall get_MaxPacketSize(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxPacketSize());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EndpointNumber(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EndpointNumber());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Pipe(abi_arg_out<Windows::Devices::Usb::IUsbBulkInPipe> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Pipe());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbBulkInPipe> : produce_base<D, Windows::Devices::Usb::IUsbBulkInPipe>
{
    HRESULT __stdcall get_MaxTransferSizeBytes(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxTransferSizeBytes());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EndpointDescriptor(abi_arg_out<Windows::Devices::Usb::IUsbBulkInEndpointDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EndpointDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ClearStallAsync(abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ClearStallAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ReadOptions(Windows::Devices::Usb::UsbReadOptions value) noexcept override
    {
        try
        {
            this->shim().ReadOptions(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ReadOptions(Windows::Devices::Usb::UsbReadOptions * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ReadOptions());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_FlushBuffer() noexcept override
    {
        try
        {
            this->shim().FlushBuffer();
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InputStream(abi_arg_out<Windows::Storage::Streams::IInputStream> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InputStream());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbBulkOutEndpointDescriptor> : produce_base<D, Windows::Devices::Usb::IUsbBulkOutEndpointDescriptor>
{
    HRESULT __stdcall get_MaxPacketSize(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxPacketSize());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EndpointNumber(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EndpointNumber());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Pipe(abi_arg_out<Windows::Devices::Usb::IUsbBulkOutPipe> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Pipe());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbBulkOutPipe> : produce_base<D, Windows::Devices::Usb::IUsbBulkOutPipe>
{
    HRESULT __stdcall get_EndpointDescriptor(abi_arg_out<Windows::Devices::Usb::IUsbBulkOutEndpointDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EndpointDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ClearStallAsync(abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ClearStallAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_WriteOptions(Windows::Devices::Usb::UsbWriteOptions value) noexcept override
    {
        try
        {
            this->shim().WriteOptions(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WriteOptions(Windows::Devices::Usb::UsbWriteOptions * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WriteOptions());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OutputStream(abi_arg_out<Windows::Storage::Streams::IOutputStream> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OutputStream());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbConfiguration> : produce_base<D, Windows::Devices::Usb::IUsbConfiguration>
{
    HRESULT __stdcall get_UsbInterfaces(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterface>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().UsbInterfaces());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ConfigurationDescriptor(abi_arg_out<Windows::Devices::Usb::IUsbConfigurationDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ConfigurationDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Descriptors(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbDescriptor>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Descriptors());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbConfigurationDescriptor> : produce_base<D, Windows::Devices::Usb::IUsbConfigurationDescriptor>
{
    HRESULT __stdcall get_ConfigurationValue(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ConfigurationValue());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaxPowerMilliamps(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxPowerMilliamps());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SelfPowered(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SelfPowered());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_RemoteWakeup(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RemoteWakeup());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbConfigurationDescriptorStatics> : produce_base<D, Windows::Devices::Usb::IUsbConfigurationDescriptorStatics>
{
    HRESULT __stdcall abi_TryParse(abi_arg_in<Windows::Devices::Usb::IUsbDescriptor> descriptor, abi_arg_out<Windows::Devices::Usb::IUsbConfigurationDescriptor> parsed, bool * success) noexcept override
    {
        try
        {
            *success = detach(this->shim().TryParse(*reinterpret_cast<const Windows::Devices::Usb::UsbDescriptor *>(&descriptor), *parsed));
            return S_OK;
        }
        catch (...)
        {
            *parsed = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Parse(abi_arg_in<Windows::Devices::Usb::IUsbDescriptor> descriptor, abi_arg_out<Windows::Devices::Usb::IUsbConfigurationDescriptor> parsed) noexcept override
    {
        try
        {
            *parsed = detach(this->shim().Parse(*reinterpret_cast<const Windows::Devices::Usb::UsbDescriptor *>(&descriptor)));
            return S_OK;
        }
        catch (...)
        {
            *parsed = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbControlRequestType> : produce_base<D, Windows::Devices::Usb::IUsbControlRequestType>
{
    HRESULT __stdcall get_Direction(Windows::Devices::Usb::UsbTransferDirection * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Direction());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Direction(Windows::Devices::Usb::UsbTransferDirection value) noexcept override
    {
        try
        {
            this->shim().Direction(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ControlTransferType(Windows::Devices::Usb::UsbControlTransferType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ControlTransferType());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ControlTransferType(Windows::Devices::Usb::UsbControlTransferType value) noexcept override
    {
        try
        {
            this->shim().ControlTransferType(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Recipient(Windows::Devices::Usb::UsbControlRecipient * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Recipient());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Recipient(Windows::Devices::Usb::UsbControlRecipient value) noexcept override
    {
        try
        {
            this->shim().Recipient(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AsByte(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AsByte());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_AsByte(uint8_t value) noexcept override
    {
        try
        {
            this->shim().AsByte(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbDescriptor> : produce_base<D, Windows::Devices::Usb::IUsbDescriptor>
{
    HRESULT __stdcall get_Length(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Length());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DescriptorType(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DescriptorType());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ReadDescriptorBuffer(abi_arg_in<Windows::Storage::Streams::IBuffer> buffer) noexcept override
    {
        try
        {
            this->shim().ReadDescriptorBuffer(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&buffer));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbDevice> : produce_base<D, Windows::Devices::Usb::IUsbDevice>
{
    HRESULT __stdcall abi_SendControlOutTransferAsync(abi_arg_in<Windows::Devices::Usb::IUsbSetupPacket> setupPacket, abi_arg_in<Windows::Storage::Streams::IBuffer> buffer, abi_arg_out<Windows::Foundation::IAsyncOperation<uint32_t>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().SendControlOutTransferAsync(*reinterpret_cast<const Windows::Devices::Usb::UsbSetupPacket *>(&setupPacket), *reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&buffer)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SendControlOutTransferAsyncNoBuffer(abi_arg_in<Windows::Devices::Usb::IUsbSetupPacket> setupPacket, abi_arg_out<Windows::Foundation::IAsyncOperation<uint32_t>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().SendControlOutTransferAsync(*reinterpret_cast<const Windows::Devices::Usb::UsbSetupPacket *>(&setupPacket)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SendControlInTransferAsync(abi_arg_in<Windows::Devices::Usb::IUsbSetupPacket> setupPacket, abi_arg_in<Windows::Storage::Streams::IBuffer> buffer, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().SendControlInTransferAsync(*reinterpret_cast<const Windows::Devices::Usb::UsbSetupPacket *>(&setupPacket), *reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&buffer)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SendControlInTransferAsyncNoBuffer(abi_arg_in<Windows::Devices::Usb::IUsbSetupPacket> setupPacket, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().SendControlInTransferAsync(*reinterpret_cast<const Windows::Devices::Usb::UsbSetupPacket *>(&setupPacket)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DefaultInterface(abi_arg_out<Windows::Devices::Usb::IUsbInterface> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DefaultInterface());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DeviceDescriptor(abi_arg_out<Windows::Devices::Usb::IUsbDeviceDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DeviceDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Configuration(abi_arg_out<Windows::Devices::Usb::IUsbConfiguration> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Configuration());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbDeviceClass> : produce_base<D, Windows::Devices::Usb::IUsbDeviceClass>
{
    HRESULT __stdcall get_ClassCode(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ClassCode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ClassCode(uint8_t value) noexcept override
    {
        try
        {
            this->shim().ClassCode(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SubclassCode(abi_arg_out<Windows::Foundation::IReference<uint8_t>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SubclassCode());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_SubclassCode(abi_arg_in<Windows::Foundation::IReference<uint8_t>> value) noexcept override
    {
        try
        {
            this->shim().SubclassCode(*reinterpret_cast<const Windows::Foundation::IReference<uint8_t> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ProtocolCode(abi_arg_out<Windows::Foundation::IReference<uint8_t>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ProtocolCode());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_ProtocolCode(abi_arg_in<Windows::Foundation::IReference<uint8_t>> value) noexcept override
    {
        try
        {
            this->shim().ProtocolCode(*reinterpret_cast<const Windows::Foundation::IReference<uint8_t> *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbDeviceClasses> : produce_base<D, Windows::Devices::Usb::IUsbDeviceClasses>
{};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbDeviceClassesStatics> : produce_base<D, Windows::Devices::Usb::IUsbDeviceClassesStatics>
{
    HRESULT __stdcall get_CdcControl(abi_arg_out<Windows::Devices::Usb::IUsbDeviceClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CdcControl());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Physical(abi_arg_out<Windows::Devices::Usb::IUsbDeviceClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Physical());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PersonalHealthcare(abi_arg_out<Windows::Devices::Usb::IUsbDeviceClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PersonalHealthcare());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ActiveSync(abi_arg_out<Windows::Devices::Usb::IUsbDeviceClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ActiveSync());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_PalmSync(abi_arg_out<Windows::Devices::Usb::IUsbDeviceClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().PalmSync());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_DeviceFirmwareUpdate(abi_arg_out<Windows::Devices::Usb::IUsbDeviceClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().DeviceFirmwareUpdate());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Irda(abi_arg_out<Windows::Devices::Usb::IUsbDeviceClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Irda());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Measurement(abi_arg_out<Windows::Devices::Usb::IUsbDeviceClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Measurement());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_VendorSpecific(abi_arg_out<Windows::Devices::Usb::IUsbDeviceClass> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().VendorSpecific());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbDeviceDescriptor> : produce_base<D, Windows::Devices::Usb::IUsbDeviceDescriptor>
{
    HRESULT __stdcall get_BcdUsb(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BcdUsb());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_MaxPacketSize0(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxPacketSize0());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_VendorId(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().VendorId());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ProductId(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ProductId());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BcdDeviceRevision(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BcdDeviceRevision());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_NumberOfConfigurations(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().NumberOfConfigurations());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbDeviceStatics> : produce_base<D, Windows::Devices::Usb::IUsbDeviceStatics>
{
    HRESULT __stdcall abi_GetDeviceSelector(uint32_t vendorId, uint32_t productId, GUID winUsbInterfaceClass, abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeviceSelector(vendorId, productId, winUsbInterfaceClass));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeviceSelectorGuidOnly(GUID winUsbInterfaceClass, abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeviceSelector(winUsbInterfaceClass));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeviceSelectorVidPidOnly(uint32_t vendorId, uint32_t productId, abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeviceSelector(vendorId, productId));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_GetDeviceClassSelector(abi_arg_in<Windows::Devices::Usb::IUsbDeviceClass> usbClass, abi_arg_out<hstring> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().GetDeviceClassSelector(*reinterpret_cast<const Windows::Devices::Usb::UsbDeviceClass *>(&usbClass)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_FromIdAsync(abi_arg_in<hstring> deviceId, abi_arg_out<Windows::Foundation::IAsyncOperation<Windows::Devices::Usb::UsbDevice>> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().FromIdAsync(*reinterpret_cast<const hstring *>(&deviceId)));
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbEndpointDescriptor> : produce_base<D, Windows::Devices::Usb::IUsbEndpointDescriptor>
{
    HRESULT __stdcall get_EndpointNumber(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EndpointNumber());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Direction(Windows::Devices::Usb::UsbTransferDirection * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Direction());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EndpointType(Windows::Devices::Usb::UsbEndpointType * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EndpointType());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AsBulkInEndpointDescriptor(abi_arg_out<Windows::Devices::Usb::IUsbBulkInEndpointDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AsBulkInEndpointDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AsInterruptInEndpointDescriptor(abi_arg_out<Windows::Devices::Usb::IUsbInterruptInEndpointDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AsInterruptInEndpointDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AsBulkOutEndpointDescriptor(abi_arg_out<Windows::Devices::Usb::IUsbBulkOutEndpointDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AsBulkOutEndpointDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AsInterruptOutEndpointDescriptor(abi_arg_out<Windows::Devices::Usb::IUsbInterruptOutEndpointDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AsInterruptOutEndpointDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbEndpointDescriptorStatics> : produce_base<D, Windows::Devices::Usb::IUsbEndpointDescriptorStatics>
{
    HRESULT __stdcall abi_TryParse(abi_arg_in<Windows::Devices::Usb::IUsbDescriptor> descriptor, abi_arg_out<Windows::Devices::Usb::IUsbEndpointDescriptor> parsed, bool * success) noexcept override
    {
        try
        {
            *success = detach(this->shim().TryParse(*reinterpret_cast<const Windows::Devices::Usb::UsbDescriptor *>(&descriptor), *parsed));
            return S_OK;
        }
        catch (...)
        {
            *parsed = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Parse(abi_arg_in<Windows::Devices::Usb::IUsbDescriptor> descriptor, abi_arg_out<Windows::Devices::Usb::IUsbEndpointDescriptor> parsed) noexcept override
    {
        try
        {
            *parsed = detach(this->shim().Parse(*reinterpret_cast<const Windows::Devices::Usb::UsbDescriptor *>(&descriptor)));
            return S_OK;
        }
        catch (...)
        {
            *parsed = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbInterface> : produce_base<D, Windows::Devices::Usb::IUsbInterface>
{
    HRESULT __stdcall get_BulkInPipes(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkInPipe>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BulkInPipes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InterruptInPipes(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptInPipe>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InterruptInPipes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BulkOutPipes(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkOutPipe>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BulkOutPipes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InterruptOutPipes(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptOutPipe>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InterruptOutPipes());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InterfaceSettings(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterfaceSetting>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InterfaceSettings());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InterfaceNumber(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InterfaceNumber());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Descriptors(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbDescriptor>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Descriptors());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbInterfaceDescriptor> : produce_base<D, Windows::Devices::Usb::IUsbInterfaceDescriptor>
{
    HRESULT __stdcall get_ClassCode(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ClassCode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_SubclassCode(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().SubclassCode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_ProtocolCode(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().ProtocolCode());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_AlternateSettingNumber(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().AlternateSettingNumber());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InterfaceNumber(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InterfaceNumber());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbInterfaceDescriptorStatics> : produce_base<D, Windows::Devices::Usb::IUsbInterfaceDescriptorStatics>
{
    HRESULT __stdcall abi_TryParse(abi_arg_in<Windows::Devices::Usb::IUsbDescriptor> descriptor, abi_arg_out<Windows::Devices::Usb::IUsbInterfaceDescriptor> parsed, bool * success) noexcept override
    {
        try
        {
            *success = detach(this->shim().TryParse(*reinterpret_cast<const Windows::Devices::Usb::UsbDescriptor *>(&descriptor), *parsed));
            return S_OK;
        }
        catch (...)
        {
            *parsed = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_Parse(abi_arg_in<Windows::Devices::Usb::IUsbDescriptor> descriptor, abi_arg_out<Windows::Devices::Usb::IUsbInterfaceDescriptor> parsed) noexcept override
    {
        try
        {
            *parsed = detach(this->shim().Parse(*reinterpret_cast<const Windows::Devices::Usb::UsbDescriptor *>(&descriptor)));
            return S_OK;
        }
        catch (...)
        {
            *parsed = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbInterfaceSetting> : produce_base<D, Windows::Devices::Usb::IUsbInterfaceSetting>
{
    HRESULT __stdcall get_BulkInEndpoints(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkInEndpointDescriptor>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BulkInEndpoints());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InterruptInEndpoints(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptInEndpointDescriptor>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InterruptInEndpoints());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_BulkOutEndpoints(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkOutEndpointDescriptor>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().BulkOutEndpoints());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InterruptOutEndpoints(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InterruptOutEndpoints());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Selected(bool * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Selected());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_SelectSettingAsync(abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().SelectSettingAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_InterfaceDescriptor(abi_arg_out<Windows::Devices::Usb::IUsbInterfaceDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InterfaceDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Descriptors(abi_arg_out<Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbDescriptor>> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Descriptors());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbInterruptInEndpointDescriptor> : produce_base<D, Windows::Devices::Usb::IUsbInterruptInEndpointDescriptor>
{
    HRESULT __stdcall get_MaxPacketSize(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxPacketSize());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EndpointNumber(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EndpointNumber());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Interval(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Interval());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Pipe(abi_arg_out<Windows::Devices::Usb::IUsbInterruptInPipe> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Pipe());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbInterruptInEventArgs> : produce_base<D, Windows::Devices::Usb::IUsbInterruptInEventArgs>
{
    HRESULT __stdcall get_InterruptData(abi_arg_out<Windows::Storage::Streams::IBuffer> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().InterruptData());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbInterruptInPipe> : produce_base<D, Windows::Devices::Usb::IUsbInterruptInPipe>
{
    HRESULT __stdcall get_EndpointDescriptor(abi_arg_out<Windows::Devices::Usb::IUsbInterruptInEndpointDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EndpointDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ClearStallAsync(abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ClearStallAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall add_DataReceived(abi_arg_in<Windows::Foundation::TypedEventHandler<Windows::Devices::Usb::UsbInterruptInPipe, Windows::Devices::Usb::UsbInterruptInEventArgs>> handler, event_token * token) noexcept override
    {
        try
        {
            *token = detach(this->shim().DataReceived(*reinterpret_cast<const Windows::Foundation::TypedEventHandler<Windows::Devices::Usb::UsbInterruptInPipe, Windows::Devices::Usb::UsbInterruptInEventArgs> *>(&handler)));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall remove_DataReceived(event_token token) noexcept override
    {
        try
        {
            this->shim().DataReceived(token);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbInterruptOutEndpointDescriptor> : produce_base<D, Windows::Devices::Usb::IUsbInterruptOutEndpointDescriptor>
{
    HRESULT __stdcall get_MaxPacketSize(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().MaxPacketSize());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_EndpointNumber(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EndpointNumber());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Interval(abi_arg_out<Windows::Foundation::TimeSpan> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Interval());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Pipe(abi_arg_out<Windows::Devices::Usb::IUsbInterruptOutPipe> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Pipe());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbInterruptOutPipe> : produce_base<D, Windows::Devices::Usb::IUsbInterruptOutPipe>
{
    HRESULT __stdcall get_EndpointDescriptor(abi_arg_out<Windows::Devices::Usb::IUsbInterruptOutEndpointDescriptor> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().EndpointDescriptor());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall abi_ClearStallAsync(abi_arg_out<Windows::Foundation::IAsyncAction> operation) noexcept override
    {
        try
        {
            *operation = detach(this->shim().ClearStallAsync());
            return S_OK;
        }
        catch (...)
        {
            *operation = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_WriteOptions(Windows::Devices::Usb::UsbWriteOptions value) noexcept override
    {
        try
        {
            this->shim().WriteOptions(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_WriteOptions(Windows::Devices::Usb::UsbWriteOptions * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().WriteOptions());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_OutputStream(abi_arg_out<Windows::Storage::Streams::IOutputStream> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().OutputStream());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbSetupPacket> : produce_base<D, Windows::Devices::Usb::IUsbSetupPacket>
{
    HRESULT __stdcall get_RequestType(abi_arg_out<Windows::Devices::Usb::IUsbControlRequestType> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().RequestType());
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_RequestType(abi_arg_in<Windows::Devices::Usb::IUsbControlRequestType> value) noexcept override
    {
        try
        {
            this->shim().RequestType(*reinterpret_cast<const Windows::Devices::Usb::UsbControlRequestType *>(&value));
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Request(uint8_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Request());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Request(uint8_t value) noexcept override
    {
        try
        {
            this->shim().Request(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Value(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Value());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Value(uint32_t value) noexcept override
    {
        try
        {
            this->shim().Value(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Index(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Index());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Index(uint32_t value) noexcept override
    {
        try
        {
            this->shim().Index(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall get_Length(uint32_t * value) noexcept override
    {
        try
        {
            *value = detach(this->shim().Length());
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }

    HRESULT __stdcall put_Length(uint32_t value) noexcept override
    {
        try
        {
            this->shim().Length(value);
            return S_OK;
        }
        catch (...)
        {
            return impl::to_hresult();
        }
    }
};

template <typename D>
struct produce<D, Windows::Devices::Usb::IUsbSetupPacketFactory> : produce_base<D, Windows::Devices::Usb::IUsbSetupPacketFactory>
{
    HRESULT __stdcall abi_CreateWithEightByteBuffer(abi_arg_in<Windows::Storage::Streams::IBuffer> eightByteBuffer, abi_arg_out<Windows::Devices::Usb::IUsbSetupPacket> value) noexcept override
    {
        try
        {
            *value = detach(this->shim().CreateWithEightByteBuffer(*reinterpret_cast<const Windows::Storage::Streams::IBuffer *>(&eightByteBuffer)));
            return S_OK;
        }
        catch (...)
        {
            *value = nullptr;
            return impl::to_hresult();
        }
    }
};

}

namespace Windows::Devices::Usb {

template <typename D> Windows::Devices::Usb::UsbTransferDirection impl_IUsbControlRequestType<D>::Direction() const
{
    Windows::Devices::Usb::UsbTransferDirection value {};
    check_hresult(static_cast<const IUsbControlRequestType &>(static_cast<const D &>(*this))->get_Direction(&value));
    return value;
}

template <typename D> void impl_IUsbControlRequestType<D>::Direction(Windows::Devices::Usb::UsbTransferDirection value) const
{
    check_hresult(static_cast<const IUsbControlRequestType &>(static_cast<const D &>(*this))->put_Direction(value));
}

template <typename D> Windows::Devices::Usb::UsbControlTransferType impl_IUsbControlRequestType<D>::ControlTransferType() const
{
    Windows::Devices::Usb::UsbControlTransferType value {};
    check_hresult(static_cast<const IUsbControlRequestType &>(static_cast<const D &>(*this))->get_ControlTransferType(&value));
    return value;
}

template <typename D> void impl_IUsbControlRequestType<D>::ControlTransferType(Windows::Devices::Usb::UsbControlTransferType value) const
{
    check_hresult(static_cast<const IUsbControlRequestType &>(static_cast<const D &>(*this))->put_ControlTransferType(value));
}

template <typename D> Windows::Devices::Usb::UsbControlRecipient impl_IUsbControlRequestType<D>::Recipient() const
{
    Windows::Devices::Usb::UsbControlRecipient value {};
    check_hresult(static_cast<const IUsbControlRequestType &>(static_cast<const D &>(*this))->get_Recipient(&value));
    return value;
}

template <typename D> void impl_IUsbControlRequestType<D>::Recipient(Windows::Devices::Usb::UsbControlRecipient value) const
{
    check_hresult(static_cast<const IUsbControlRequestType &>(static_cast<const D &>(*this))->put_Recipient(value));
}

template <typename D> uint8_t impl_IUsbControlRequestType<D>::AsByte() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbControlRequestType &>(static_cast<const D &>(*this))->get_AsByte(&value));
    return value;
}

template <typename D> void impl_IUsbControlRequestType<D>::AsByte(uint8_t value) const
{
    check_hresult(static_cast<const IUsbControlRequestType &>(static_cast<const D &>(*this))->put_AsByte(value));
}

template <typename D> Windows::Devices::Usb::UsbSetupPacket impl_IUsbSetupPacketFactory<D>::CreateWithEightByteBuffer(const Windows::Storage::Streams::IBuffer & eightByteBuffer) const
{
    Windows::Devices::Usb::UsbSetupPacket value { nullptr };
    check_hresult(static_cast<const IUsbSetupPacketFactory &>(static_cast<const D &>(*this))->abi_CreateWithEightByteBuffer(get(eightByteBuffer), put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbControlRequestType impl_IUsbSetupPacket<D>::RequestType() const
{
    Windows::Devices::Usb::UsbControlRequestType value { nullptr };
    check_hresult(static_cast<const IUsbSetupPacket &>(static_cast<const D &>(*this))->get_RequestType(put(value)));
    return value;
}

template <typename D> void impl_IUsbSetupPacket<D>::RequestType(const Windows::Devices::Usb::UsbControlRequestType & value) const
{
    check_hresult(static_cast<const IUsbSetupPacket &>(static_cast<const D &>(*this))->put_RequestType(get(value)));
}

template <typename D> uint8_t impl_IUsbSetupPacket<D>::Request() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbSetupPacket &>(static_cast<const D &>(*this))->get_Request(&value));
    return value;
}

template <typename D> void impl_IUsbSetupPacket<D>::Request(uint8_t value) const
{
    check_hresult(static_cast<const IUsbSetupPacket &>(static_cast<const D &>(*this))->put_Request(value));
}

template <typename D> uint32_t impl_IUsbSetupPacket<D>::Value() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbSetupPacket &>(static_cast<const D &>(*this))->get_Value(&value));
    return value;
}

template <typename D> void impl_IUsbSetupPacket<D>::Value(uint32_t value) const
{
    check_hresult(static_cast<const IUsbSetupPacket &>(static_cast<const D &>(*this))->put_Value(value));
}

template <typename D> uint32_t impl_IUsbSetupPacket<D>::Index() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbSetupPacket &>(static_cast<const D &>(*this))->get_Index(&value));
    return value;
}

template <typename D> void impl_IUsbSetupPacket<D>::Index(uint32_t value) const
{
    check_hresult(static_cast<const IUsbSetupPacket &>(static_cast<const D &>(*this))->put_Index(value));
}

template <typename D> uint32_t impl_IUsbSetupPacket<D>::Length() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbSetupPacket &>(static_cast<const D &>(*this))->get_Length(&value));
    return value;
}

template <typename D> void impl_IUsbSetupPacket<D>::Length(uint32_t value) const
{
    check_hresult(static_cast<const IUsbSetupPacket &>(static_cast<const D &>(*this))->put_Length(value));
}

template <typename D> uint8_t impl_IUsbDeviceClass<D>::ClassCode() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbDeviceClass &>(static_cast<const D &>(*this))->get_ClassCode(&value));
    return value;
}

template <typename D> void impl_IUsbDeviceClass<D>::ClassCode(uint8_t value) const
{
    check_hresult(static_cast<const IUsbDeviceClass &>(static_cast<const D &>(*this))->put_ClassCode(value));
}

template <typename D> Windows::Foundation::IReference<uint8_t> impl_IUsbDeviceClass<D>::SubclassCode() const
{
    Windows::Foundation::IReference<uint8_t> value;
    check_hresult(static_cast<const IUsbDeviceClass &>(static_cast<const D &>(*this))->get_SubclassCode(put(value)));
    return value;
}

template <typename D> void impl_IUsbDeviceClass<D>::SubclassCode(const Windows::Foundation::IReference<uint8_t> & value) const
{
    check_hresult(static_cast<const IUsbDeviceClass &>(static_cast<const D &>(*this))->put_SubclassCode(get(value)));
}

template <typename D> Windows::Foundation::IReference<uint8_t> impl_IUsbDeviceClass<D>::ProtocolCode() const
{
    Windows::Foundation::IReference<uint8_t> value;
    check_hresult(static_cast<const IUsbDeviceClass &>(static_cast<const D &>(*this))->get_ProtocolCode(put(value)));
    return value;
}

template <typename D> void impl_IUsbDeviceClass<D>::ProtocolCode(const Windows::Foundation::IReference<uint8_t> & value) const
{
    check_hresult(static_cast<const IUsbDeviceClass &>(static_cast<const D &>(*this))->put_ProtocolCode(get(value)));
}

template <typename D> Windows::Devices::Usb::UsbDeviceClass impl_IUsbDeviceClassesStatics<D>::CdcControl() const
{
    Windows::Devices::Usb::UsbDeviceClass value { nullptr };
    check_hresult(static_cast<const IUsbDeviceClassesStatics &>(static_cast<const D &>(*this))->get_CdcControl(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbDeviceClass impl_IUsbDeviceClassesStatics<D>::Physical() const
{
    Windows::Devices::Usb::UsbDeviceClass value { nullptr };
    check_hresult(static_cast<const IUsbDeviceClassesStatics &>(static_cast<const D &>(*this))->get_Physical(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbDeviceClass impl_IUsbDeviceClassesStatics<D>::PersonalHealthcare() const
{
    Windows::Devices::Usb::UsbDeviceClass value { nullptr };
    check_hresult(static_cast<const IUsbDeviceClassesStatics &>(static_cast<const D &>(*this))->get_PersonalHealthcare(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbDeviceClass impl_IUsbDeviceClassesStatics<D>::ActiveSync() const
{
    Windows::Devices::Usb::UsbDeviceClass value { nullptr };
    check_hresult(static_cast<const IUsbDeviceClassesStatics &>(static_cast<const D &>(*this))->get_ActiveSync(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbDeviceClass impl_IUsbDeviceClassesStatics<D>::PalmSync() const
{
    Windows::Devices::Usb::UsbDeviceClass value { nullptr };
    check_hresult(static_cast<const IUsbDeviceClassesStatics &>(static_cast<const D &>(*this))->get_PalmSync(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbDeviceClass impl_IUsbDeviceClassesStatics<D>::DeviceFirmwareUpdate() const
{
    Windows::Devices::Usb::UsbDeviceClass value { nullptr };
    check_hresult(static_cast<const IUsbDeviceClassesStatics &>(static_cast<const D &>(*this))->get_DeviceFirmwareUpdate(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbDeviceClass impl_IUsbDeviceClassesStatics<D>::Irda() const
{
    Windows::Devices::Usb::UsbDeviceClass value { nullptr };
    check_hresult(static_cast<const IUsbDeviceClassesStatics &>(static_cast<const D &>(*this))->get_Irda(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbDeviceClass impl_IUsbDeviceClassesStatics<D>::Measurement() const
{
    Windows::Devices::Usb::UsbDeviceClass value { nullptr };
    check_hresult(static_cast<const IUsbDeviceClassesStatics &>(static_cast<const D &>(*this))->get_Measurement(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbDeviceClass impl_IUsbDeviceClassesStatics<D>::VendorSpecific() const
{
    Windows::Devices::Usb::UsbDeviceClass value { nullptr };
    check_hresult(static_cast<const IUsbDeviceClassesStatics &>(static_cast<const D &>(*this))->get_VendorSpecific(put(value)));
    return value;
}

template <typename D> hstring impl_IUsbDeviceStatics<D>::GetDeviceSelector(uint32_t vendorId, uint32_t productId, GUID winUsbInterfaceClass) const
{
    hstring value;
    check_hresult(static_cast<const IUsbDeviceStatics &>(static_cast<const D &>(*this))->abi_GetDeviceSelector(vendorId, productId, winUsbInterfaceClass, put(value)));
    return value;
}

template <typename D> hstring impl_IUsbDeviceStatics<D>::GetDeviceSelector(GUID winUsbInterfaceClass) const
{
    hstring value;
    check_hresult(static_cast<const IUsbDeviceStatics &>(static_cast<const D &>(*this))->abi_GetDeviceSelectorGuidOnly(winUsbInterfaceClass, put(value)));
    return value;
}

template <typename D> hstring impl_IUsbDeviceStatics<D>::GetDeviceSelector(uint32_t vendorId, uint32_t productId) const
{
    hstring value;
    check_hresult(static_cast<const IUsbDeviceStatics &>(static_cast<const D &>(*this))->abi_GetDeviceSelectorVidPidOnly(vendorId, productId, put(value)));
    return value;
}

template <typename D> hstring impl_IUsbDeviceStatics<D>::GetDeviceClassSelector(const Windows::Devices::Usb::UsbDeviceClass & usbClass) const
{
    hstring value;
    check_hresult(static_cast<const IUsbDeviceStatics &>(static_cast<const D &>(*this))->abi_GetDeviceClassSelector(get(usbClass), put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Devices::Usb::UsbDevice> impl_IUsbDeviceStatics<D>::FromIdAsync(hstring_ref deviceId) const
{
    Windows::Foundation::IAsyncOperation<Windows::Devices::Usb::UsbDevice> operation;
    check_hresult(static_cast<const IUsbDeviceStatics &>(static_cast<const D &>(*this))->abi_FromIdAsync(get(deviceId), put(operation)));
    return operation;
}

template <typename D> uint32_t impl_IUsbDeviceDescriptor<D>::BcdUsb() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbDeviceDescriptor &>(static_cast<const D &>(*this))->get_BcdUsb(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbDeviceDescriptor<D>::MaxPacketSize0() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbDeviceDescriptor &>(static_cast<const D &>(*this))->get_MaxPacketSize0(&value));
    return value;
}

template <typename D> uint32_t impl_IUsbDeviceDescriptor<D>::VendorId() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbDeviceDescriptor &>(static_cast<const D &>(*this))->get_VendorId(&value));
    return value;
}

template <typename D> uint32_t impl_IUsbDeviceDescriptor<D>::ProductId() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbDeviceDescriptor &>(static_cast<const D &>(*this))->get_ProductId(&value));
    return value;
}

template <typename D> uint32_t impl_IUsbDeviceDescriptor<D>::BcdDeviceRevision() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbDeviceDescriptor &>(static_cast<const D &>(*this))->get_BcdDeviceRevision(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbDeviceDescriptor<D>::NumberOfConfigurations() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbDeviceDescriptor &>(static_cast<const D &>(*this))->get_NumberOfConfigurations(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbConfigurationDescriptor<D>::ConfigurationValue() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbConfigurationDescriptor &>(static_cast<const D &>(*this))->get_ConfigurationValue(&value));
    return value;
}

template <typename D> uint32_t impl_IUsbConfigurationDescriptor<D>::MaxPowerMilliamps() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbConfigurationDescriptor &>(static_cast<const D &>(*this))->get_MaxPowerMilliamps(&value));
    return value;
}

template <typename D> bool impl_IUsbConfigurationDescriptor<D>::SelfPowered() const
{
    bool value {};
    check_hresult(static_cast<const IUsbConfigurationDescriptor &>(static_cast<const D &>(*this))->get_SelfPowered(&value));
    return value;
}

template <typename D> bool impl_IUsbConfigurationDescriptor<D>::RemoteWakeup() const
{
    bool value {};
    check_hresult(static_cast<const IUsbConfigurationDescriptor &>(static_cast<const D &>(*this))->get_RemoteWakeup(&value));
    return value;
}

template <typename D> bool impl_IUsbConfigurationDescriptorStatics<D>::TryParse(const Windows::Devices::Usb::UsbDescriptor & descriptor, Windows::Devices::Usb::UsbConfigurationDescriptor & parsed) const
{
    bool success {};
    check_hresult(static_cast<const IUsbConfigurationDescriptorStatics &>(static_cast<const D &>(*this))->abi_TryParse(get(descriptor), put(parsed), &success));
    return success;
}

template <typename D> Windows::Devices::Usb::UsbConfigurationDescriptor impl_IUsbConfigurationDescriptorStatics<D>::Parse(const Windows::Devices::Usb::UsbDescriptor & descriptor) const
{
    Windows::Devices::Usb::UsbConfigurationDescriptor parsed { nullptr };
    check_hresult(static_cast<const IUsbConfigurationDescriptorStatics &>(static_cast<const D &>(*this))->abi_Parse(get(descriptor), put(parsed)));
    return parsed;
}

template <typename D> uint8_t impl_IUsbInterfaceDescriptor<D>::ClassCode() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbInterfaceDescriptor &>(static_cast<const D &>(*this))->get_ClassCode(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbInterfaceDescriptor<D>::SubclassCode() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbInterfaceDescriptor &>(static_cast<const D &>(*this))->get_SubclassCode(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbInterfaceDescriptor<D>::ProtocolCode() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbInterfaceDescriptor &>(static_cast<const D &>(*this))->get_ProtocolCode(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbInterfaceDescriptor<D>::AlternateSettingNumber() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbInterfaceDescriptor &>(static_cast<const D &>(*this))->get_AlternateSettingNumber(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbInterfaceDescriptor<D>::InterfaceNumber() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbInterfaceDescriptor &>(static_cast<const D &>(*this))->get_InterfaceNumber(&value));
    return value;
}

template <typename D> bool impl_IUsbInterfaceDescriptorStatics<D>::TryParse(const Windows::Devices::Usb::UsbDescriptor & descriptor, Windows::Devices::Usb::UsbInterfaceDescriptor & parsed) const
{
    bool success {};
    check_hresult(static_cast<const IUsbInterfaceDescriptorStatics &>(static_cast<const D &>(*this))->abi_TryParse(get(descriptor), put(parsed), &success));
    return success;
}

template <typename D> Windows::Devices::Usb::UsbInterfaceDescriptor impl_IUsbInterfaceDescriptorStatics<D>::Parse(const Windows::Devices::Usb::UsbDescriptor & descriptor) const
{
    Windows::Devices::Usb::UsbInterfaceDescriptor parsed { nullptr };
    check_hresult(static_cast<const IUsbInterfaceDescriptorStatics &>(static_cast<const D &>(*this))->abi_Parse(get(descriptor), put(parsed)));
    return parsed;
}

template <typename D> uint8_t impl_IUsbEndpointDescriptor<D>::EndpointNumber() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbEndpointDescriptor &>(static_cast<const D &>(*this))->get_EndpointNumber(&value));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbTransferDirection impl_IUsbEndpointDescriptor<D>::Direction() const
{
    Windows::Devices::Usb::UsbTransferDirection value {};
    check_hresult(static_cast<const IUsbEndpointDescriptor &>(static_cast<const D &>(*this))->get_Direction(&value));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbEndpointType impl_IUsbEndpointDescriptor<D>::EndpointType() const
{
    Windows::Devices::Usb::UsbEndpointType value {};
    check_hresult(static_cast<const IUsbEndpointDescriptor &>(static_cast<const D &>(*this))->get_EndpointType(&value));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbBulkInEndpointDescriptor impl_IUsbEndpointDescriptor<D>::AsBulkInEndpointDescriptor() const
{
    Windows::Devices::Usb::UsbBulkInEndpointDescriptor value { nullptr };
    check_hresult(static_cast<const IUsbEndpointDescriptor &>(static_cast<const D &>(*this))->get_AsBulkInEndpointDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbInterruptInEndpointDescriptor impl_IUsbEndpointDescriptor<D>::AsInterruptInEndpointDescriptor() const
{
    Windows::Devices::Usb::UsbInterruptInEndpointDescriptor value { nullptr };
    check_hresult(static_cast<const IUsbEndpointDescriptor &>(static_cast<const D &>(*this))->get_AsInterruptInEndpointDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbBulkOutEndpointDescriptor impl_IUsbEndpointDescriptor<D>::AsBulkOutEndpointDescriptor() const
{
    Windows::Devices::Usb::UsbBulkOutEndpointDescriptor value { nullptr };
    check_hresult(static_cast<const IUsbEndpointDescriptor &>(static_cast<const D &>(*this))->get_AsBulkOutEndpointDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor impl_IUsbEndpointDescriptor<D>::AsInterruptOutEndpointDescriptor() const
{
    Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor value { nullptr };
    check_hresult(static_cast<const IUsbEndpointDescriptor &>(static_cast<const D &>(*this))->get_AsInterruptOutEndpointDescriptor(put(value)));
    return value;
}

template <typename D> bool impl_IUsbEndpointDescriptorStatics<D>::TryParse(const Windows::Devices::Usb::UsbDescriptor & descriptor, Windows::Devices::Usb::UsbEndpointDescriptor & parsed) const
{
    bool success {};
    check_hresult(static_cast<const IUsbEndpointDescriptorStatics &>(static_cast<const D &>(*this))->abi_TryParse(get(descriptor), put(parsed), &success));
    return success;
}

template <typename D> Windows::Devices::Usb::UsbEndpointDescriptor impl_IUsbEndpointDescriptorStatics<D>::Parse(const Windows::Devices::Usb::UsbDescriptor & descriptor) const
{
    Windows::Devices::Usb::UsbEndpointDescriptor parsed { nullptr };
    check_hresult(static_cast<const IUsbEndpointDescriptorStatics &>(static_cast<const D &>(*this))->abi_Parse(get(descriptor), put(parsed)));
    return parsed;
}

template <typename D> uint8_t impl_IUsbDescriptor<D>::Length() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbDescriptor &>(static_cast<const D &>(*this))->get_Length(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbDescriptor<D>::DescriptorType() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbDescriptor &>(static_cast<const D &>(*this))->get_DescriptorType(&value));
    return value;
}

template <typename D> void impl_IUsbDescriptor<D>::ReadDescriptorBuffer(const Windows::Storage::Streams::IBuffer & buffer) const
{
    check_hresult(static_cast<const IUsbDescriptor &>(static_cast<const D &>(*this))->abi_ReadDescriptorBuffer(get(buffer)));
}

template <typename D> Windows::Storage::Streams::IBuffer impl_IUsbInterruptInEventArgs<D>::InterruptData() const
{
    Windows::Storage::Streams::IBuffer value;
    check_hresult(static_cast<const IUsbInterruptInEventArgs &>(static_cast<const D &>(*this))->get_InterruptData(put(value)));
    return value;
}

template <typename D> uint32_t impl_IUsbBulkInPipe<D>::MaxTransferSizeBytes() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbBulkInPipe &>(static_cast<const D &>(*this))->get_MaxTransferSizeBytes(&value));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbBulkInEndpointDescriptor impl_IUsbBulkInPipe<D>::EndpointDescriptor() const
{
    Windows::Devices::Usb::UsbBulkInEndpointDescriptor value { nullptr };
    check_hresult(static_cast<const IUsbBulkInPipe &>(static_cast<const D &>(*this))->get_EndpointDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IUsbBulkInPipe<D>::ClearStallAsync() const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IUsbBulkInPipe &>(static_cast<const D &>(*this))->abi_ClearStallAsync(put(operation)));
    return operation;
}

template <typename D> void impl_IUsbBulkInPipe<D>::ReadOptions(Windows::Devices::Usb::UsbReadOptions value) const
{
    check_hresult(static_cast<const IUsbBulkInPipe &>(static_cast<const D &>(*this))->put_ReadOptions(value));
}

template <typename D> Windows::Devices::Usb::UsbReadOptions impl_IUsbBulkInPipe<D>::ReadOptions() const
{
    Windows::Devices::Usb::UsbReadOptions value {};
    check_hresult(static_cast<const IUsbBulkInPipe &>(static_cast<const D &>(*this))->get_ReadOptions(&value));
    return value;
}

template <typename D> void impl_IUsbBulkInPipe<D>::FlushBuffer() const
{
    check_hresult(static_cast<const IUsbBulkInPipe &>(static_cast<const D &>(*this))->abi_FlushBuffer());
}

template <typename D> Windows::Storage::Streams::IInputStream impl_IUsbBulkInPipe<D>::InputStream() const
{
    Windows::Storage::Streams::IInputStream value;
    check_hresult(static_cast<const IUsbBulkInPipe &>(static_cast<const D &>(*this))->get_InputStream(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbInterruptInEndpointDescriptor impl_IUsbInterruptInPipe<D>::EndpointDescriptor() const
{
    Windows::Devices::Usb::UsbInterruptInEndpointDescriptor value { nullptr };
    check_hresult(static_cast<const IUsbInterruptInPipe &>(static_cast<const D &>(*this))->get_EndpointDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IUsbInterruptInPipe<D>::ClearStallAsync() const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IUsbInterruptInPipe &>(static_cast<const D &>(*this))->abi_ClearStallAsync(put(operation)));
    return operation;
}

template <typename D> event_token impl_IUsbInterruptInPipe<D>::DataReceived(const Windows::Foundation::TypedEventHandler<Windows::Devices::Usb::UsbInterruptInPipe, Windows::Devices::Usb::UsbInterruptInEventArgs> & handler) const
{
    event_token token {};
    check_hresult(static_cast<const IUsbInterruptInPipe &>(static_cast<const D &>(*this))->add_DataReceived(get(handler), &token));
    return token;
}

template <typename D> event_revoker<IUsbInterruptInPipe> impl_IUsbInterruptInPipe<D>::DataReceived(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Usb::UsbInterruptInPipe, Windows::Devices::Usb::UsbInterruptInEventArgs> & handler) const
{
    return impl::make_event_revoker<D, IUsbInterruptInPipe>(this, &ABI::Windows::Devices::Usb::IUsbInterruptInPipe::remove_DataReceived, DataReceived(handler));
}

template <typename D> void impl_IUsbInterruptInPipe<D>::DataReceived(event_token token) const
{
    check_hresult(static_cast<const IUsbInterruptInPipe &>(static_cast<const D &>(*this))->remove_DataReceived(token));
}

template <typename D> Windows::Devices::Usb::UsbBulkOutEndpointDescriptor impl_IUsbBulkOutPipe<D>::EndpointDescriptor() const
{
    Windows::Devices::Usb::UsbBulkOutEndpointDescriptor value { nullptr };
    check_hresult(static_cast<const IUsbBulkOutPipe &>(static_cast<const D &>(*this))->get_EndpointDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IUsbBulkOutPipe<D>::ClearStallAsync() const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IUsbBulkOutPipe &>(static_cast<const D &>(*this))->abi_ClearStallAsync(put(operation)));
    return operation;
}

template <typename D> void impl_IUsbBulkOutPipe<D>::WriteOptions(Windows::Devices::Usb::UsbWriteOptions value) const
{
    check_hresult(static_cast<const IUsbBulkOutPipe &>(static_cast<const D &>(*this))->put_WriteOptions(value));
}

template <typename D> Windows::Devices::Usb::UsbWriteOptions impl_IUsbBulkOutPipe<D>::WriteOptions() const
{
    Windows::Devices::Usb::UsbWriteOptions value {};
    check_hresult(static_cast<const IUsbBulkOutPipe &>(static_cast<const D &>(*this))->get_WriteOptions(&value));
    return value;
}

template <typename D> Windows::Storage::Streams::IOutputStream impl_IUsbBulkOutPipe<D>::OutputStream() const
{
    Windows::Storage::Streams::IOutputStream value;
    check_hresult(static_cast<const IUsbBulkOutPipe &>(static_cast<const D &>(*this))->get_OutputStream(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor impl_IUsbInterruptOutPipe<D>::EndpointDescriptor() const
{
    Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor value { nullptr };
    check_hresult(static_cast<const IUsbInterruptOutPipe &>(static_cast<const D &>(*this))->get_EndpointDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IUsbInterruptOutPipe<D>::ClearStallAsync() const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IUsbInterruptOutPipe &>(static_cast<const D &>(*this))->abi_ClearStallAsync(put(operation)));
    return operation;
}

template <typename D> void impl_IUsbInterruptOutPipe<D>::WriteOptions(Windows::Devices::Usb::UsbWriteOptions value) const
{
    check_hresult(static_cast<const IUsbInterruptOutPipe &>(static_cast<const D &>(*this))->put_WriteOptions(value));
}

template <typename D> Windows::Devices::Usb::UsbWriteOptions impl_IUsbInterruptOutPipe<D>::WriteOptions() const
{
    Windows::Devices::Usb::UsbWriteOptions value {};
    check_hresult(static_cast<const IUsbInterruptOutPipe &>(static_cast<const D &>(*this))->get_WriteOptions(&value));
    return value;
}

template <typename D> Windows::Storage::Streams::IOutputStream impl_IUsbInterruptOutPipe<D>::OutputStream() const
{
    Windows::Storage::Streams::IOutputStream value;
    check_hresult(static_cast<const IUsbInterruptOutPipe &>(static_cast<const D &>(*this))->get_OutputStream(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterface> impl_IUsbConfiguration<D>::UsbInterfaces() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterface> value;
    check_hresult(static_cast<const IUsbConfiguration &>(static_cast<const D &>(*this))->get_UsbInterfaces(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbConfigurationDescriptor impl_IUsbConfiguration<D>::ConfigurationDescriptor() const
{
    Windows::Devices::Usb::UsbConfigurationDescriptor value { nullptr };
    check_hresult(static_cast<const IUsbConfiguration &>(static_cast<const D &>(*this))->get_ConfigurationDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbDescriptor> impl_IUsbConfiguration<D>::Descriptors() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbDescriptor> value;
    check_hresult(static_cast<const IUsbConfiguration &>(static_cast<const D &>(*this))->get_Descriptors(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkInPipe> impl_IUsbInterface<D>::BulkInPipes() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkInPipe> value;
    check_hresult(static_cast<const IUsbInterface &>(static_cast<const D &>(*this))->get_BulkInPipes(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptInPipe> impl_IUsbInterface<D>::InterruptInPipes() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptInPipe> value;
    check_hresult(static_cast<const IUsbInterface &>(static_cast<const D &>(*this))->get_InterruptInPipes(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkOutPipe> impl_IUsbInterface<D>::BulkOutPipes() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkOutPipe> value;
    check_hresult(static_cast<const IUsbInterface &>(static_cast<const D &>(*this))->get_BulkOutPipes(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptOutPipe> impl_IUsbInterface<D>::InterruptOutPipes() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptOutPipe> value;
    check_hresult(static_cast<const IUsbInterface &>(static_cast<const D &>(*this))->get_InterruptOutPipes(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterfaceSetting> impl_IUsbInterface<D>::InterfaceSettings() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterfaceSetting> value;
    check_hresult(static_cast<const IUsbInterface &>(static_cast<const D &>(*this))->get_InterfaceSettings(put(value)));
    return value;
}

template <typename D> uint8_t impl_IUsbInterface<D>::InterfaceNumber() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbInterface &>(static_cast<const D &>(*this))->get_InterfaceNumber(&value));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbDescriptor> impl_IUsbInterface<D>::Descriptors() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbDescriptor> value;
    check_hresult(static_cast<const IUsbInterface &>(static_cast<const D &>(*this))->get_Descriptors(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkInEndpointDescriptor> impl_IUsbInterfaceSetting<D>::BulkInEndpoints() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkInEndpointDescriptor> value;
    check_hresult(static_cast<const IUsbInterfaceSetting &>(static_cast<const D &>(*this))->get_BulkInEndpoints(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptInEndpointDescriptor> impl_IUsbInterfaceSetting<D>::InterruptInEndpoints() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptInEndpointDescriptor> value;
    check_hresult(static_cast<const IUsbInterfaceSetting &>(static_cast<const D &>(*this))->get_InterruptInEndpoints(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkOutEndpointDescriptor> impl_IUsbInterfaceSetting<D>::BulkOutEndpoints() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbBulkOutEndpointDescriptor> value;
    check_hresult(static_cast<const IUsbInterfaceSetting &>(static_cast<const D &>(*this))->get_BulkOutEndpoints(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor> impl_IUsbInterfaceSetting<D>::InterruptOutEndpoints() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbInterruptOutEndpointDescriptor> value;
    check_hresult(static_cast<const IUsbInterfaceSetting &>(static_cast<const D &>(*this))->get_InterruptOutEndpoints(put(value)));
    return value;
}

template <typename D> bool impl_IUsbInterfaceSetting<D>::Selected() const
{
    bool value {};
    check_hresult(static_cast<const IUsbInterfaceSetting &>(static_cast<const D &>(*this))->get_Selected(&value));
    return value;
}

template <typename D> Windows::Foundation::IAsyncAction impl_IUsbInterfaceSetting<D>::SelectSettingAsync() const
{
    Windows::Foundation::IAsyncAction operation;
    check_hresult(static_cast<const IUsbInterfaceSetting &>(static_cast<const D &>(*this))->abi_SelectSettingAsync(put(operation)));
    return operation;
}

template <typename D> Windows::Devices::Usb::UsbInterfaceDescriptor impl_IUsbInterfaceSetting<D>::InterfaceDescriptor() const
{
    Windows::Devices::Usb::UsbInterfaceDescriptor value { nullptr };
    check_hresult(static_cast<const IUsbInterfaceSetting &>(static_cast<const D &>(*this))->get_InterfaceDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbDescriptor> impl_IUsbInterfaceSetting<D>::Descriptors() const
{
    Windows::Foundation::Collections::IVectorView<Windows::Devices::Usb::UsbDescriptor> value;
    check_hresult(static_cast<const IUsbInterfaceSetting &>(static_cast<const D &>(*this))->get_Descriptors(put(value)));
    return value;
}

template <typename D> uint32_t impl_IUsbBulkInEndpointDescriptor<D>::MaxPacketSize() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbBulkInEndpointDescriptor &>(static_cast<const D &>(*this))->get_MaxPacketSize(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbBulkInEndpointDescriptor<D>::EndpointNumber() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbBulkInEndpointDescriptor &>(static_cast<const D &>(*this))->get_EndpointNumber(&value));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbBulkInPipe impl_IUsbBulkInEndpointDescriptor<D>::Pipe() const
{
    Windows::Devices::Usb::UsbBulkInPipe value { nullptr };
    check_hresult(static_cast<const IUsbBulkInEndpointDescriptor &>(static_cast<const D &>(*this))->get_Pipe(put(value)));
    return value;
}

template <typename D> uint32_t impl_IUsbInterruptInEndpointDescriptor<D>::MaxPacketSize() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbInterruptInEndpointDescriptor &>(static_cast<const D &>(*this))->get_MaxPacketSize(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbInterruptInEndpointDescriptor<D>::EndpointNumber() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbInterruptInEndpointDescriptor &>(static_cast<const D &>(*this))->get_EndpointNumber(&value));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_IUsbInterruptInEndpointDescriptor<D>::Interval() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IUsbInterruptInEndpointDescriptor &>(static_cast<const D &>(*this))->get_Interval(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbInterruptInPipe impl_IUsbInterruptInEndpointDescriptor<D>::Pipe() const
{
    Windows::Devices::Usb::UsbInterruptInPipe value { nullptr };
    check_hresult(static_cast<const IUsbInterruptInEndpointDescriptor &>(static_cast<const D &>(*this))->get_Pipe(put(value)));
    return value;
}

template <typename D> uint32_t impl_IUsbBulkOutEndpointDescriptor<D>::MaxPacketSize() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbBulkOutEndpointDescriptor &>(static_cast<const D &>(*this))->get_MaxPacketSize(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbBulkOutEndpointDescriptor<D>::EndpointNumber() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbBulkOutEndpointDescriptor &>(static_cast<const D &>(*this))->get_EndpointNumber(&value));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbBulkOutPipe impl_IUsbBulkOutEndpointDescriptor<D>::Pipe() const
{
    Windows::Devices::Usb::UsbBulkOutPipe value { nullptr };
    check_hresult(static_cast<const IUsbBulkOutEndpointDescriptor &>(static_cast<const D &>(*this))->get_Pipe(put(value)));
    return value;
}

template <typename D> uint32_t impl_IUsbInterruptOutEndpointDescriptor<D>::MaxPacketSize() const
{
    uint32_t value {};
    check_hresult(static_cast<const IUsbInterruptOutEndpointDescriptor &>(static_cast<const D &>(*this))->get_MaxPacketSize(&value));
    return value;
}

template <typename D> uint8_t impl_IUsbInterruptOutEndpointDescriptor<D>::EndpointNumber() const
{
    uint8_t value {};
    check_hresult(static_cast<const IUsbInterruptOutEndpointDescriptor &>(static_cast<const D &>(*this))->get_EndpointNumber(&value));
    return value;
}

template <typename D> Windows::Foundation::TimeSpan impl_IUsbInterruptOutEndpointDescriptor<D>::Interval() const
{
    Windows::Foundation::TimeSpan value {};
    check_hresult(static_cast<const IUsbInterruptOutEndpointDescriptor &>(static_cast<const D &>(*this))->get_Interval(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbInterruptOutPipe impl_IUsbInterruptOutEndpointDescriptor<D>::Pipe() const
{
    Windows::Devices::Usb::UsbInterruptOutPipe value { nullptr };
    check_hresult(static_cast<const IUsbInterruptOutEndpointDescriptor &>(static_cast<const D &>(*this))->get_Pipe(put(value)));
    return value;
}

template <typename D> Windows::Foundation::IAsyncOperation<uint32_t> impl_IUsbDevice<D>::SendControlOutTransferAsync(const Windows::Devices::Usb::UsbSetupPacket & setupPacket, const Windows::Storage::Streams::IBuffer & buffer) const
{
    Windows::Foundation::IAsyncOperation<uint32_t> operation;
    check_hresult(static_cast<const IUsbDevice &>(static_cast<const D &>(*this))->abi_SendControlOutTransferAsync(get(setupPacket), get(buffer), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<uint32_t> impl_IUsbDevice<D>::SendControlOutTransferAsync(const Windows::Devices::Usb::UsbSetupPacket & setupPacket) const
{
    Windows::Foundation::IAsyncOperation<uint32_t> operation;
    check_hresult(static_cast<const IUsbDevice &>(static_cast<const D &>(*this))->abi_SendControlOutTransferAsyncNoBuffer(get(setupPacket), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> impl_IUsbDevice<D>::SendControlInTransferAsync(const Windows::Devices::Usb::UsbSetupPacket & setupPacket, const Windows::Storage::Streams::IBuffer & buffer) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> operation;
    check_hresult(static_cast<const IUsbDevice &>(static_cast<const D &>(*this))->abi_SendControlInTransferAsync(get(setupPacket), get(buffer), put(operation)));
    return operation;
}

template <typename D> Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> impl_IUsbDevice<D>::SendControlInTransferAsync(const Windows::Devices::Usb::UsbSetupPacket & setupPacket) const
{
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IBuffer> operation;
    check_hresult(static_cast<const IUsbDevice &>(static_cast<const D &>(*this))->abi_SendControlInTransferAsyncNoBuffer(get(setupPacket), put(operation)));
    return operation;
}

template <typename D> Windows::Devices::Usb::UsbInterface impl_IUsbDevice<D>::DefaultInterface() const
{
    Windows::Devices::Usb::UsbInterface value { nullptr };
    check_hresult(static_cast<const IUsbDevice &>(static_cast<const D &>(*this))->get_DefaultInterface(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbDeviceDescriptor impl_IUsbDevice<D>::DeviceDescriptor() const
{
    Windows::Devices::Usb::UsbDeviceDescriptor value { nullptr };
    check_hresult(static_cast<const IUsbDevice &>(static_cast<const D &>(*this))->get_DeviceDescriptor(put(value)));
    return value;
}

template <typename D> Windows::Devices::Usb::UsbConfiguration impl_IUsbDevice<D>::Configuration() const
{
    Windows::Devices::Usb::UsbConfiguration value { nullptr };
    check_hresult(static_cast<const IUsbDevice &>(static_cast<const D &>(*this))->get_Configuration(put(value)));
    return value;
}

inline bool UsbConfigurationDescriptor::TryParse(const Windows::Devices::Usb::UsbDescriptor & descriptor, Windows::Devices::Usb::UsbConfigurationDescriptor & parsed)
{
    return get_activation_factory<UsbConfigurationDescriptor, IUsbConfigurationDescriptorStatics>().TryParse(descriptor, parsed);
}

inline Windows::Devices::Usb::UsbConfigurationDescriptor UsbConfigurationDescriptor::Parse(const Windows::Devices::Usb::UsbDescriptor & descriptor)
{
    return get_activation_factory<UsbConfigurationDescriptor, IUsbConfigurationDescriptorStatics>().Parse(descriptor);
}

inline UsbControlRequestType::UsbControlRequestType() :
    UsbControlRequestType(activate_instance<UsbControlRequestType>())
{}

inline hstring UsbDevice::GetDeviceSelector(uint32_t vendorId, uint32_t productId, GUID winUsbInterfaceClass)
{
    return get_activation_factory<UsbDevice, IUsbDeviceStatics>().GetDeviceSelector(vendorId, productId, winUsbInterfaceClass);
}

inline hstring UsbDevice::GetDeviceSelector(GUID winUsbInterfaceClass)
{
    return get_activation_factory<UsbDevice, IUsbDeviceStatics>().GetDeviceSelector(winUsbInterfaceClass);
}

inline hstring UsbDevice::GetDeviceSelector(uint32_t vendorId, uint32_t productId)
{
    return get_activation_factory<UsbDevice, IUsbDeviceStatics>().GetDeviceSelector(vendorId, productId);
}

inline hstring UsbDevice::GetDeviceClassSelector(const Windows::Devices::Usb::UsbDeviceClass & usbClass)
{
    return get_activation_factory<UsbDevice, IUsbDeviceStatics>().GetDeviceClassSelector(usbClass);
}

inline Windows::Foundation::IAsyncOperation<Windows::Devices::Usb::UsbDevice> UsbDevice::FromIdAsync(hstring_ref deviceId)
{
    return get_activation_factory<UsbDevice, IUsbDeviceStatics>().FromIdAsync(deviceId);
}

inline UsbDeviceClass::UsbDeviceClass() :
    UsbDeviceClass(activate_instance<UsbDeviceClass>())
{}

inline Windows::Devices::Usb::UsbDeviceClass UsbDeviceClasses::CdcControl()
{
    return get_activation_factory<UsbDeviceClasses, IUsbDeviceClassesStatics>().CdcControl();
}

inline Windows::Devices::Usb::UsbDeviceClass UsbDeviceClasses::Physical()
{
    return get_activation_factory<UsbDeviceClasses, IUsbDeviceClassesStatics>().Physical();
}

inline Windows::Devices::Usb::UsbDeviceClass UsbDeviceClasses::PersonalHealthcare()
{
    return get_activation_factory<UsbDeviceClasses, IUsbDeviceClassesStatics>().PersonalHealthcare();
}

inline Windows::Devices::Usb::UsbDeviceClass UsbDeviceClasses::ActiveSync()
{
    return get_activation_factory<UsbDeviceClasses, IUsbDeviceClassesStatics>().ActiveSync();
}

inline Windows::Devices::Usb::UsbDeviceClass UsbDeviceClasses::PalmSync()
{
    return get_activation_factory<UsbDeviceClasses, IUsbDeviceClassesStatics>().PalmSync();
}

inline Windows::Devices::Usb::UsbDeviceClass UsbDeviceClasses::DeviceFirmwareUpdate()
{
    return get_activation_factory<UsbDeviceClasses, IUsbDeviceClassesStatics>().DeviceFirmwareUpdate();
}

inline Windows::Devices::Usb::UsbDeviceClass UsbDeviceClasses::Irda()
{
    return get_activation_factory<UsbDeviceClasses, IUsbDeviceClassesStatics>().Irda();
}

inline Windows::Devices::Usb::UsbDeviceClass UsbDeviceClasses::Measurement()
{
    return get_activation_factory<UsbDeviceClasses, IUsbDeviceClassesStatics>().Measurement();
}

inline Windows::Devices::Usb::UsbDeviceClass UsbDeviceClasses::VendorSpecific()
{
    return get_activation_factory<UsbDeviceClasses, IUsbDeviceClassesStatics>().VendorSpecific();
}

inline bool UsbEndpointDescriptor::TryParse(const Windows::Devices::Usb::UsbDescriptor & descriptor, Windows::Devices::Usb::UsbEndpointDescriptor & parsed)
{
    return get_activation_factory<UsbEndpointDescriptor, IUsbEndpointDescriptorStatics>().TryParse(descriptor, parsed);
}

inline Windows::Devices::Usb::UsbEndpointDescriptor UsbEndpointDescriptor::Parse(const Windows::Devices::Usb::UsbDescriptor & descriptor)
{
    return get_activation_factory<UsbEndpointDescriptor, IUsbEndpointDescriptorStatics>().Parse(descriptor);
}

inline bool UsbInterfaceDescriptor::TryParse(const Windows::Devices::Usb::UsbDescriptor & descriptor, Windows::Devices::Usb::UsbInterfaceDescriptor & parsed)
{
    return get_activation_factory<UsbInterfaceDescriptor, IUsbInterfaceDescriptorStatics>().TryParse(descriptor, parsed);
}

inline Windows::Devices::Usb::UsbInterfaceDescriptor UsbInterfaceDescriptor::Parse(const Windows::Devices::Usb::UsbDescriptor & descriptor)
{
    return get_activation_factory<UsbInterfaceDescriptor, IUsbInterfaceDescriptorStatics>().Parse(descriptor);
}

inline UsbSetupPacket::UsbSetupPacket() :
    UsbSetupPacket(activate_instance<UsbSetupPacket>())
{}

inline UsbSetupPacket::UsbSetupPacket(const Windows::Storage::Streams::IBuffer & eightByteBuffer) :
    UsbSetupPacket(get_activation_factory<UsbSetupPacket, IUsbSetupPacketFactory>().CreateWithEightByteBuffer(eightByteBuffer))
{}

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Media.Media3D.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.UI.Xaml.Media.Media3D.0.h"
#include "Windows.UI.Xaml.0.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::UI::Xaml::Media::Media3D {

struct Matrix3D
{
    double M11;
    double M12;
    double M13;
    double M14;
    double M21;
    double M22;
    double M23;
    double M24;
    double M31;
    double M32;
    double M33;
    double M34;
    double OffsetX;
    double OffsetY;
    double OffsetZ;
    double M44;
};

}

namespace Windows::UI::Xaml::Media::Media3D {

using Matrix3D = ABI::Windows::UI::Xaml::Media::Media3D::Matrix3D;

}

namespace ABI::Windows::UI::Xaml::Media::Media3D {

struct __declspec(uuid("8977cb01-af8d-4af5-b084-c08eb9704abe")) __declspec(novtable) ICompositeTransform3D : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CenterX(double * value) = 0;
    virtual HRESULT __stdcall put_CenterX(double value) = 0;
    virtual HRESULT __stdcall get_CenterY(double * value) = 0;
    virtual HRESULT __stdcall put_CenterY(double value) = 0;
    virtual HRESULT __stdcall get_CenterZ(double * value) = 0;
    virtual HRESULT __stdcall put_CenterZ(double value) = 0;
    virtual HRESULT __stdcall get_RotationX(double * value) = 0;
    virtual HRESULT __stdcall put_RotationX(double value) = 0;
    virtual HRESULT __stdcall get_RotationY(double * value) = 0;
    virtual HRESULT __stdcall put_RotationY(double value) = 0;
    virtual HRESULT __stdcall get_RotationZ(double * value) = 0;
    virtual HRESULT __stdcall put_RotationZ(double value) = 0;
    virtual HRESULT __stdcall get_ScaleX(double * value) = 0;
    virtual HRESULT __stdcall put_ScaleX(double value) = 0;
    virtual HRESULT __stdcall get_ScaleY(double * value) = 0;
    virtual HRESULT __stdcall put_ScaleY(double value) = 0;
    virtual HRESULT __stdcall get_ScaleZ(double * value) = 0;
    virtual HRESULT __stdcall put_ScaleZ(double value) = 0;
    virtual HRESULT __stdcall get_TranslateX(double * value) = 0;
    virtual HRESULT __stdcall put_TranslateX(double value) = 0;
    virtual HRESULT __stdcall get_TranslateY(double * value) = 0;
    virtual HRESULT __stdcall put_TranslateY(double value) = 0;
    virtual HRESULT __stdcall get_TranslateZ(double * value) = 0;
    virtual HRESULT __stdcall put_TranslateZ(double value) = 0;
};

struct __declspec(uuid("ddbf4d67-2a25-48f3-9808-c51ec3d55bec")) __declspec(novtable) ICompositeTransform3DStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_CenterXProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_CenterYProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_CenterZProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_RotationXProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_RotationYProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_RotationZProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_ScaleXProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_ScaleYProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_ScaleZProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_TranslateXProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_TranslateYProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_TranslateZProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
};

struct __declspec(uuid("e48c10ef-9927-4c9b-8213-07775512ba04")) __declspec(novtable) IMatrix3DHelper : Windows::IInspectable
{
};

struct __declspec(uuid("9264545e-e158-4e74-8899-689160bd2f8c")) __declspec(novtable) IMatrix3DHelperStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Identity(Windows::UI::Xaml::Media::Media3D::Matrix3D * value) = 0;
    virtual HRESULT __stdcall abi_Multiply(Windows::UI::Xaml::Media::Media3D::Matrix3D matrix1, Windows::UI::Xaml::Media::Media3D::Matrix3D matrix2, Windows::UI::Xaml::Media::Media3D::Matrix3D * returnValue) = 0;
    virtual HRESULT __stdcall abi_FromElements(double m11, double m12, double m13, double m14, double m21, double m22, double m23, double m24, double m31, double m32, double m33, double m34, double offsetX, double offsetY, double offsetZ, double m44, Windows::UI::Xaml::Media::Media3D::Matrix3D * returnValue) = 0;
    virtual HRESULT __stdcall abi_GetHasInverse(Windows::UI::Xaml::Media::Media3D::Matrix3D target, bool * value) = 0;
    virtual HRESULT __stdcall abi_GetIsIdentity(Windows::UI::Xaml::Media::Media3D::Matrix3D target, bool * value) = 0;
    virtual HRESULT __stdcall abi_Invert(Windows::UI::Xaml::Media::Media3D::Matrix3D target, Windows::UI::Xaml::Media::Media3D::Matrix3D * returnValue) = 0;
};

struct __declspec(uuid("9a7b532a-30f9-40a1-96c9-c59d87f95ac3")) __declspec(novtable) IPerspectiveTransform3D : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Depth(double * value) = 0;
    virtual HRESULT __stdcall put_Depth(double value) = 0;
    virtual HRESULT __stdcall get_OffsetX(double * value) = 0;
    virtual HRESULT __stdcall put_OffsetX(double value) = 0;
    virtual HRESULT __stdcall get_OffsetY(double * value) = 0;
    virtual HRESULT __stdcall put_OffsetY(double value) = 0;
};

struct __declspec(uuid("8e6f6400-620c-48c7-844d-3f0984da5b17")) __declspec(novtable) IPerspectiveTransform3DStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_DepthProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_OffsetXProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
    virtual HRESULT __stdcall get_OffsetYProperty(Windows::UI::Xaml::IDependencyProperty ** value) = 0;
};

struct __declspec(uuid("ae3ed43a-a9fc-4c31-86cd-56d9ca251a69")) __declspec(novtable) ITransform3D : Windows::IInspectable
{
};

struct __declspec(uuid("052c1f7a-8d73-48cd-bbb8-d00434caae5d")) __declspec(novtable) ITransform3DFactory : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateInstance(Windows::IInspectable * outer, Windows::IInspectable ** inner, Windows::UI::Xaml::Media::Media3D::ITransform3D ** instance) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::UI::Xaml::Media::Media3D::CompositeTransform3D> { using default_interface = Windows::UI::Xaml::Media::Media3D::ICompositeTransform3D; };
template <> struct traits<Windows::UI::Xaml::Media::Media3D::Matrix3DHelper> { using default_interface = Windows::UI::Xaml::Media::Media3D::IMatrix3DHelper; };
template <> struct traits<Windows::UI::Xaml::Media::Media3D::PerspectiveTransform3D> { using default_interface = Windows::UI::Xaml::Media::Media3D::IPerspectiveTransform3D; };
template <> struct traits<Windows::UI::Xaml::Media::Media3D::Transform3D> { using default_interface = Windows::UI::Xaml::Media::Media3D::ITransform3D; };

}

namespace Windows::UI::Xaml::Media::Media3D {

template <typename T> struct impl_ICompositeTransform3D;
template <typename T> struct impl_ICompositeTransform3DStatics;
template <typename T> struct impl_IMatrix3DHelper;
template <typename T> struct impl_IMatrix3DHelperStatics;
template <typename T> struct impl_IPerspectiveTransform3D;
template <typename T> struct impl_IPerspectiveTransform3DStatics;
template <typename T> struct impl_ITransform3D;
template <typename T> struct impl_ITransform3DFactory;

}

namespace impl {

template <> struct traits<Windows::UI::Xaml::Media::Media3D::ICompositeTransform3D>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::ICompositeTransform3D;
    template <typename D> using consume = Windows::UI::Xaml::Media::Media3D::impl_ICompositeTransform3D<D>;
};

template <> struct traits<Windows::UI::Xaml::Media::Media3D::ICompositeTransform3DStatics>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::ICompositeTransform3DStatics;
    template <typename D> using consume = Windows::UI::Xaml::Media::Media3D::impl_ICompositeTransform3DStatics<D>;
};

template <> struct traits<Windows::UI::Xaml::Media::Media3D::IMatrix3DHelper>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::IMatrix3DHelper;
    template <typename D> using consume = Windows::UI::Xaml::Media::Media3D::impl_IMatrix3DHelper<D>;
};

template <> struct traits<Windows::UI::Xaml::Media::Media3D::IMatrix3DHelperStatics>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::IMatrix3DHelperStatics;
    template <typename D> using consume = Windows::UI::Xaml::Media::Media3D::impl_IMatrix3DHelperStatics<D>;
};

template <> struct traits<Windows::UI::Xaml::Media::Media3D::IPerspectiveTransform3D>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::IPerspectiveTransform3D;
    template <typename D> using consume = Windows::UI::Xaml::Media::Media3D::impl_IPerspectiveTransform3D<D>;
};

template <> struct traits<Windows::UI::Xaml::Media::Media3D::IPerspectiveTransform3DStatics>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::IPerspectiveTransform3DStatics;
    template <typename D> using consume = Windows::UI::Xaml::Media::Media3D::impl_IPerspectiveTransform3DStatics<D>;
};

template <> struct traits<Windows::UI::Xaml::Media::Media3D::ITransform3D>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::ITransform3D;
    template <typename D> using consume = Windows::UI::Xaml::Media::Media3D::impl_ITransform3D<D>;
};

template <> struct traits<Windows::UI::Xaml::Media::Media3D::ITransform3DFactory>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::ITransform3DFactory;
    template <typename D> using consume = Windows::UI::Xaml::Media::Media3D::impl_ITransform3DFactory<D>;
};

template <> struct traits<Windows::UI::Xaml::Media::Media3D::CompositeTransform3D>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::CompositeTransform3D;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Xaml.Media.Media3D.CompositeTransform3D"; }
};

template <> struct traits<Windows::UI::Xaml::Media::Media3D::Matrix3DHelper>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::Matrix3DHelper;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Xaml.Media.Media3D.Matrix3DHelper"; }
};

template <> struct traits<Windows::UI::Xaml::Media::Media3D::PerspectiveTransform3D>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::PerspectiveTransform3D;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Xaml.Media.Media3D.PerspectiveTransform3D"; }
};

template <> struct traits<Windows::UI::Xaml::Media::Media3D::Transform3D>
{
    using abi = ABI::Windows::UI::Xaml::Media::Media3D::Transform3D;
    static constexpr const wchar_t * name() noexcept { return L"Windows.UI.Xaml.Media.Media3D.Transform3D"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Radios.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Devices.Radios.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_65066c36_090b_5466_b8e5_e7565dc34175
#define WINRT_GENERIC_65066c36_090b_5466_b8e5_e7565dc34175
template <> struct __declspec(uuid("65066c36-090b-5466-b8e5-e7565dc34175")) __declspec(novtable) IVectorView<Windows::Devices::Radios::Radio> : impl_IVectorView<Windows::Devices::Radios::Radio> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_eac62c40_8dbc_5854_8ba0_b7b9940e7389
#define WINRT_GENERIC_eac62c40_8dbc_5854_8ba0_b7b9940e7389
template <> struct __declspec(uuid("eac62c40-8dbc-5854-8ba0-b7b9940e7389")) __declspec(novtable) IAsyncOperation<Windows::Devices::Radios::Radio> : impl_IAsyncOperation<Windows::Devices::Radios::Radio> {};
#endif

#ifndef WINRT_GENERIC_21fb30ef_072f_502c_9898_d0c3b2cd9ac5
#define WINRT_GENERIC_21fb30ef_072f_502c_9898_d0c3b2cd9ac5
template <> struct __declspec(uuid("21fb30ef-072f-502c-9898-d0c3b2cd9ac5")) __declspec(novtable) IAsyncOperation<winrt::Windows::Devices::Radios::RadioAccessStatus> : impl_IAsyncOperation<winrt::Windows::Devices::Radios::RadioAccessStatus> {};
#endif

#ifndef WINRT_GENERIC_fc6aa329_b586_5ebb_9e85_3f6b84ebdf18
#define WINRT_GENERIC_fc6aa329_b586_5ebb_9e85_3f6b84ebdf18
template <> struct __declspec(uuid("fc6aa329-b586-5ebb-9e85-3f6b84ebdf18")) __declspec(novtable) TypedEventHandler<Windows::Devices::Radios::Radio, Windows::IInspectable> : impl_TypedEventHandler<Windows::Devices::Radios::Radio, Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_cf37ede7_eaec_5b8f_ad31_4d51abd9db05
#define WINRT_GENERIC_cf37ede7_eaec_5b8f_ad31_4d51abd9db05
template <> struct __declspec(uuid("cf37ede7-eaec-5b8f-ad31-4d51abd9db05")) __declspec(novtable) IIterator<Windows::Devices::Radios::Radio> : impl_IIterator<Windows::Devices::Radios::Radio> {};
#endif

#ifndef WINRT_GENERIC_e82500af_1f53_504e_b8be_dac4fbb69084
#define WINRT_GENERIC_e82500af_1f53_504e_b8be_dac4fbb69084
template <> struct __declspec(uuid("e82500af-1f53-504e-b8be-dac4fbb69084")) __declspec(novtable) IIterable<Windows::Devices::Radios::Radio> : impl_IIterable<Windows::Devices::Radios::Radio> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_8a5c7e3a_80e2_585b_8630_7a8e777f0354
#define WINRT_GENERIC_8a5c7e3a_80e2_585b_8630_7a8e777f0354
template <> struct __declspec(uuid("8a5c7e3a-80e2-585b-8630-7a8e777f0354")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Devices::Radios::Radio> : impl_AsyncOperationCompletedHandler<Windows::Devices::Radios::Radio> {};
#endif

#ifndef WINRT_GENERIC_bd248e73_f05f_574c_ae3d_9b95c4bf282a
#define WINRT_GENERIC_bd248e73_f05f_574c_ae3d_9b95c4bf282a
template <> struct __declspec(uuid("bd248e73-f05f-574c-ae3d-9b95c4bf282a")) __declspec(novtable) AsyncOperationCompletedHandler<winrt::Windows::Devices::Radios::RadioAccessStatus> : impl_AsyncOperationCompletedHandler<winrt::Windows::Devices::Radios::RadioAccessStatus> {};
#endif

#ifndef WINRT_GENERIC_040b54a1_203e_58f5_943f_c1cca86bd532
#define WINRT_GENERIC_040b54a1_203e_58f5_943f_c1cca86bd532
template <> struct __declspec(uuid("040b54a1-203e-58f5-943f-c1cca86bd532")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Radios::Radio>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Radios::Radio>> {};
#endif

#ifndef WINRT_GENERIC_d30691e6_60a0_59c9_8965_5bbe282e8208
#define WINRT_GENERIC_d30691e6_60a0_59c9_8965_5bbe282e8208
template <> struct __declspec(uuid("d30691e6-60a0-59c9-8965-5bbe282e8208")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Devices::Radios::Radio>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::Devices::Radios::Radio>> {};
#endif


}

namespace Windows::Devices::Radios {

template <typename D>
struct WINRT_EBO impl_IRadio
{
    Windows::Foundation::IAsyncOperation<winrt::Windows::Devices::Radios::RadioAccessStatus> SetStateAsync(Windows::Devices::Radios::RadioState value) const;
    event_token StateChanged(const Windows::Foundation::TypedEventHandler<Windows::Devices::Radios::Radio, Windows::IInspectable> & handler) const;
    using StateChanged_revoker = event_revoker<IRadio>;
    StateChanged_revoker StateChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Devices::Radios::Radio, Windows::IInspectable> & handler) const;
    void StateChanged(event_token eventCookie) const;
    Windows::Devices::Radios::RadioState State() const;
    hstring Name() const;
    Windows::Devices::Radios::RadioKind Kind() const;
};

template <typename D>
struct WINRT_EBO impl_IRadioStatics
{
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Radios::Radio>> GetRadiosAsync() const;
    hstring GetDeviceSelector() const;
    Windows::Foundation::IAsyncOperation<Windows::Devices::Radios::Radio> FromIdAsync(hstring_ref deviceId) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::Devices::Radios::RadioAccessStatus> RequestAccessAsync() const;
};

struct IRadio :
    Windows::IInspectable,
    impl::consume<IRadio>
{
    IRadio(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadio>(m_ptr); }
};

struct IRadioStatics :
    Windows::IInspectable,
    impl::consume<IRadioStatics>
{
    IRadioStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRadioStatics>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.MediaProperties.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Media.MediaProperties.0.h"
#include "Windows.Storage.0.h"
#include "Windows.Storage.Streams.0.h"
#include "Windows.Foundation.Collections.1.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Media::MediaProperties {

struct __declspec(uuid("62bc7a16-005c-4b3b-8a0b-0a090e9687f3")) __declspec(novtable) IAudioEncodingProperties : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Bitrate(uint32_t value) = 0;
    virtual HRESULT __stdcall get_Bitrate(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_ChannelCount(uint32_t value) = 0;
    virtual HRESULT __stdcall get_ChannelCount(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_SampleRate(uint32_t value) = 0;
    virtual HRESULT __stdcall get_SampleRate(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_BitsPerSample(uint32_t value) = 0;
    virtual HRESULT __stdcall get_BitsPerSample(uint32_t * value) = 0;
};

struct __declspec(uuid("0cad332c-ebe9-4527-b36d-e42a13cf38db")) __declspec(novtable) IAudioEncodingPropertiesStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateAac(uint32_t sampleRate, uint32_t channelCount, uint32_t bitrate, Windows::Media::MediaProperties::IAudioEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall abi_CreateAacAdts(uint32_t sampleRate, uint32_t channelCount, uint32_t bitrate, Windows::Media::MediaProperties::IAudioEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall abi_CreateMp3(uint32_t sampleRate, uint32_t channelCount, uint32_t bitrate, Windows::Media::MediaProperties::IAudioEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall abi_CreatePcm(uint32_t sampleRate, uint32_t channelCount, uint32_t bitsPerSample, Windows::Media::MediaProperties::IAudioEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall abi_CreateWma(uint32_t sampleRate, uint32_t channelCount, uint32_t bitrate, Windows::Media::MediaProperties::IAudioEncodingProperties ** value) = 0;
};

struct __declspec(uuid("98f10d79-13ea-49ff-be70-2673db69702c")) __declspec(novtable) IAudioEncodingPropertiesWithFormatUserData : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_SetFormatUserData(uint32_t __valueSize, uint8_t * value) = 0;
    virtual HRESULT __stdcall abi_GetFormatUserData(uint32_t * __valueSize, uint8_t ** value) = 0;
};

struct __declspec(uuid("59ac2a57-b32a-479e-8a61-4b7f2e9e7ea0")) __declspec(novtable) IContainerEncodingProperties : Windows::IInspectable
{
};

struct __declspec(uuid("38654ca7-846a-4f97-a2e5-c3a15bbf70fd")) __declspec(novtable) IH264ProfileIdsStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_ConstrainedBaseline(int32_t * value) = 0;
    virtual HRESULT __stdcall get_Baseline(int32_t * value) = 0;
    virtual HRESULT __stdcall get_Extended(int32_t * value) = 0;
    virtual HRESULT __stdcall get_Main(int32_t * value) = 0;
    virtual HRESULT __stdcall get_High(int32_t * value) = 0;
    virtual HRESULT __stdcall get_High10(int32_t * value) = 0;
    virtual HRESULT __stdcall get_High422(int32_t * value) = 0;
    virtual HRESULT __stdcall get_High444(int32_t * value) = 0;
    virtual HRESULT __stdcall get_StereoHigh(int32_t * value) = 0;
    virtual HRESULT __stdcall get_MultiviewHigh(int32_t * value) = 0;
};

struct __declspec(uuid("78625635-f331-4189-b1c3-b48d5ae034f1")) __declspec(novtable) IImageEncodingProperties : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Width(uint32_t value) = 0;
    virtual HRESULT __stdcall get_Width(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_Height(uint32_t value) = 0;
    virtual HRESULT __stdcall get_Height(uint32_t * value) = 0;
};

struct __declspec(uuid("257c68dc-8b99-439e-aa59-913a36161297")) __declspec(novtable) IImageEncodingPropertiesStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateJpeg(Windows::Media::MediaProperties::IImageEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall abi_CreatePng(Windows::Media::MediaProperties::IImageEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall abi_CreateJpegXR(Windows::Media::MediaProperties::IImageEncodingProperties ** value) = 0;
};

struct __declspec(uuid("f6c25b29-3824-46b0-956e-501329e1be3c")) __declspec(novtable) IImageEncodingPropertiesStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateUncompressed(winrt::Windows::Media::MediaProperties::MediaPixelFormat format, Windows::Media::MediaProperties::IImageEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall abi_CreateBmp(Windows::Media::MediaProperties::IImageEncodingProperties ** value) = 0;
};

struct __declspec(uuid("e7dbf5a8-1db9-4783-876b-3dfe12acfdb3")) __declspec(novtable) IMediaEncodingProfile : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Audio(Windows::Media::MediaProperties::IAudioEncodingProperties * value) = 0;
    virtual HRESULT __stdcall get_Audio(Windows::Media::MediaProperties::IAudioEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall put_Video(Windows::Media::MediaProperties::IVideoEncodingProperties * value) = 0;
    virtual HRESULT __stdcall get_Video(Windows::Media::MediaProperties::IVideoEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall put_Container(Windows::Media::MediaProperties::IContainerEncodingProperties * value) = 0;
    virtual HRESULT __stdcall get_Container(Windows::Media::MediaProperties::IContainerEncodingProperties ** value) = 0;
};

struct __declspec(uuid("197f352c-2ede-4a45-a896-817a4854f8fe")) __declspec(novtable) IMediaEncodingProfileStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateM4a(winrt::Windows::Media::MediaProperties::AudioEncodingQuality quality, Windows::Media::MediaProperties::IMediaEncodingProfile ** value) = 0;
    virtual HRESULT __stdcall abi_CreateMp3(winrt::Windows::Media::MediaProperties::AudioEncodingQuality quality, Windows::Media::MediaProperties::IMediaEncodingProfile ** value) = 0;
    virtual HRESULT __stdcall abi_CreateWma(winrt::Windows::Media::MediaProperties::AudioEncodingQuality quality, Windows::Media::MediaProperties::IMediaEncodingProfile ** value) = 0;
    virtual HRESULT __stdcall abi_CreateMp4(winrt::Windows::Media::MediaProperties::VideoEncodingQuality quality, Windows::Media::MediaProperties::IMediaEncodingProfile ** value) = 0;
    virtual HRESULT __stdcall abi_CreateWmv(winrt::Windows::Media::MediaProperties::VideoEncodingQuality quality, Windows::Media::MediaProperties::IMediaEncodingProfile ** value) = 0;
    virtual HRESULT __stdcall abi_CreateFromFileAsync(Windows::Storage::IStorageFile * file, Windows::Foundation::IAsyncOperation<Windows::Media::MediaProperties::MediaEncodingProfile> ** operation) = 0;
    virtual HRESULT __stdcall abi_CreateFromStreamAsync(Windows::Storage::Streams::IRandomAccessStream * stream, Windows::Foundation::IAsyncOperation<Windows::Media::MediaProperties::MediaEncodingProfile> ** operation) = 0;
};

struct __declspec(uuid("ce8de74f-6af4-4288-8fe2-79adf1f79a43")) __declspec(novtable) IMediaEncodingProfileStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateWav(winrt::Windows::Media::MediaProperties::AudioEncodingQuality quality, Windows::Media::MediaProperties::IMediaEncodingProfile ** value) = 0;
    virtual HRESULT __stdcall abi_CreateAvi(winrt::Windows::Media::MediaProperties::VideoEncodingQuality quality, Windows::Media::MediaProperties::IMediaEncodingProfile ** value) = 0;
};

struct __declspec(uuid("b4002af6-acd4-4e5a-a24b-5d7498a8b8c4")) __declspec(novtable) IMediaEncodingProperties : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Properties(Windows::Foundation::Collections::IMap<GUID, Windows::IInspectable> ** value) = 0;
    virtual HRESULT __stdcall get_Type(hstring * value) = 0;
    virtual HRESULT __stdcall put_Subtype(hstring value) = 0;
    virtual HRESULT __stdcall get_Subtype(hstring * value) = 0;
};

struct __declspec(uuid("37b6580e-a171-4464-ba5a-53189e48c1c8")) __declspec(novtable) IMediaEncodingSubtypesStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Aac(hstring * value) = 0;
    virtual HRESULT __stdcall get_AacAdts(hstring * value) = 0;
    virtual HRESULT __stdcall get_Ac3(hstring * value) = 0;
    virtual HRESULT __stdcall get_AmrNb(hstring * value) = 0;
    virtual HRESULT __stdcall get_AmrWb(hstring * value) = 0;
    virtual HRESULT __stdcall get_Argb32(hstring * value) = 0;
    virtual HRESULT __stdcall get_Asf(hstring * value) = 0;
    virtual HRESULT __stdcall get_Avi(hstring * value) = 0;
    virtual HRESULT __stdcall get_Bgra8(hstring * value) = 0;
    virtual HRESULT __stdcall get_Bmp(hstring * value) = 0;
    virtual HRESULT __stdcall get_Eac3(hstring * value) = 0;
    virtual HRESULT __stdcall get_Float(hstring * value) = 0;
    virtual HRESULT __stdcall get_Gif(hstring * value) = 0;
    virtual HRESULT __stdcall get_H263(hstring * value) = 0;
    virtual HRESULT __stdcall get_H264(hstring * value) = 0;
    virtual HRESULT __stdcall get_H264Es(hstring * value) = 0;
    virtual HRESULT __stdcall get_Hevc(hstring * value) = 0;
    virtual HRESULT __stdcall get_HevcEs(hstring * value) = 0;
    virtual HRESULT __stdcall get_Iyuv(hstring * value) = 0;
    virtual HRESULT __stdcall get_Jpeg(hstring * value) = 0;
    virtual HRESULT __stdcall get_JpegXr(hstring * value) = 0;
    virtual HRESULT __stdcall get_Mjpg(hstring * value) = 0;
    virtual HRESULT __stdcall get_Mpeg(hstring * value) = 0;
    virtual HRESULT __stdcall get_Mpeg1(hstring * value) = 0;
    virtual HRESULT __stdcall get_Mpeg2(hstring * value) = 0;
    virtual HRESULT __stdcall get_Mp3(hstring * value) = 0;
    virtual HRESULT __stdcall get_Mpeg4(hstring * value) = 0;
    virtual HRESULT __stdcall get_Nv12(hstring * value) = 0;
    virtual HRESULT __stdcall get_Pcm(hstring * value) = 0;
    virtual HRESULT __stdcall get_Png(hstring * value) = 0;
    virtual HRESULT __stdcall get_Rgb24(hstring * value) = 0;
    virtual HRESULT __stdcall get_Rgb32(hstring * value) = 0;
    virtual HRESULT __stdcall get_Tiff(hstring * value) = 0;
    virtual HRESULT __stdcall get_Wave(hstring * value) = 0;
    virtual HRESULT __stdcall get_Wma8(hstring * value) = 0;
    virtual HRESULT __stdcall get_Wma9(hstring * value) = 0;
    virtual HRESULT __stdcall get_Wmv3(hstring * value) = 0;
    virtual HRESULT __stdcall get_Wvc1(hstring * value) = 0;
    virtual HRESULT __stdcall get_Yuy2(hstring * value) = 0;
    virtual HRESULT __stdcall get_Yv12(hstring * value) = 0;
};

struct __declspec(uuid("d2d0fee5-8929-401d-ac78-7d357e378163")) __declspec(novtable) IMediaRatio : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Numerator(uint32_t value) = 0;
    virtual HRESULT __stdcall get_Numerator(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_Denominator(uint32_t value) = 0;
    virtual HRESULT __stdcall get_Denominator(uint32_t * value) = 0;
};

struct __declspec(uuid("a461ff85-e57a-4128-9b21-d5331b04235c")) __declspec(novtable) IMpeg2ProfileIdsStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Simple(int32_t * value) = 0;
    virtual HRESULT __stdcall get_Main(int32_t * value) = 0;
    virtual HRESULT __stdcall get_SignalNoiseRatioScalable(int32_t * value) = 0;
    virtual HRESULT __stdcall get_SpatiallyScalable(int32_t * value) = 0;
    virtual HRESULT __stdcall get_High(int32_t * value) = 0;
};

struct __declspec(uuid("76ee6c9a-37c2-4f2a-880a-1282bbb4373d")) __declspec(novtable) IVideoEncodingProperties : Windows::IInspectable
{
    virtual HRESULT __stdcall put_Bitrate(uint32_t value) = 0;
    virtual HRESULT __stdcall get_Bitrate(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_Width(uint32_t value) = 0;
    virtual HRESULT __stdcall get_Width(uint32_t * value) = 0;
    virtual HRESULT __stdcall put_Height(uint32_t value) = 0;
    virtual HRESULT __stdcall get_Height(uint32_t * value) = 0;
    virtual HRESULT __stdcall get_FrameRate(Windows::Media::MediaProperties::IMediaRatio ** value) = 0;
    virtual HRESULT __stdcall get_PixelAspectRatio(Windows::Media::MediaProperties::IMediaRatio ** value) = 0;
};

struct __declspec(uuid("f743a1ef-d465-4290-a94b-ef0f1528f8e3")) __declspec(novtable) IVideoEncodingProperties2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_SetFormatUserData(uint32_t __valueSize, uint8_t * value) = 0;
    virtual HRESULT __stdcall abi_GetFormatUserData(uint32_t * __valueSize, uint8_t ** value) = 0;
    virtual HRESULT __stdcall put_ProfileId(int32_t value) = 0;
    virtual HRESULT __stdcall get_ProfileId(int32_t * value) = 0;
};

struct __declspec(uuid("386bcdc4-873a-479f-b3eb-56c1fcbec6d7")) __declspec(novtable) IVideoEncodingProperties3 : Windows::IInspectable
{
    virtual HRESULT __stdcall get_StereoscopicVideoPackingMode(winrt::Windows::Media::MediaProperties::StereoscopicVideoPackingMode * value) = 0;
};

struct __declspec(uuid("3ce14d44-1dc5-43db-9f38-ebebf90152cb")) __declspec(novtable) IVideoEncodingPropertiesStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_CreateH264(Windows::Media::MediaProperties::IVideoEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall abi_CreateMpeg2(Windows::Media::MediaProperties::IVideoEncodingProperties ** value) = 0;
    virtual HRESULT __stdcall abi_CreateUncompressed(hstring subtype, uint32_t width, uint32_t height, Windows::Media::MediaProperties::IVideoEncodingProperties ** value) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Media::MediaProperties::AudioEncodingProperties> { using default_interface = Windows::Media::MediaProperties::IAudioEncodingProperties; };
template <> struct traits<Windows::Media::MediaProperties::ContainerEncodingProperties> { using default_interface = Windows::Media::MediaProperties::IContainerEncodingProperties; };
template <> struct traits<Windows::Media::MediaProperties::ImageEncodingProperties> { using default_interface = Windows::Media::MediaProperties::IImageEncodingProperties; };
template <> struct traits<Windows::Media::MediaProperties::MediaEncodingProfile> { using default_interface = Windows::Media::MediaProperties::IMediaEncodingProfile; };
template <> struct traits<Windows::Media::MediaProperties::MediaPropertySet> { using default_interface = Windows::Foundation::Collections::IMap<GUID, Windows::IInspectable>; };
template <> struct traits<Windows::Media::MediaProperties::MediaRatio> { using default_interface = Windows::Media::MediaProperties::IMediaRatio; };
template <> struct traits<Windows::Media::MediaProperties::VideoEncodingProperties> { using default_interface = Windows::Media::MediaProperties::IVideoEncodingProperties; };

}

namespace Windows::Media::MediaProperties {

template <typename T> struct impl_IAudioEncodingProperties;
template <typename T> struct impl_IAudioEncodingPropertiesStatics;
template <typename T> struct impl_IAudioEncodingPropertiesWithFormatUserData;
template <typename T> struct impl_IContainerEncodingProperties;
template <typename T> struct impl_IH264ProfileIdsStatics;
template <typename T> struct impl_IImageEncodingProperties;
template <typename T> struct impl_IImageEncodingPropertiesStatics;
template <typename T> struct impl_IImageEncodingPropertiesStatics2;
template <typename T> struct impl_IMediaEncodingProfile;
template <typename T> struct impl_IMediaEncodingProfileStatics;
template <typename T> struct impl_IMediaEncodingProfileStatics2;
template <typename T> struct impl_IMediaEncodingProperties;
template <typename T> struct impl_IMediaEncodingSubtypesStatics;
template <typename T> struct impl_IMediaRatio;
template <typename T> struct impl_IMpeg2ProfileIdsStatics;
template <typename T> struct impl_IVideoEncodingProperties;
template <typename T> struct impl_IVideoEncodingProperties2;
template <typename T> struct impl_IVideoEncodingProperties3;
template <typename T> struct impl_IVideoEncodingPropertiesStatics;

}

namespace impl {

template <> struct traits<Windows::Media::MediaProperties::IAudioEncodingProperties>
{
    using abi = ABI::Windows::Media::MediaProperties::IAudioEncodingProperties;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IAudioEncodingProperties<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IAudioEncodingPropertiesStatics>
{
    using abi = ABI::Windows::Media::MediaProperties::IAudioEncodingPropertiesStatics;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IAudioEncodingPropertiesStatics<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IAudioEncodingPropertiesWithFormatUserData>
{
    using abi = ABI::Windows::Media::MediaProperties::IAudioEncodingPropertiesWithFormatUserData;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IAudioEncodingPropertiesWithFormatUserData<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IContainerEncodingProperties>
{
    using abi = ABI::Windows::Media::MediaProperties::IContainerEncodingProperties;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IContainerEncodingProperties<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IH264ProfileIdsStatics>
{
    using abi = ABI::Windows::Media::MediaProperties::IH264ProfileIdsStatics;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IH264ProfileIdsStatics<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IImageEncodingProperties>
{
    using abi = ABI::Windows::Media::MediaProperties::IImageEncodingProperties;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IImageEncodingProperties<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IImageEncodingPropertiesStatics>
{
    using abi = ABI::Windows::Media::MediaProperties::IImageEncodingPropertiesStatics;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IImageEncodingPropertiesStatics<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IImageEncodingPropertiesStatics2>
{
    using abi = ABI::Windows::Media::MediaProperties::IImageEncodingPropertiesStatics2;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IImageEncodingPropertiesStatics2<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IMediaEncodingProfile>
{
    using abi = ABI::Windows::Media::MediaProperties::IMediaEncodingProfile;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IMediaEncodingProfile<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IMediaEncodingProfileStatics>
{
    using abi = ABI::Windows::Media::MediaProperties::IMediaEncodingProfileStatics;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IMediaEncodingProfileStatics<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IMediaEncodingProfileStatics2>
{
    using abi = ABI::Windows::Media::MediaProperties::IMediaEncodingProfileStatics2;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IMediaEncodingProfileStatics2<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IMediaEncodingProperties>
{
    using abi = ABI::Windows::Media::MediaProperties::IMediaEncodingProperties;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IMediaEncodingProperties<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IMediaEncodingSubtypesStatics>
{
    using abi = ABI::Windows::Media::MediaProperties::IMediaEncodingSubtypesStatics;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IMediaEncodingSubtypesStatics<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IMediaRatio>
{
    using abi = ABI::Windows::Media::MediaProperties::IMediaRatio;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IMediaRatio<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IMpeg2ProfileIdsStatics>
{
    using abi = ABI::Windows::Media::MediaProperties::IMpeg2ProfileIdsStatics;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IMpeg2ProfileIdsStatics<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IVideoEncodingProperties>
{
    using abi = ABI::Windows::Media::MediaProperties::IVideoEncodingProperties;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IVideoEncodingProperties<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IVideoEncodingProperties2>
{
    using abi = ABI::Windows::Media::MediaProperties::IVideoEncodingProperties2;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IVideoEncodingProperties2<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IVideoEncodingProperties3>
{
    using abi = ABI::Windows::Media::MediaProperties::IVideoEncodingProperties3;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IVideoEncodingProperties3<D>;
};

template <> struct traits<Windows::Media::MediaProperties::IVideoEncodingPropertiesStatics>
{
    using abi = ABI::Windows::Media::MediaProperties::IVideoEncodingPropertiesStatics;
    template <typename D> using consume = Windows::Media::MediaProperties::impl_IVideoEncodingPropertiesStatics<D>;
};

template <> struct traits<Windows::Media::MediaProperties::AudioEncodingProperties>
{
    using abi = ABI::Windows::Media::MediaProperties::AudioEncodingProperties;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.MediaProperties.AudioEncodingProperties"; }
};

template <> struct traits<Windows::Media::MediaProperties::ContainerEncodingProperties>
{
    using abi = ABI::Windows::Media::MediaProperties::ContainerEncodingProperties;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.MediaProperties.ContainerEncodingProperties"; }
};

template <> struct traits<Windows::Media::MediaProperties::H264ProfileIds>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.MediaProperties.H264ProfileIds"; }
};

template <> struct traits<Windows::Media::MediaProperties::ImageEncodingProperties>
{
    using abi = ABI::Windows::Media::MediaProperties::ImageEncodingProperties;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.MediaProperties.ImageEncodingProperties"; }
};

template <> struct traits<Windows::Media::MediaProperties::MediaEncodingProfile>
{
    using abi = ABI::Windows::Media::MediaProperties::MediaEncodingProfile;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.MediaProperties.MediaEncodingProfile"; }
};

template <> struct traits<Windows::Media::MediaProperties::MediaEncodingSubtypes>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.MediaProperties.MediaEncodingSubtypes"; }
};

template <> struct traits<Windows::Media::MediaProperties::MediaPropertySet>
{
    using abi = ABI::Windows::Media::MediaProperties::MediaPropertySet;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.MediaProperties.MediaPropertySet"; }
};

template <> struct traits<Windows::Media::MediaProperties::MediaRatio>
{
    using abi = ABI::Windows::Media::MediaProperties::MediaRatio;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.MediaProperties.MediaRatio"; }
};

template <> struct traits<Windows::Media::MediaProperties::Mpeg2ProfileIds>
{
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.MediaProperties.Mpeg2ProfileIds"; }
};

template <> struct traits<Windows::Media::MediaProperties::VideoEncodingProperties>
{
    using abi = ABI::Windows::Media::MediaProperties::VideoEncodingProperties;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Media.MediaProperties.VideoEncodingProperties"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.HumanInterfaceDevice.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::HumanInterfaceDevice {

struct IHidBooleanControl;
struct IHidBooleanControlDescription;
struct IHidBooleanControlDescription2;
struct IHidCollection;
struct IHidDevice;
struct IHidDeviceStatics;
struct IHidFeatureReport;
struct IHidInputReport;
struct IHidInputReportReceivedEventArgs;
struct IHidNumericControl;
struct IHidNumericControlDescription;
struct IHidOutputReport;
struct HidBooleanControl;
struct HidBooleanControlDescription;
struct HidCollection;
struct HidDevice;
struct HidFeatureReport;
struct HidInputReport;
struct HidInputReportReceivedEventArgs;
struct HidNumericControl;
struct HidNumericControlDescription;
struct HidOutputReport;

}

namespace Windows::Devices::HumanInterfaceDevice {

struct IHidBooleanControl;
struct IHidBooleanControlDescription;
struct IHidBooleanControlDescription2;
struct IHidCollection;
struct IHidDevice;
struct IHidDeviceStatics;
struct IHidFeatureReport;
struct IHidInputReport;
struct IHidInputReportReceivedEventArgs;
struct IHidNumericControl;
struct IHidNumericControlDescription;
struct IHidOutputReport;
struct HidBooleanControl;
struct HidBooleanControlDescription;
struct HidCollection;
struct HidDevice;
struct HidFeatureReport;
struct HidInputReport;
struct HidInputReportReceivedEventArgs;
struct HidNumericControl;
struct HidNumericControlDescription;
struct HidOutputReport;

}

namespace Windows::Devices::HumanInterfaceDevice {

enum class HidCollectionType
{
    Physical = 0,
    Application = 1,
    Logical = 2,
    Report = 3,
    NamedArray = 4,
    UsageSwitch = 5,
    UsageModifier = 6,
    Other = 7,
};

enum class HidReportType
{
    Input = 0,
    Output = 1,
    Feature = 2,
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Security.Authentication.Web.Core.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Security.Authentication.Web.Core.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Security::Authentication::Web::Core {

struct WINRT_EBO WebAccountEventArgs :
    Windows::Security::Authentication::Web::Core::IWebAccountEventArgs
{
    WebAccountEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO WebAccountMonitor :
    Windows::Security::Authentication::Web::Core::IWebAccountMonitor
{
    WebAccountMonitor(std::nullptr_t) noexcept {}
};

struct WebAuthenticationCoreManager
{
    WebAuthenticationCoreManager() = delete;
    static Windows::Foundation::IAsyncOperation<Windows::Security::Authentication::Web::Core::WebTokenRequestResult> GetTokenSilentlyAsync(const Windows::Security::Authentication::Web::Core::WebTokenRequest & request);
    static Windows::Foundation::IAsyncOperation<Windows::Security::Authentication::Web::Core::WebTokenRequestResult> GetTokenSilentlyAsync(const Windows::Security::Authentication::Web::Core::WebTokenRequest & request, const Windows::Security::Credentials::WebAccount & webAccount);
    static Windows::Foundation::IAsyncOperation<Windows::Security::Authentication::Web::Core::WebTokenRequestResult> RequestTokenAsync(const Windows::Security::Authentication::Web::Core::WebTokenRequest & request);
    static Windows::Foundation::IAsyncOperation<Windows::Security::Authentication::Web::Core::WebTokenRequestResult> RequestTokenAsync(const Windows::Security::Authentication::Web::Core::WebTokenRequest & request, const Windows::Security::Credentials::WebAccount & webAccount);
    static Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccount> FindAccountAsync(const Windows::Security::Credentials::WebAccountProvider & provider, hstring_ref webAccountId);
    static Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccountProvider> FindAccountProviderAsync(hstring_ref webAccountProviderId);
    static Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccountProvider> FindAccountProviderAsync(hstring_ref webAccountProviderId, hstring_ref authority);
    static Windows::Foundation::IAsyncOperation<Windows::Security::Credentials::WebAccountProvider> FindAccountProviderAsync(hstring_ref webAccountProviderId, hstring_ref authority, const Windows::System::User & user);
    static Windows::Security::Authentication::Web::Core::WebAccountMonitor CreateWebAccountMonitor(const Windows::Foundation::Collections::IIterable<Windows::Security::Credentials::WebAccount> & webAccounts);
};

struct WINRT_EBO WebProviderError :
    Windows::Security::Authentication::Web::Core::IWebProviderError
{
    WebProviderError(std::nullptr_t) noexcept {}
    WebProviderError(uint32_t errorCode, hstring_ref errorMessage);
};

struct WINRT_EBO WebTokenRequest :
    Windows::Security::Authentication::Web::Core::IWebTokenRequest,
    impl::require<WebTokenRequest, Windows::Security::Authentication::Web::Core::IWebTokenRequest2>
{
    WebTokenRequest(std::nullptr_t) noexcept {}
    WebTokenRequest(const Windows::Security::Credentials::WebAccountProvider & provider, hstring_ref scope, hstring_ref clientId);
    WebTokenRequest(const Windows::Security::Credentials::WebAccountProvider & provider, hstring_ref scope, hstring_ref clientId, Windows::Security::Authentication::Web::Core::WebTokenRequestPromptType promptType);
    WebTokenRequest(const Windows::Security::Credentials::WebAccountProvider & provider);
    WebTokenRequest(const Windows::Security::Credentials::WebAccountProvider & provider, hstring_ref scope);
};

struct WINRT_EBO WebTokenRequestResult :
    Windows::Security::Authentication::Web::Core::IWebTokenRequestResult
{
    WebTokenRequestResult(std::nullptr_t) noexcept {}
};

struct WINRT_EBO WebTokenResponse :
    Windows::Security::Authentication::Web::Core::IWebTokenResponse
{
    WebTokenResponse(std::nullptr_t) noexcept {}
    WebTokenResponse();
    WebTokenResponse(hstring_ref token);
    WebTokenResponse(hstring_ref token, const Windows::Security::Credentials::WebAccount & webAccount);
    WebTokenResponse(hstring_ref token, const Windows::Security::Credentials::WebAccount & webAccount, const Windows::Security::Authentication::Web::Core::WebProviderError & error);
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.Store.Preview.InstallControl.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.ApplicationModel.Store.Preview.InstallControl.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::ApplicationModel::Store::Preview::InstallControl {

struct WINRT_EBO AppInstallItem :
    Windows::ApplicationModel::Store::Preview::InstallControl::IAppInstallItem,
    impl::require<AppInstallItem, Windows::ApplicationModel::Store::Preview::InstallControl::IAppInstallItem2>
{
    AppInstallItem(std::nullptr_t) noexcept {}
    using impl_IAppInstallItem::Cancel;
    using impl_IAppInstallItem::Pause;
    using impl_IAppInstallItem::Restart;
    using impl_IAppInstallItem2::Cancel;
    using impl_IAppInstallItem2::Pause;
    using impl_IAppInstallItem2::Restart;
};

struct WINRT_EBO AppInstallManager :
    Windows::ApplicationModel::Store::Preview::InstallControl::IAppInstallManager,
    impl::require<AppInstallManager, Windows::ApplicationModel::Store::Preview::InstallControl::IAppInstallManager2, Windows::ApplicationModel::Store::Preview::InstallControl::IAppInstallManager3>
{
    AppInstallManager(std::nullptr_t) noexcept {}
    AppInstallManager();
    using impl_IAppInstallManager::Cancel;
    using impl_IAppInstallManager::GetIsAppAllowedToInstallAsync;
    using impl_IAppInstallManager::Pause;
    using impl_IAppInstallManager::Restart;
    using impl_IAppInstallManager::SearchForAllUpdatesAsync;
    using impl_IAppInstallManager::SearchForUpdatesAsync;
    using impl_IAppInstallManager::StartAppInstallAsync;
    using impl_IAppInstallManager::UpdateAppByPackageFamilyNameAsync;
    using impl_IAppInstallManager2::Cancel;
    using impl_IAppInstallManager2::GetIsAppAllowedToInstallAsync;
    using impl_IAppInstallManager2::Pause;
    using impl_IAppInstallManager2::Restart;
    using impl_IAppInstallManager2::SearchForAllUpdatesAsync;
    using impl_IAppInstallManager2::SearchForUpdatesAsync;
    using impl_IAppInstallManager2::StartAppInstallAsync;
    using impl_IAppInstallManager2::UpdateAppByPackageFamilyNameAsync;
};

struct WINRT_EBO AppInstallManagerItemEventArgs :
    Windows::ApplicationModel::Store::Preview::InstallControl::IAppInstallManagerItemEventArgs
{
    AppInstallManagerItemEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO AppInstallStatus :
    Windows::ApplicationModel::Store::Preview::InstallControl::IAppInstallStatus,
    impl::require<AppInstallStatus, Windows::ApplicationModel::Store::Preview::InstallControl::IAppInstallStatus2>
{
    AppInstallStatus(std::nullptr_t) noexcept {}
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Data.Xml.Xsl.0.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once


WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Data::Xml::Xsl {

struct IXsltProcessor;
struct IXsltProcessor2;
struct IXsltProcessorFactory;
struct XsltProcessor;

}

namespace Windows::Data::Xml::Xsl {

struct IXsltProcessor;
struct IXsltProcessor2;
struct IXsltProcessorFactory;
struct XsltProcessor;

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.System.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.System.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
#define WINRT_GENERIC_cdb5efb3_5788_509d_9be1_71ccb8a3362a
template <> struct __declspec(uuid("cdb5efb3-5788-509d-9be1-71ccb8a3362a")) __declspec(novtable) IAsyncOperation<bool> : impl_IAsyncOperation<bool> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_8246ed12_33e8_52b3_a5c5_19779de9999e
#define WINRT_GENERIC_8246ed12_33e8_52b3_a5c5_19779de9999e
template <> struct __declspec(uuid("8246ed12-33e8-52b3-a5c5-19779de9999e")) __declspec(novtable) IVectorView<Windows::ApplicationModel::AppInfo> : impl_IVectorView<Windows::ApplicationModel::AppInfo> {};
#endif

#ifndef WINRT_GENERIC_98b9acc1_4b56_532e_ac73_03d5291cca90
#define WINRT_GENERIC_98b9acc1_4b56_532e_ac73_03d5291cca90
template <> struct __declspec(uuid("98b9acc1-4b56-532e-ac73-03d5291cca90")) __declspec(novtable) IVector<hstring> : impl_IVector<hstring> {};
#endif

#ifndef WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
#define WINRT_GENERIC_2f13c006_a03a_5f69_b090_75a43e33423e
template <> struct __declspec(uuid("2f13c006-a03a-5f69-b090-75a43e33423e")) __declspec(novtable) IVectorView<hstring> : impl_IVectorView<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
#define WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
template <> struct __declspec(uuid("c50898f6-c536-5f47-8583-8b2c2438a13b")) __declspec(novtable) EventHandler<Windows::IInspectable> : impl_EventHandler<Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
#define WINRT_GENERIC_e2fcc7c1_3bfc_5a0b_b2b0_72e769d1cb7e
template <> struct __declspec(uuid("e2fcc7c1-3bfc-5a0b-b2b0-72e769d1cb7e")) __declspec(novtable) IIterable<hstring> : impl_IIterable<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_abf53c57_ee50_5342_b52a_26e3b8cc024f
#define WINRT_GENERIC_abf53c57_ee50_5342_b52a_26e3b8cc024f
template <> struct __declspec(uuid("abf53c57-ee50-5342-b52a-26e3b8cc024f")) __declspec(novtable) IAsyncOperation<Windows::IInspectable> : impl_IAsyncOperation<Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_85575a41_06cb_58d0_b98a_7c8f06e6e9d7
#define WINRT_GENERIC_85575a41_06cb_58d0_b98a_7c8f06e6e9d7
template <> struct __declspec(uuid("85575a41-06cb-58d0-b98a-7c8f06e6e9d7")) __declspec(novtable) IVectorView<Windows::Storage::IStorageItem> : impl_IVectorView<Windows::Storage::IStorageItem> {};
#endif

#ifndef WINRT_GENERIC_bb8b8418_65d1_544b_b083_6d172f568c73
#define WINRT_GENERIC_bb8b8418_65d1_544b_b083_6d172f568c73
template <> struct __declspec(uuid("bb8b8418-65d1-544b-b083-6d172f568c73")) __declspec(novtable) IIterable<Windows::Storage::IStorageItem> : impl_IIterable<Windows::Storage::IStorageItem> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_6030e7c3_f93f_5e9c_9ba2_9a018d2b09c0
#define WINRT_GENERIC_6030e7c3_f93f_5e9c_9ba2_9a018d2b09c0
template <> struct __declspec(uuid("6030e7c3-f93f-5e9c-9ba2-9a018d2b09c0")) __declspec(novtable) EventHandler<Windows::System::AppMemoryUsageLimitChangingEventArgs> : impl_EventHandler<Windows::System::AppMemoryUsageLimitChangingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_490b0686_afd7_5037_9647_d8fe248f182c
#define WINRT_GENERIC_490b0686_afd7_5037_9647_d8fe248f182c
template <> struct __declspec(uuid("490b0686-afd7-5037-9647-d8fe248f182c")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IPropertySet> : impl_IAsyncOperation<Windows::Foundation::Collections::IPropertySet> {};
#endif

#ifndef WINRT_GENERIC_65178d50_e6a2_5d16_b244_65e9725e5a0c
#define WINRT_GENERIC_65178d50_e6a2_5d16_b244_65e9725e5a0c
template <> struct __declspec(uuid("65178d50-e6a2-5d16-b244-65e9725e5a0c")) __declspec(novtable) IAsyncOperation<Windows::Storage::Streams::IRandomAccessStreamReference> : impl_IAsyncOperation<Windows::Storage::Streams::IRandomAccessStreamReference> {};
#endif

#ifndef WINRT_GENERIC_80423f11_054f_5eac_afd3_63b6ce15e77b
#define WINRT_GENERIC_80423f11_054f_5eac_afd3_63b6ce15e77b
template <> struct __declspec(uuid("80423f11-054f-5eac-afd3-63b6ce15e77b")) __declspec(novtable) IReference<Windows::Foundation::Rect> : impl_IReference<Windows::Foundation::Rect> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_8cbd762a_1222_5ee5_b745_489e7a42c6ec
#define WINRT_GENERIC_8cbd762a_1222_5ee5_b745_489e7a42c6ec
template <> struct __declspec(uuid("8cbd762a-1222-5ee5-b745-489e7a42c6ec")) __declspec(novtable) IVectorView<Windows::System::User> : impl_IVectorView<Windows::System::User> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_eb9d0454_25db_5620_98b8_be4c5d0dbc67
#define WINRT_GENERIC_eb9d0454_25db_5620_98b8_be4c5d0dbc67
template <> struct __declspec(uuid("eb9d0454-25db-5620-98b8-be4c5d0dbc67")) __declspec(novtable) TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserChangedEventArgs> : impl_TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_9ec3d9d5_b413_51df_8c64_640e3356e351
#define WINRT_GENERIC_9ec3d9d5_b413_51df_8c64_640e3356e351
template <> struct __declspec(uuid("9ec3d9d5-b413-51df-8c64-640e3356e351")) __declspec(novtable) TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserAuthenticationStatusChangingEventArgs> : impl_TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserAuthenticationStatusChangingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_f155e0ff_dbb5_5c34_ac0c_7e291e3300ab
#define WINRT_GENERIC_f155e0ff_dbb5_5c34_ac0c_7e291e3300ab
template <> struct __declspec(uuid("f155e0ff-dbb5-5c34-ac0c-7e291e3300ab")) __declspec(novtable) TypedEventHandler<Windows::System::UserWatcher, Windows::IInspectable> : impl_TypedEventHandler<Windows::System::UserWatcher, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_a895d2f9_2399_5104_a532_5ba44ab4b165
#define WINRT_GENERIC_a895d2f9_2399_5104_a532_5ba44ab4b165
template <> struct __declspec(uuid("a895d2f9-2399-5104-a532-5ba44ab4b165")) __declspec(novtable) IAsyncOperation<Windows::System::User> : impl_IAsyncOperation<Windows::System::User> {};
#endif

#ifndef WINRT_GENERIC_d3a3d4c5_d8b6_5a0e_88ed_a5499c377be3
#define WINRT_GENERIC_d3a3d4c5_d8b6_5a0e_88ed_a5499c377be3
template <> struct __declspec(uuid("d3a3d4c5-d8b6-5a0e-88ed-a5499c377be3")) __declspec(novtable) EventHandler<Windows::System::UserDeviceAssociationChangedEventArgs> : impl_EventHandler<Windows::System::UserDeviceAssociationChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_84f14c22_a00a_5272_8d3d_82112e66df00
#define WINRT_GENERIC_84f14c22_a00a_5272_8d3d_82112e66df00
template <> struct __declspec(uuid("84f14c22-a00a-5272-8d3d-82112e66df00")) __declspec(novtable) IReference<Windows::Foundation::Point> : impl_IReference<Windows::Foundation::Point> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_802508e2_9c2c_5b91_89a8_39bcf7223344
#define WINRT_GENERIC_802508e2_9c2c_5b91_89a8_39bcf7223344
template <> struct __declspec(uuid("802508e2-9c2c-5b91-89a8-39bcf7223344")) __declspec(novtable) IVector<Windows::Storage::IStorageItem> : impl_IVector<Windows::Storage::IStorageItem> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_7f97fc15_1cd6_54b7_a290_acb60dba81a1
#define WINRT_GENERIC_7f97fc15_1cd6_54b7_a290_acb60dba81a1
template <> struct __declspec(uuid("7f97fc15-1cd6-54b7-a290-acb60dba81a1")) __declspec(novtable) IAsyncOperation<Windows::System::LaunchUriResult> : impl_IAsyncOperation<Windows::System::LaunchUriResult> {};
#endif

#ifndef WINRT_GENERIC_e7539992_2220_5d2d_82c4_3d44f8750d91
#define WINRT_GENERIC_e7539992_2220_5d2d_82c4_3d44f8750d91
template <> struct __declspec(uuid("e7539992-2220-5d2d-82c4-3d44f8750d91")) __declspec(novtable) IAsyncOperation<winrt::Windows::System::LaunchQuerySupportStatus> : impl_IAsyncOperation<winrt::Windows::System::LaunchQuerySupportStatus> {};
#endif

#ifndef WINRT_GENERIC_ab3d721b_a4f3_5861_b034_030b15233c52
#define WINRT_GENERIC_ab3d721b_a4f3_5861_b034_030b15233c52
template <> struct __declspec(uuid("ab3d721b-a4f3-5861-b034-030b15233c52")) __declspec(novtable) IAsyncOperation<winrt::Windows::System::LaunchUriStatus> : impl_IAsyncOperation<winrt::Windows::System::LaunchUriStatus> {};
#endif

#ifndef WINRT_GENERIC_bb70e5cd_62c2_5f78_ac8d_f4b973981da4
#define WINRT_GENERIC_bb70e5cd_62c2_5f78_ac8d_f4b973981da4
template <> struct __declspec(uuid("bb70e5cd-62c2-5f78-ac8d-f4b973981da4")) __declspec(novtable) IAsyncOperation<winrt::Windows::System::RemoteLaunchUriStatus> : impl_IAsyncOperation<winrt::Windows::System::RemoteLaunchUriStatus> {};
#endif

#ifndef WINRT_GENERIC_e6827240_7a8d_51be_8d21_e093268ccc15
#define WINRT_GENERIC_e6827240_7a8d_51be_8d21_e093268ccc15
template <> struct __declspec(uuid("e6827240-7a8d-51be-8d21-e093268ccc15")) __declspec(novtable) IAsyncOperation<Windows::System::ProcessLauncherResult> : impl_IAsyncOperation<Windows::System::ProcessLauncherResult> {};
#endif

#ifndef WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
#define WINRT_GENERIC_c1d3d1a2_ae17_5a5f_b5a2_bdcc8844889a
template <> struct __declspec(uuid("c1d3d1a2-ae17-5a5f-b5a2-bdcc8844889a")) __declspec(novtable) AsyncOperationCompletedHandler<bool> : impl_AsyncOperationCompletedHandler<bool> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_69cec62c_41eb_5d69_a475_29ee22323dd8
#define WINRT_GENERIC_69cec62c_41eb_5d69_a475_29ee22323dd8
template <> struct __declspec(uuid("69cec62c-41eb-5d69-a475-29ee22323dd8")) __declspec(novtable) IIterator<Windows::ApplicationModel::AppInfo> : impl_IIterator<Windows::ApplicationModel::AppInfo> {};
#endif

#ifndef WINRT_GENERIC_63d0bffe_0e34_55b3_83d5_314caff2b137
#define WINRT_GENERIC_63d0bffe_0e34_55b3_83d5_314caff2b137
template <> struct __declspec(uuid("63d0bffe-0e34-55b3-83d5-314caff2b137")) __declspec(novtable) IIterable<Windows::ApplicationModel::AppInfo> : impl_IIterable<Windows::ApplicationModel::AppInfo> {};
#endif

#ifndef WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
#define WINRT_GENERIC_8c304ebb_6615_50a4_8829_879ecd443236
template <> struct __declspec(uuid("8c304ebb-6615-50a4-8829-879ecd443236")) __declspec(novtable) IIterator<hstring> : impl_IIterator<hstring> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_3f08262e_a2e1_5134_9297_e9211f481a2d
#define WINRT_GENERIC_3f08262e_a2e1_5134_9297_e9211f481a2d
template <> struct __declspec(uuid("3f08262e-a2e1-5134-9297-e9211f481a2d")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::IInspectable> : impl_AsyncOperationCompletedHandler<Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_05b487c2_3830_5d3c_98da_25fa11542dbd
#define WINRT_GENERIC_05b487c2_3830_5d3c_98da_25fa11542dbd
template <> struct __declspec(uuid("05b487c2-3830-5d3c-98da-25fa11542dbd")) __declspec(novtable) IIterator<Windows::Storage::IStorageItem> : impl_IIterator<Windows::Storage::IStorageItem> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_5075a55f_68ba_56f2_97e6_9b1cbfa2c5f2
#define WINRT_GENERIC_5075a55f_68ba_56f2_97e6_9b1cbfa2c5f2
template <> struct __declspec(uuid("5075a55f-68ba-56f2-97e6-9b1cbfa2c5f2")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IPropertySet> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IPropertySet> {};
#endif

#ifndef WINRT_GENERIC_60847289_ea0b_5df6_89df_f2c62cba9693
#define WINRT_GENERIC_60847289_ea0b_5df6_89df_f2c62cba9693
template <> struct __declspec(uuid("60847289-ea0b-5df6-89df-f2c62cba9693")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Storage::Streams::IRandomAccessStreamReference> : impl_AsyncOperationCompletedHandler<Windows::Storage::Streams::IRandomAccessStreamReference> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_326fe162_582b_5659_b8a4_68ff0f525745
#define WINRT_GENERIC_326fe162_582b_5659_b8a4_68ff0f525745
template <> struct __declspec(uuid("326fe162-582b-5659-b8a4-68ff0f525745")) __declspec(novtable) IIterator<Windows::System::User> : impl_IIterator<Windows::System::User> {};
#endif

#ifndef WINRT_GENERIC_d1bacd1f_0376_5823_8c29_1d45b9f4c191
#define WINRT_GENERIC_d1bacd1f_0376_5823_8c29_1d45b9f4c191
template <> struct __declspec(uuid("d1bacd1f-0376-5823-8c29-1d45b9f4c191")) __declspec(novtable) IIterable<Windows::System::User> : impl_IIterable<Windows::System::User> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_f913e3a2_d1c5_5308_becf_4c2d8167824a
#define WINRT_GENERIC_f913e3a2_d1c5_5308_becf_4c2d8167824a
template <> struct __declspec(uuid("f913e3a2-d1c5-5308-becf-4c2d8167824a")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::System::User> : impl_AsyncOperationCompletedHandler<Windows::System::User> {};
#endif

#ifndef WINRT_GENERIC_70a97bf8_e0a5_59bb_9174_812a131d85a0
#define WINRT_GENERIC_70a97bf8_e0a5_59bb_9174_812a131d85a0
template <> struct __declspec(uuid("70a97bf8-e0a5-59bb-9174-812a131d85a0")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::System::LaunchUriResult> : impl_AsyncOperationCompletedHandler<Windows::System::LaunchUriResult> {};
#endif

#ifndef WINRT_GENERIC_198cac52_abcd_5529_933f_071cc93fd635
#define WINRT_GENERIC_198cac52_abcd_5529_933f_071cc93fd635
template <> struct __declspec(uuid("198cac52-abcd-5529-933f-071cc93fd635")) __declspec(novtable) AsyncOperationCompletedHandler<winrt::Windows::System::LaunchQuerySupportStatus> : impl_AsyncOperationCompletedHandler<winrt::Windows::System::LaunchQuerySupportStatus> {};
#endif

#ifndef WINRT_GENERIC_520aa58e_40d6_5a57_a6dc_cb5faea5cca5
#define WINRT_GENERIC_520aa58e_40d6_5a57_a6dc_cb5faea5cca5
template <> struct __declspec(uuid("520aa58e-40d6-5a57-a6dc-cb5faea5cca5")) __declspec(novtable) AsyncOperationCompletedHandler<winrt::Windows::System::LaunchUriStatus> : impl_AsyncOperationCompletedHandler<winrt::Windows::System::LaunchUriStatus> {};
#endif

#ifndef WINRT_GENERIC_3f8f4b1b_cd54_543c_817f_2630487f1878
#define WINRT_GENERIC_3f8f4b1b_cd54_543c_817f_2630487f1878
template <> struct __declspec(uuid("3f8f4b1b-cd54-543c-817f-2630487f1878")) __declspec(novtable) AsyncOperationCompletedHandler<winrt::Windows::System::RemoteLaunchUriStatus> : impl_AsyncOperationCompletedHandler<winrt::Windows::System::RemoteLaunchUriStatus> {};
#endif

#ifndef WINRT_GENERIC_8d787ee6_07e4_5dce_8fe5_b503a1f6368c
#define WINRT_GENERIC_8d787ee6_07e4_5dce_8fe5_b503a1f6368c
template <> struct __declspec(uuid("8d787ee6-07e4-5dce-8fe5-b503a1f6368c")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::System::ProcessLauncherResult> : impl_AsyncOperationCompletedHandler<Windows::System::ProcessLauncherResult> {};
#endif

#ifndef WINRT_GENERIC_07543d91_8610_5152_b0e4_43d6e4cdd0cb
#define WINRT_GENERIC_07543d91_8610_5152_b0e4_43d6e4cdd0cb
template <> struct __declspec(uuid("07543d91-8610-5152-b0e4-43d6e4cdd0cb")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::AppInfo>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::AppInfo>> {};
#endif

#ifndef WINRT_GENERIC_e44ea1df_bb85_5a8c_bddc_c8e960c355c9
#define WINRT_GENERIC_e44ea1df_bb85_5a8c_bddc_c8e960c355c9
template <> struct __declspec(uuid("e44ea1df-bb85-5a8c-bddc-c8e960c355c9")) __declspec(novtable) IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::System::User>> : impl_IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::System::User>> {};
#endif

#ifndef WINRT_GENERIC_07f25b6f_f054_5649_a5ce_b348ddc618b6
#define WINRT_GENERIC_07f25b6f_f054_5649_a5ce_b348ddc618b6
template <> struct __declspec(uuid("07f25b6f-f054-5649-a5ce-b348ddc618b6")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::AppInfo>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::AppInfo>> {};
#endif

#ifndef WINRT_GENERIC_09870533_f7cb_569c_b797_dcb48debd709
#define WINRT_GENERIC_09870533_f7cb_569c_b797_dcb48debd709
template <> struct __declspec(uuid("09870533-f7cb-569c-b797-dcb48debd709")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::System::User>> : impl_AsyncOperationCompletedHandler<Windows::Foundation::Collections::IVectorView<Windows::System::User>> {};
#endif


}

namespace Windows::System {

template <typename D>
struct WINRT_EBO impl_IAppMemoryReport
{
    uint64_t PrivateCommitUsage() const;
    uint64_t PeakPrivateCommitUsage() const;
    uint64_t TotalCommitUsage() const;
    uint64_t TotalCommitLimit() const;
};

template <typename D>
struct WINRT_EBO impl_IAppMemoryUsageLimitChangingEventArgs
{
    uint64_t OldLimit() const;
    uint64_t NewLimit() const;
};

template <typename D>
struct WINRT_EBO impl_IFolderLauncherOptions
{
    Windows::Foundation::Collections::IVector<Windows::Storage::IStorageItem> ItemsToSelect() const;
};

template <typename D>
struct WINRT_EBO impl_IKnownUserPropertiesStatics
{
    hstring DisplayName() const;
    hstring FirstName() const;
    hstring LastName() const;
    hstring ProviderName() const;
    hstring AccountName() const;
    hstring GuestHost() const;
    hstring PrincipalName() const;
    hstring DomainName() const;
    hstring SessionInitiationProtocolUri() const;
};

template <typename D>
struct WINRT_EBO impl_ILaunchUriResult
{
    Windows::System::LaunchUriStatus Status() const;
    Windows::Foundation::Collections::ValueSet Result() const;
};

template <typename D>
struct WINRT_EBO impl_ILauncherOptions
{
    bool TreatAsUntrusted() const;
    void TreatAsUntrusted(bool value) const;
    bool DisplayApplicationPicker() const;
    void DisplayApplicationPicker(bool value) const;
    Windows::System::LauncherUIOptions UI() const;
    hstring PreferredApplicationPackageFamilyName() const;
    void PreferredApplicationPackageFamilyName(hstring_ref value) const;
    hstring PreferredApplicationDisplayName() const;
    void PreferredApplicationDisplayName(hstring_ref value) const;
    Windows::Foundation::Uri FallbackUri() const;
    void FallbackUri(const Windows::Foundation::Uri & value) const;
    hstring ContentType() const;
    void ContentType(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_ILauncherOptions2
{
    hstring TargetApplicationPackageFamilyName() const;
    void TargetApplicationPackageFamilyName(hstring_ref value) const;
    Windows::Storage::Search::StorageFileQueryResult NeighboringFilesQuery() const;
    void NeighboringFilesQuery(const Windows::Storage::Search::StorageFileQueryResult & value) const;
};

template <typename D>
struct WINRT_EBO impl_ILauncherOptions3
{
    bool IgnoreAppUriHandlers() const;
    void IgnoreAppUriHandlers(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ILauncherStatics
{
    Windows::Foundation::IAsyncOperation<bool> LaunchFileAsync(const Windows::Storage::IStorageFile & file) const;
    Windows::Foundation::IAsyncOperation<bool> LaunchFileAsync(const Windows::Storage::IStorageFile & file, const Windows::System::LauncherOptions & options) const;
    Windows::Foundation::IAsyncOperation<bool> LaunchUriAsync(const Windows::Foundation::Uri & uri) const;
    Windows::Foundation::IAsyncOperation<bool> LaunchUriAsync(const Windows::Foundation::Uri & uri, const Windows::System::LauncherOptions & options) const;
};

template <typename D>
struct WINRT_EBO impl_ILauncherStatics2
{
    Windows::Foundation::IAsyncOperation<Windows::System::LaunchUriResult> LaunchUriForResultsAsync(const Windows::Foundation::Uri & uri, const Windows::System::LauncherOptions & options) const;
    Windows::Foundation::IAsyncOperation<Windows::System::LaunchUriResult> LaunchUriForResultsAsync(const Windows::Foundation::Uri & uri, const Windows::System::LauncherOptions & options, const Windows::Foundation::Collections::ValueSet & inputData) const;
    Windows::Foundation::IAsyncOperation<bool> LaunchUriAsync(const Windows::Foundation::Uri & uri, const Windows::System::LauncherOptions & options, const Windows::Foundation::Collections::ValueSet & inputData) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::LaunchQuerySupportStatus> QueryUriSupportAsync(const Windows::Foundation::Uri & uri, Windows::System::LaunchQuerySupportType launchQuerySupportType) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::LaunchQuerySupportStatus> QueryUriSupportAsync(const Windows::Foundation::Uri & uri, Windows::System::LaunchQuerySupportType launchQuerySupportType, hstring_ref packageFamilyName) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::LaunchQuerySupportStatus> QueryFileSupportAsync(const Windows::Storage::StorageFile & file) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::LaunchQuerySupportStatus> QueryFileSupportAsync(const Windows::Storage::StorageFile & file, hstring_ref packageFamilyName) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::AppInfo>> FindUriSchemeHandlersAsync(hstring_ref scheme) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::AppInfo>> FindUriSchemeHandlersAsync(hstring_ref scheme, Windows::System::LaunchQuerySupportType launchQuerySupportType) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::AppInfo>> FindFileHandlersAsync(hstring_ref extension) const;
};

template <typename D>
struct WINRT_EBO impl_ILauncherStatics3
{
    Windows::Foundation::IAsyncOperation<bool> LaunchFolderAsync(const Windows::Storage::IStorageFolder & folder) const;
    Windows::Foundation::IAsyncOperation<bool> LaunchFolderAsync(const Windows::Storage::IStorageFolder & folder, const Windows::System::FolderLauncherOptions & options) const;
};

template <typename D>
struct WINRT_EBO impl_ILauncherStatics4
{
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::LaunchQuerySupportStatus> QueryAppUriSupportAsync(const Windows::Foundation::Uri & uri) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::LaunchQuerySupportStatus> QueryAppUriSupportAsync(const Windows::Foundation::Uri & uri, hstring_ref packageFamilyName) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::ApplicationModel::AppInfo>> FindAppUriHandlersAsync(const Windows::Foundation::Uri & uri) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::LaunchUriStatus> LaunchUriForUserAsync(const Windows::System::User & user, const Windows::Foundation::Uri & uri) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::LaunchUriStatus> LaunchUriForUserAsync(const Windows::System::User & user, const Windows::Foundation::Uri & uri, const Windows::System::LauncherOptions & options) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::LaunchUriStatus> LaunchUriForUserAsync(const Windows::System::User & user, const Windows::Foundation::Uri & uri, const Windows::System::LauncherOptions & options, const Windows::Foundation::Collections::ValueSet & inputData) const;
    Windows::Foundation::IAsyncOperation<Windows::System::LaunchUriResult> LaunchUriForResultsForUserAsync(const Windows::System::User & user, const Windows::Foundation::Uri & uri, const Windows::System::LauncherOptions & options) const;
    Windows::Foundation::IAsyncOperation<Windows::System::LaunchUriResult> LaunchUriForResultsForUserAsync(const Windows::System::User & user, const Windows::Foundation::Uri & uri, const Windows::System::LauncherOptions & options, const Windows::Foundation::Collections::ValueSet & inputData) const;
};

template <typename D>
struct WINRT_EBO impl_ILauncherUIOptions
{
    Windows::Foundation::IReference<Windows::Foundation::Point> InvocationPoint() const;
    void InvocationPoint(const Windows::Foundation::IReference<Windows::Foundation::Point> & value) const;
    Windows::Foundation::IReference<Windows::Foundation::Rect> SelectionRect() const;
    void SelectionRect(const Windows::Foundation::IReference<Windows::Foundation::Rect> & value) const;
    Windows::UI::Popups::Placement PreferredPlacement() const;
    void PreferredPlacement(Windows::UI::Popups::Placement value) const;
};

template <typename D>
struct WINRT_EBO impl_ILauncherViewOptions
{
    Windows::UI::ViewManagement::ViewSizePreference DesiredRemainingView() const;
    void DesiredRemainingView(Windows::UI::ViewManagement::ViewSizePreference value) const;
};

template <typename D>
struct WINRT_EBO impl_IMemoryManagerStatics
{
    uint64_t AppMemoryUsage() const;
    uint64_t AppMemoryUsageLimit() const;
    Windows::System::AppMemoryUsageLevel AppMemoryUsageLevel() const;
    event_token AppMemoryUsageIncreased(const Windows::Foundation::EventHandler<Windows::IInspectable> & handler) const;
    using AppMemoryUsageIncreased_revoker = event_revoker<IMemoryManagerStatics>;
    AppMemoryUsageIncreased_revoker AppMemoryUsageIncreased(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & handler) const;
    void AppMemoryUsageIncreased(event_token token) const;
    event_token AppMemoryUsageDecreased(const Windows::Foundation::EventHandler<Windows::IInspectable> & handler) const;
    using AppMemoryUsageDecreased_revoker = event_revoker<IMemoryManagerStatics>;
    AppMemoryUsageDecreased_revoker AppMemoryUsageDecreased(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & handler) const;
    void AppMemoryUsageDecreased(event_token token) const;
    event_token AppMemoryUsageLimitChanging(const Windows::Foundation::EventHandler<Windows::System::AppMemoryUsageLimitChangingEventArgs> & handler) const;
    using AppMemoryUsageLimitChanging_revoker = event_revoker<IMemoryManagerStatics>;
    AppMemoryUsageLimitChanging_revoker AppMemoryUsageLimitChanging(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::System::AppMemoryUsageLimitChangingEventArgs> & handler) const;
    void AppMemoryUsageLimitChanging(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IMemoryManagerStatics2
{
    Windows::System::AppMemoryReport GetAppMemoryReport() const;
    Windows::System::ProcessMemoryReport GetProcessMemoryReport() const;
};

template <typename D>
struct WINRT_EBO impl_IMemoryManagerStatics3
{
    bool TrySetAppMemoryUsageLimit(uint64_t value) const;
};

template <typename D>
struct WINRT_EBO impl_IProcessLauncherOptions
{
    Windows::Storage::Streams::IInputStream StandardInput() const;
    void StandardInput(const Windows::Storage::Streams::IInputStream & value) const;
    Windows::Storage::Streams::IOutputStream StandardOutput() const;
    void StandardOutput(const Windows::Storage::Streams::IOutputStream & value) const;
    Windows::Storage::Streams::IOutputStream StandardError() const;
    void StandardError(const Windows::Storage::Streams::IOutputStream & value) const;
    hstring WorkingDirectory() const;
    void WorkingDirectory(hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IProcessLauncherResult
{
    uint32_t ExitCode() const;
};

template <typename D>
struct WINRT_EBO impl_IProcessLauncherStatics
{
    Windows::Foundation::IAsyncOperation<Windows::System::ProcessLauncherResult> RunToCompletionAsync(hstring_ref fileName, hstring_ref args) const;
    Windows::Foundation::IAsyncOperation<Windows::System::ProcessLauncherResult> RunToCompletionAsync(hstring_ref fileName, hstring_ref args, const Windows::System::ProcessLauncherOptions & options) const;
};

template <typename D>
struct WINRT_EBO impl_IProcessMemoryReport
{
    uint64_t PrivateWorkingSetUsage() const;
    uint64_t TotalWorkingSetUsage() const;
};

template <typename D>
struct WINRT_EBO impl_IProtocolForResultsOperation
{
    void ReportCompleted(const Windows::Foundation::Collections::ValueSet & data) const;
};

template <typename D>
struct WINRT_EBO impl_IRemoteLauncherOptions
{
    Windows::Foundation::Uri FallbackUri() const;
    void FallbackUri(const Windows::Foundation::Uri & value) const;
    Windows::Foundation::Collections::IVector<hstring> PreferredAppIds() const;
};

template <typename D>
struct WINRT_EBO impl_IRemoteLauncherStatics
{
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::RemoteLaunchUriStatus> LaunchUriAsync(const Windows::System::RemoteSystems::RemoteSystemConnectionRequest & remoteSystemConnectionRequest, const Windows::Foundation::Uri & uri) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::RemoteLaunchUriStatus> LaunchUriAsync(const Windows::System::RemoteSystems::RemoteSystemConnectionRequest & remoteSystemConnectionRequest, const Windows::Foundation::Uri & uri, const Windows::System::RemoteLauncherOptions & options) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::System::RemoteLaunchUriStatus> LaunchUriAsync(const Windows::System::RemoteSystems::RemoteSystemConnectionRequest & remoteSystemConnectionRequest, const Windows::Foundation::Uri & uri, const Windows::System::RemoteLauncherOptions & options, const Windows::Foundation::Collections::ValueSet & inputData) const;
};

template <typename D>
struct WINRT_EBO impl_IShutdownManagerStatics
{
    void BeginShutdown(Windows::System::ShutdownKind shutdownKind, const Windows::Foundation::TimeSpan & timeout) const;
    void CancelShutdown() const;
};

template <typename D>
struct WINRT_EBO impl_ITimeZoneSettingsStatics
{
    hstring CurrentTimeZoneDisplayName() const;
    Windows::Foundation::Collections::IVectorView<hstring> SupportedTimeZoneDisplayNames() const;
    bool CanChangeTimeZone() const;
    void ChangeTimeZoneByDisplayName(hstring_ref timeZoneDisplayName) const;
};

template <typename D>
struct WINRT_EBO impl_IUser
{
    hstring NonRoamableId() const;
    Windows::System::UserAuthenticationStatus AuthenticationStatus() const;
    Windows::System::UserType Type() const;
    Windows::Foundation::IAsyncOperation<Windows::IInspectable> GetPropertyAsync(hstring_ref value) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IPropertySet> GetPropertiesAsync(const Windows::Foundation::Collections::IVectorView<hstring> & values) const;
    Windows::Foundation::IAsyncOperation<Windows::Storage::Streams::IRandomAccessStreamReference> GetPictureAsync(Windows::System::UserPictureSize desiredSize) const;
};

template <typename D>
struct WINRT_EBO impl_IUserAuthenticationStatusChangeDeferral
{
    void Complete() const;
};

template <typename D>
struct WINRT_EBO impl_IUserAuthenticationStatusChangingEventArgs
{
    Windows::System::UserAuthenticationStatusChangeDeferral GetDeferral() const;
    Windows::System::User User() const;
    Windows::System::UserAuthenticationStatus NewStatus() const;
    Windows::System::UserAuthenticationStatus CurrentStatus() const;
};

template <typename D>
struct WINRT_EBO impl_IUserChangedEventArgs
{
    Windows::System::User User() const;
};

template <typename D>
struct WINRT_EBO impl_IUserDeviceAssociationChangedEventArgs
{
    hstring DeviceId() const;
    Windows::System::User NewUser() const;
    Windows::System::User OldUser() const;
};

template <typename D>
struct WINRT_EBO impl_IUserDeviceAssociationStatics
{
    Windows::System::User FindUserFromDeviceId(hstring_ref deviceId) const;
    event_token UserDeviceAssociationChanged(const Windows::Foundation::EventHandler<Windows::System::UserDeviceAssociationChangedEventArgs> & handler) const;
    using UserDeviceAssociationChanged_revoker = event_revoker<IUserDeviceAssociationStatics>;
    UserDeviceAssociationChanged_revoker UserDeviceAssociationChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::System::UserDeviceAssociationChangedEventArgs> & handler) const;
    void UserDeviceAssociationChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IUserPicker
{
    bool AllowGuestAccounts() const;
    void AllowGuestAccounts(bool value) const;
    Windows::System::User SuggestedSelectedUser() const;
    void SuggestedSelectedUser(const Windows::System::User & value) const;
    Windows::Foundation::IAsyncOperation<Windows::System::User> PickSingleUserAsync() const;
};

template <typename D>
struct WINRT_EBO impl_IUserPickerStatics
{
    bool IsSupported() const;
};

template <typename D>
struct WINRT_EBO impl_IUserStatics
{
    Windows::System::UserWatcher CreateWatcher() const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::System::User>> FindAllAsync() const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::System::User>> FindAllAsync(Windows::System::UserType type) const;
    Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::System::User>> FindAllAsync(Windows::System::UserType type, Windows::System::UserAuthenticationStatus status) const;
    Windows::System::User GetFromId(hstring_ref nonRoamableId) const;
};

template <typename D>
struct WINRT_EBO impl_IUserWatcher
{
    Windows::System::UserWatcherStatus Status() const;
    void Start() const;
    void Stop() const;
    event_token Added(const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserChangedEventArgs> & handler) const;
    using Added_revoker = event_revoker<IUserWatcher>;
    Added_revoker Added(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserChangedEventArgs> & handler) const;
    void Added(event_token token) const;
    event_token Removed(const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserChangedEventArgs> & handler) const;
    using Removed_revoker = event_revoker<IUserWatcher>;
    Removed_revoker Removed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserChangedEventArgs> & handler) const;
    void Removed(event_token token) const;
    event_token Updated(const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserChangedEventArgs> & handler) const;
    using Updated_revoker = event_revoker<IUserWatcher>;
    Updated_revoker Updated(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserChangedEventArgs> & handler) const;
    void Updated(event_token token) const;
    event_token AuthenticationStatusChanged(const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserChangedEventArgs> & handler) const;
    using AuthenticationStatusChanged_revoker = event_revoker<IUserWatcher>;
    AuthenticationStatusChanged_revoker AuthenticationStatusChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserChangedEventArgs> & handler) const;
    void AuthenticationStatusChanged(event_token token) const;
    event_token AuthenticationStatusChanging(const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserAuthenticationStatusChangingEventArgs> & handler) const;
    using AuthenticationStatusChanging_revoker = event_revoker<IUserWatcher>;
    AuthenticationStatusChanging_revoker AuthenticationStatusChanging(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::System::UserAuthenticationStatusChangingEventArgs> & handler) const;
    void AuthenticationStatusChanging(event_token token) const;
    event_token EnumerationCompleted(const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::IInspectable> & handler) const;
    using EnumerationCompleted_revoker = event_revoker<IUserWatcher>;
    EnumerationCompleted_revoker EnumerationCompleted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::IInspectable> & handler) const;
    void EnumerationCompleted(event_token token) const;
    event_token Stopped(const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::IInspectable> & handler) const;
    using Stopped_revoker = event_revoker<IUserWatcher>;
    Stopped_revoker Stopped(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::System::UserWatcher, Windows::IInspectable> & handler) const;
    void Stopped(event_token token) const;
};

struct IAppMemoryReport :
    Windows::IInspectable,
    impl::consume<IAppMemoryReport>
{
    IAppMemoryReport(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppMemoryReport>(m_ptr); }
};

struct IAppMemoryUsageLimitChangingEventArgs :
    Windows::IInspectable,
    impl::consume<IAppMemoryUsageLimitChangingEventArgs>
{
    IAppMemoryUsageLimitChangingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppMemoryUsageLimitChangingEventArgs>(m_ptr); }
};

struct IFolderLauncherOptions :
    Windows::IInspectable,
    impl::consume<IFolderLauncherOptions>
{
    IFolderLauncherOptions(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFolderLauncherOptions>(m_ptr); }
};

struct IKnownUserPropertiesStatics :
    Windows::IInspectable,
    impl::consume<IKnownUserPropertiesStatics>
{
    IKnownUserPropertiesStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IKnownUserPropertiesStatics>(m_ptr); }
};

struct ILaunchUriResult :
    Windows::IInspectable,
    impl::consume<ILaunchUriResult>
{
    ILaunchUriResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILaunchUriResult>(m_ptr); }
};

struct ILauncherOptions :
    Windows::IInspectable,
    impl::consume<ILauncherOptions>
{
    ILauncherOptions(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILauncherOptions>(m_ptr); }
};

struct ILauncherOptions2 :
    Windows::IInspectable,
    impl::consume<ILauncherOptions2>
{
    ILauncherOptions2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILauncherOptions2>(m_ptr); }
};

struct ILauncherOptions3 :
    Windows::IInspectable,
    impl::consume<ILauncherOptions3>
{
    ILauncherOptions3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILauncherOptions3>(m_ptr); }
};

struct ILauncherStatics :
    Windows::IInspectable,
    impl::consume<ILauncherStatics>
{
    ILauncherStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILauncherStatics>(m_ptr); }
};

struct ILauncherStatics2 :
    Windows::IInspectable,
    impl::consume<ILauncherStatics2>
{
    ILauncherStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILauncherStatics2>(m_ptr); }
};

struct ILauncherStatics3 :
    Windows::IInspectable,
    impl::consume<ILauncherStatics3>
{
    ILauncherStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILauncherStatics3>(m_ptr); }
};

struct ILauncherStatics4 :
    Windows::IInspectable,
    impl::consume<ILauncherStatics4>
{
    ILauncherStatics4(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILauncherStatics4>(m_ptr); }
};

struct ILauncherUIOptions :
    Windows::IInspectable,
    impl::consume<ILauncherUIOptions>
{
    ILauncherUIOptions(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILauncherUIOptions>(m_ptr); }
};

struct ILauncherViewOptions :
    Windows::IInspectable,
    impl::consume<ILauncherViewOptions>
{
    ILauncherViewOptions(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILauncherViewOptions>(m_ptr); }
};

struct IMemoryManagerStatics :
    Windows::IInspectable,
    impl::consume<IMemoryManagerStatics>
{
    IMemoryManagerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMemoryManagerStatics>(m_ptr); }
};

struct IMemoryManagerStatics2 :
    Windows::IInspectable,
    impl::consume<IMemoryManagerStatics2>
{
    IMemoryManagerStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMemoryManagerStatics2>(m_ptr); }
};

struct IMemoryManagerStatics3 :
    Windows::IInspectable,
    impl::consume<IMemoryManagerStatics3>
{
    IMemoryManagerStatics3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMemoryManagerStatics3>(m_ptr); }
};

struct IProcessLauncherOptions :
    Windows::IInspectable,
    impl::consume<IProcessLauncherOptions>
{
    IProcessLauncherOptions(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProcessLauncherOptions>(m_ptr); }
};

struct IProcessLauncherResult :
    Windows::IInspectable,
    impl::consume<IProcessLauncherResult>
{
    IProcessLauncherResult(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProcessLauncherResult>(m_ptr); }
};

struct IProcessLauncherStatics :
    Windows::IInspectable,
    impl::consume<IProcessLauncherStatics>
{
    IProcessLauncherStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProcessLauncherStatics>(m_ptr); }
};

struct IProcessMemoryReport :
    Windows::IInspectable,
    impl::consume<IProcessMemoryReport>
{
    IProcessMemoryReport(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProcessMemoryReport>(m_ptr); }
};

struct IProtocolForResultsOperation :
    Windows::IInspectable,
    impl::consume<IProtocolForResultsOperation>
{
    IProtocolForResultsOperation(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProtocolForResultsOperation>(m_ptr); }
};

struct IRemoteLauncherOptions :
    Windows::IInspectable,
    impl::consume<IRemoteLauncherOptions>
{
    IRemoteLauncherOptions(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRemoteLauncherOptions>(m_ptr); }
};

struct IRemoteLauncherStatics :
    Windows::IInspectable,
    impl::consume<IRemoteLauncherStatics>
{
    IRemoteLauncherStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRemoteLauncherStatics>(m_ptr); }
};

struct IShutdownManagerStatics :
    Windows::IInspectable,
    impl::consume<IShutdownManagerStatics>
{
    IShutdownManagerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IShutdownManagerStatics>(m_ptr); }
};

struct ITimeZoneSettingsStatics :
    Windows::IInspectable,
    impl::consume<ITimeZoneSettingsStatics>
{
    ITimeZoneSettingsStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimeZoneSettingsStatics>(m_ptr); }
};

struct IUser :
    Windows::IInspectable,
    impl::consume<IUser>
{
    IUser(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUser>(m_ptr); }
};

struct IUserAuthenticationStatusChangeDeferral :
    Windows::IInspectable,
    impl::consume<IUserAuthenticationStatusChangeDeferral>
{
    IUserAuthenticationStatusChangeDeferral(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserAuthenticationStatusChangeDeferral>(m_ptr); }
};

struct IUserAuthenticationStatusChangingEventArgs :
    Windows::IInspectable,
    impl::consume<IUserAuthenticationStatusChangingEventArgs>
{
    IUserAuthenticationStatusChangingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserAuthenticationStatusChangingEventArgs>(m_ptr); }
};

struct IUserChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IUserChangedEventArgs>
{
    IUserChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserChangedEventArgs>(m_ptr); }
};

struct IUserDeviceAssociationChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IUserDeviceAssociationChangedEventArgs>
{
    IUserDeviceAssociationChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserDeviceAssociationChangedEventArgs>(m_ptr); }
};

struct IUserDeviceAssociationStatics :
    Windows::IInspectable,
    impl::consume<IUserDeviceAssociationStatics>
{
    IUserDeviceAssociationStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserDeviceAssociationStatics>(m_ptr); }
};

struct IUserPicker :
    Windows::IInspectable,
    impl::consume<IUserPicker>
{
    IUserPicker(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserPicker>(m_ptr); }
};

struct IUserPickerStatics :
    Windows::IInspectable,
    impl::consume<IUserPickerStatics>
{
    IUserPickerStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserPickerStatics>(m_ptr); }
};

struct IUserStatics :
    Windows::IInspectable,
    impl::consume<IUserStatics>
{
    IUserStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserStatics>(m_ptr); }
};

struct IUserWatcher :
    Windows::IInspectable,
    impl::consume<IUserWatcher>
{
    IUserWatcher(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IUserWatcher>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.ApplicationModel.ExtendedExecution.Foreground.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.ApplicationModel.ExtendedExecution.Foreground.1.h"
#include "Windows.Foundation.2.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_f874197a_bf19_5482_9ab1_34923de6738d
#define WINRT_GENERIC_f874197a_bf19_5482_9ab1_34923de6738d
template <> struct __declspec(uuid("f874197a-bf19-5482-9ab1-34923de6738d")) __declspec(novtable) TypedEventHandler<Windows::IInspectable, Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundRevokedEventArgs> : impl_TypedEventHandler<Windows::IInspectable, Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundRevokedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_b18ea00f_8c20_5ac2_9246_3ef405271f1a
#define WINRT_GENERIC_b18ea00f_8c20_5ac2_9246_3ef405271f1a
template <> struct __declspec(uuid("b18ea00f-8c20-5ac2-9246-3ef405271f1a")) __declspec(novtable) IAsyncOperation<winrt::Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundResult> : impl_IAsyncOperation<winrt::Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundResult> {};
#endif

#ifndef WINRT_GENERIC_07e1dc01_18ba_596a_b745_79f9cde44ccc
#define WINRT_GENERIC_07e1dc01_18ba_596a_b745_79f9cde44ccc
template <> struct __declspec(uuid("07e1dc01-18ba-596a-b745-79f9cde44ccc")) __declspec(novtable) AsyncOperationCompletedHandler<winrt::Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundResult> : impl_AsyncOperationCompletedHandler<winrt::Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundResult> {};
#endif


}

namespace Windows::ApplicationModel::ExtendedExecution::Foreground {

template <typename D>
struct WINRT_EBO impl_IExtendedExecutionForegroundRevokedEventArgs
{
    Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundRevokedReason Reason() const;
};

template <typename D>
struct WINRT_EBO impl_IExtendedExecutionForegroundSession
{
    hstring Description() const;
    void Description(hstring_ref value) const;
    event_token Revoked(const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundRevokedEventArgs> & handler) const;
    using Revoked_revoker = event_revoker<IExtendedExecutionForegroundSession>;
    Revoked_revoker Revoked(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::IInspectable, Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundRevokedEventArgs> & handler) const;
    void Revoked(event_token token) const;
    Windows::Foundation::IAsyncOperation<winrt::Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundResult> RequestExtensionAsync() const;
    Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundReason Reason() const;
    void Reason(Windows::ApplicationModel::ExtendedExecution::Foreground::ExtendedExecutionForegroundReason value) const;
};

struct IExtendedExecutionForegroundRevokedEventArgs :
    Windows::IInspectable,
    impl::consume<IExtendedExecutionForegroundRevokedEventArgs>
{
    IExtendedExecutionForegroundRevokedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IExtendedExecutionForegroundRevokedEventArgs>(m_ptr); }
};

struct IExtendedExecutionForegroundSession :
    Windows::IInspectable,
    impl::consume<IExtendedExecutionForegroundSession>,
    impl::require<IExtendedExecutionForegroundSession, Windows::Foundation::IClosable>
{
    IExtendedExecutionForegroundSession(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IExtendedExecutionForegroundSession>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Pwm.1.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "../base.h"
#include "Windows.Devices.Pwm.0.h"
#include "Windows.Devices.Pwm.Provider.0.h"
#include "Windows.Foundation.0.h"
#include "Windows.Foundation.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Devices::Pwm {

struct __declspec(uuid("c45f5c85-d2e8-42cf-9bd6-cf5ed029e6a7")) __declspec(novtable) IPwmController : Windows::IInspectable
{
    virtual HRESULT __stdcall get_PinCount(int32_t * value) = 0;
    virtual HRESULT __stdcall get_ActualFrequency(double * value) = 0;
    virtual HRESULT __stdcall abi_SetDesiredFrequency(double desiredFrequency, double * value) = 0;
    virtual HRESULT __stdcall get_MinFrequency(double * value) = 0;
    virtual HRESULT __stdcall get_MaxFrequency(double * value) = 0;
    virtual HRESULT __stdcall abi_OpenPin(int32_t pinNumber, Windows::Devices::Pwm::IPwmPin ** pin) = 0;
};

struct __declspec(uuid("4263bda1-8946-4404-bd48-81dd124af4d9")) __declspec(novtable) IPwmControllerStatics : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetControllersAsync(Windows::Devices::Pwm::Provider::IPwmProvider * provider, Windows::Foundation::IAsyncOperation<Windows::Foundation::Collections::IVectorView<Windows::Devices::Pwm::PwmController>> ** operation) = 0;
};

struct __declspec(uuid("44fc5b1f-f119-4bdd-97ad-f76ef986736d")) __declspec(novtable) IPwmControllerStatics2 : Windows::IInspectable
{
    virtual HRESULT __stdcall abi_GetDefaultAsync(Windows::Foundation::IAsyncOperation<Windows::Devices::Pwm::PwmController> ** operation) = 0;
};

struct __declspec(uuid("22972dc8-c6cf-4821-b7f9-c6454fb6af79")) __declspec(novtable) IPwmPin : Windows::IInspectable
{
    virtual HRESULT __stdcall get_Controller(Windows::Devices::Pwm::IPwmController ** value) = 0;
    virtual HRESULT __stdcall abi_GetActiveDutyCyclePercentage(double * result) = 0;
    virtual HRESULT __stdcall abi_SetActiveDutyCyclePercentage(double dutyCyclePercentage) = 0;
    virtual HRESULT __stdcall get_Polarity(winrt::Windows::Devices::Pwm::PwmPulsePolarity * value) = 0;
    virtual HRESULT __stdcall put_Polarity(winrt::Windows::Devices::Pwm::PwmPulsePolarity value) = 0;
    virtual HRESULT __stdcall abi_Start() = 0;
    virtual HRESULT __stdcall abi_Stop() = 0;
    virtual HRESULT __stdcall get_IsStarted(bool * value) = 0;
};

}

namespace ABI {

template <> struct traits<Windows::Devices::Pwm::PwmController> { using default_interface = Windows::Devices::Pwm::IPwmController; };
template <> struct traits<Windows::Devices::Pwm::PwmPin> { using default_interface = Windows::Devices::Pwm::IPwmPin; };

}

namespace Windows::Devices::Pwm {

template <typename T> struct impl_IPwmController;
template <typename T> struct impl_IPwmControllerStatics;
template <typename T> struct impl_IPwmControllerStatics2;
template <typename T> struct impl_IPwmPin;

}

namespace impl {

template <> struct traits<Windows::Devices::Pwm::IPwmController>
{
    using abi = ABI::Windows::Devices::Pwm::IPwmController;
    template <typename D> using consume = Windows::Devices::Pwm::impl_IPwmController<D>;
};

template <> struct traits<Windows::Devices::Pwm::IPwmControllerStatics>
{
    using abi = ABI::Windows::Devices::Pwm::IPwmControllerStatics;
    template <typename D> using consume = Windows::Devices::Pwm::impl_IPwmControllerStatics<D>;
};

template <> struct traits<Windows::Devices::Pwm::IPwmControllerStatics2>
{
    using abi = ABI::Windows::Devices::Pwm::IPwmControllerStatics2;
    template <typename D> using consume = Windows::Devices::Pwm::impl_IPwmControllerStatics2<D>;
};

template <> struct traits<Windows::Devices::Pwm::IPwmPin>
{
    using abi = ABI::Windows::Devices::Pwm::IPwmPin;
    template <typename D> using consume = Windows::Devices::Pwm::impl_IPwmPin<D>;
};

template <> struct traits<Windows::Devices::Pwm::PwmController>
{
    using abi = ABI::Windows::Devices::Pwm::PwmController;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Pwm.PwmController"; }
};

template <> struct traits<Windows::Devices::Pwm::PwmPin>
{
    using abi = ABI::Windows::Devices::Pwm::PwmPin;
    static constexpr const wchar_t * name() noexcept { return L"Windows.Devices.Pwm.PwmPin"; }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Core.AnimationMetrics.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.UI.Core.AnimationMetrics.1.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_719cc2ba_3e76_5def_9f1a_38d85a145ea8
#define WINRT_GENERIC_719cc2ba_3e76_5def_9f1a_38d85a145ea8
template <> struct __declspec(uuid("719cc2ba-3e76-5def-9f1a-38d85a145ea8")) __declspec(novtable) IReference<float> : impl_IReference<float> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_3a6ed95d_6a50_5ead_a4c6_09f8babc632c
#define WINRT_GENERIC_3a6ed95d_6a50_5ead_a4c6_09f8babc632c
template <> struct __declspec(uuid("3a6ed95d-6a50-5ead-a4c6-09f8babc632c")) __declspec(novtable) IVectorView<Windows::UI::Core::AnimationMetrics::IPropertyAnimation> : impl_IVectorView<Windows::UI::Core::AnimationMetrics::IPropertyAnimation> {};
#endif

#ifndef WINRT_GENERIC_bb6799d3_9f1a_5a4e_a940_945f1ab8c4fe
#define WINRT_GENERIC_bb6799d3_9f1a_5a4e_a940_945f1ab8c4fe
template <> struct __declspec(uuid("bb6799d3-9f1a-5a4e-a940-945f1ab8c4fe")) __declspec(novtable) IIterator<Windows::UI::Core::AnimationMetrics::IPropertyAnimation> : impl_IIterator<Windows::UI::Core::AnimationMetrics::IPropertyAnimation> {};
#endif

#ifndef WINRT_GENERIC_c75f1bd1_a3c1_5881_9da0_1ecdb8e51bc3
#define WINRT_GENERIC_c75f1bd1_a3c1_5881_9da0_1ecdb8e51bc3
template <> struct __declspec(uuid("c75f1bd1-a3c1-5881-9da0-1ecdb8e51bc3")) __declspec(novtable) IIterable<Windows::UI::Core::AnimationMetrics::IPropertyAnimation> : impl_IIterable<Windows::UI::Core::AnimationMetrics::IPropertyAnimation> {};
#endif


}

namespace Windows::UI::Core::AnimationMetrics {

template <typename D>
struct WINRT_EBO impl_IAnimationDescription
{
    Windows::Foundation::Collections::IVectorView<Windows::UI::Core::AnimationMetrics::IPropertyAnimation> Animations() const;
    Windows::Foundation::TimeSpan StaggerDelay() const;
    float StaggerDelayFactor() const;
    Windows::Foundation::TimeSpan DelayLimit() const;
    int32_t ZOrder() const;
};

template <typename D>
struct WINRT_EBO impl_IAnimationDescriptionFactory
{
    Windows::UI::Core::AnimationMetrics::AnimationDescription CreateInstance(Windows::UI::Core::AnimationMetrics::AnimationEffect effect, Windows::UI::Core::AnimationMetrics::AnimationEffectTarget target) const;
};

template <typename D>
struct WINRT_EBO impl_IOpacityAnimation
{
    Windows::Foundation::IReference<float> InitialOpacity() const;
    float FinalOpacity() const;
};

template <typename D>
struct WINRT_EBO impl_IPropertyAnimation
{
    Windows::UI::Core::AnimationMetrics::PropertyAnimationType Type() const;
    Windows::Foundation::TimeSpan Delay() const;
    Windows::Foundation::TimeSpan Duration() const;
    Windows::Foundation::Point Control1() const;
    Windows::Foundation::Point Control2() const;
};

template <typename D>
struct WINRT_EBO impl_IScaleAnimation
{
    Windows::Foundation::IReference<float> InitialScaleX() const;
    Windows::Foundation::IReference<float> InitialScaleY() const;
    float FinalScaleX() const;
    float FinalScaleY() const;
    Windows::Foundation::Point NormalizedOrigin() const;
};

struct IAnimationDescription :
    Windows::IInspectable,
    impl::consume<IAnimationDescription>
{
    IAnimationDescription(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAnimationDescription>(m_ptr); }
};

struct IAnimationDescriptionFactory :
    Windows::IInspectable,
    impl::consume<IAnimationDescriptionFactory>
{
    IAnimationDescriptionFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAnimationDescriptionFactory>(m_ptr); }
};

struct IOpacityAnimation :
    Windows::IInspectable,
    impl::consume<IOpacityAnimation>,
    impl::require<IOpacityAnimation, Windows::UI::Core::AnimationMetrics::IPropertyAnimation>
{
    IOpacityAnimation(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOpacityAnimation>(m_ptr); }
};

struct IPropertyAnimation :
    Windows::IInspectable,
    impl::consume<IPropertyAnimation>
{
    IPropertyAnimation(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPropertyAnimation>(m_ptr); }
};

struct IScaleAnimation :
    Windows::IInspectable,
    impl::consume<IScaleAnimation>,
    impl::require<IScaleAnimation, Windows::UI::Core::AnimationMetrics::IPropertyAnimation>
{
    IScaleAnimation(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScaleAnimation>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Devices.Midi.3.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Devices.Midi.2.h"

WINRT_EXPORT namespace winrt {

namespace Windows::Devices::Midi {

struct WINRT_EBO MidiActiveSensingMessage :
    Windows::Devices::Midi::IMidiMessage
{
    MidiActiveSensingMessage(std::nullptr_t) noexcept {}
    MidiActiveSensingMessage();
};

struct WINRT_EBO MidiChannelPressureMessage :
    Windows::Devices::Midi::IMidiChannelPressureMessage
{
    MidiChannelPressureMessage(std::nullptr_t) noexcept {}
    MidiChannelPressureMessage(uint8_t channel, uint8_t pressure);
};

struct WINRT_EBO MidiContinueMessage :
    Windows::Devices::Midi::IMidiMessage
{
    MidiContinueMessage(std::nullptr_t) noexcept {}
    MidiContinueMessage();
};

struct WINRT_EBO MidiControlChangeMessage :
    Windows::Devices::Midi::IMidiControlChangeMessage
{
    MidiControlChangeMessage(std::nullptr_t) noexcept {}
    MidiControlChangeMessage(uint8_t channel, uint8_t controller, uint8_t controlValue);
};

struct WINRT_EBO MidiInPort :
    Windows::Devices::Midi::IMidiInPort
{
    MidiInPort(std::nullptr_t) noexcept {}
    static Windows::Foundation::IAsyncOperation<Windows::Devices::Midi::MidiInPort> FromIdAsync(hstring_ref deviceId);
    static hstring GetDeviceSelector();
};

struct WINRT_EBO MidiMessageReceivedEventArgs :
    Windows::Devices::Midi::IMidiMessageReceivedEventArgs
{
    MidiMessageReceivedEventArgs(std::nullptr_t) noexcept {}
};

struct WINRT_EBO MidiNoteOffMessage :
    Windows::Devices::Midi::IMidiNoteOffMessage
{
    MidiNoteOffMessage(std::nullptr_t) noexcept {}
    MidiNoteOffMessage(uint8_t channel, uint8_t note, uint8_t velocity);
};

struct WINRT_EBO MidiNoteOnMessage :
    Windows::Devices::Midi::IMidiNoteOnMessage
{
    MidiNoteOnMessage(std::nullptr_t) noexcept {}
    MidiNoteOnMessage(uint8_t channel, uint8_t note, uint8_t velocity);
};

struct WINRT_EBO MidiOutPort :
    Windows::Devices::Midi::IMidiOutPort
{
    MidiOutPort(std::nullptr_t) noexcept {}
    static Windows::Foundation::IAsyncOperation<Windows::Devices::Midi::IMidiOutPort> FromIdAsync(hstring_ref deviceId);
    static hstring GetDeviceSelector();
};

struct WINRT_EBO MidiPitchBendChangeMessage :
    Windows::Devices::Midi::IMidiPitchBendChangeMessage
{
    MidiPitchBendChangeMessage(std::nullptr_t) noexcept {}
    MidiPitchBendChangeMessage(uint8_t channel, uint16_t bend);
};

struct WINRT_EBO MidiPolyphonicKeyPressureMessage :
    Windows::Devices::Midi::IMidiPolyphonicKeyPressureMessage
{
    MidiPolyphonicKeyPressureMessage(std::nullptr_t) noexcept {}
    MidiPolyphonicKeyPressureMessage(uint8_t channel, uint8_t note, uint8_t pressure);
};

struct WINRT_EBO MidiProgramChangeMessage :
    Windows::Devices::Midi::IMidiProgramChangeMessage
{
    MidiProgramChangeMessage(std::nullptr_t) noexcept {}
    MidiProgramChangeMessage(uint8_t channel, uint8_t program);
};

struct WINRT_EBO MidiSongPositionPointerMessage :
    Windows::Devices::Midi::IMidiSongPositionPointerMessage
{
    MidiSongPositionPointerMessage(std::nullptr_t) noexcept {}
    MidiSongPositionPointerMessage(uint16_t beats);
};

struct WINRT_EBO MidiSongSelectMessage :
    Windows::Devices::Midi::IMidiSongSelectMessage
{
    MidiSongSelectMessage(std::nullptr_t) noexcept {}
    MidiSongSelectMessage(uint8_t song);
};

struct WINRT_EBO MidiStartMessage :
    Windows::Devices::Midi::IMidiMessage
{
    MidiStartMessage(std::nullptr_t) noexcept {}
    MidiStartMessage();
};

struct WINRT_EBO MidiStopMessage :
    Windows::Devices::Midi::IMidiMessage
{
    MidiStopMessage(std::nullptr_t) noexcept {}
    MidiStopMessage();
};

struct WINRT_EBO MidiSynthesizer :
    Windows::Devices::Midi::IMidiSynthesizer
{
    MidiSynthesizer(std::nullptr_t) noexcept {}
    static Windows::Foundation::IAsyncOperation<Windows::Devices::Midi::MidiSynthesizer> CreateAsync();
    static Windows::Foundation::IAsyncOperation<Windows::Devices::Midi::MidiSynthesizer> CreateAsync(const Windows::Devices::Enumeration::DeviceInformation & audioDevice);
    static bool IsSynthesizer(const Windows::Devices::Enumeration::DeviceInformation & midiDevice);
};

struct WINRT_EBO MidiSystemExclusiveMessage :
    Windows::Devices::Midi::IMidiMessage
{
    MidiSystemExclusiveMessage(std::nullptr_t) noexcept {}
    MidiSystemExclusiveMessage(const Windows::Storage::Streams::IBuffer & rawData);
};

struct WINRT_EBO MidiSystemResetMessage :
    Windows::Devices::Midi::IMidiMessage
{
    MidiSystemResetMessage(std::nullptr_t) noexcept {}
    MidiSystemResetMessage();
};

struct WINRT_EBO MidiTimeCodeMessage :
    Windows::Devices::Midi::IMidiTimeCodeMessage
{
    MidiTimeCodeMessage(std::nullptr_t) noexcept {}
    MidiTimeCodeMessage(uint8_t frameType, uint8_t values);
};

struct WINRT_EBO MidiTimingClockMessage :
    Windows::Devices::Midi::IMidiMessage
{
    MidiTimingClockMessage(std::nullptr_t) noexcept {}
    MidiTimingClockMessage();
};

struct WINRT_EBO MidiTuneRequestMessage :
    Windows::Devices::Midi::IMidiMessage
{
    MidiTuneRequestMessage(std::nullptr_t) noexcept {}
    MidiTuneRequestMessage();
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.Controls.Primitives.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.UI.Xaml.Controls.Primitives.1.h"
#include "Windows.UI.Xaml.2.h"
#include "Windows.UI.Xaml.Controls.2.h"
#include "Windows.UI.Xaml.Data.2.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
#define WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
template <> struct __declspec(uuid("c50898f6-c536-5f47-8583-8b2c2438a13b")) __declspec(novtable) EventHandler<Windows::IInspectable> : impl_EventHandler<Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_a6487363_b074_5c60_ab16_866dce4ee54d
#define WINRT_GENERIC_a6487363_b074_5c60_ab16_866dce4ee54d
template <> struct __declspec(uuid("a6487363-b074-5c60-ab16-866dce4ee54d")) __declspec(novtable) IVectorView<Windows::IInspectable> : impl_IVectorView<Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_3c00fd60_2950_5939_a21a_2d12c5a01b8a
#define WINRT_GENERIC_3c00fd60_2950_5939_a21a_2d12c5a01b8a
template <> struct __declspec(uuid("3c00fd60-2950-5939-a21a-2d12c5a01b8a")) __declspec(novtable) IReference<bool> : impl_IReference<bool> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_b32bdca4_5e52_5b27_bc5d_d66a1a268c2a
#define WINRT_GENERIC_b32bdca4_5e52_5b27_bc5d_d66a1a268c2a
template <> struct __declspec(uuid("b32bdca4-5e52-5b27-bc5d-d66a1a268c2a")) __declspec(novtable) IVector<Windows::IInspectable> : impl_IVector<Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_092b849b_60b1_52be_a44a_6fe8e933cbe4
#define WINRT_GENERIC_092b849b_60b1_52be_a44a_6fe8e933cbe4
template <> struct __declspec(uuid("092b849b-60b1-52be-a44a-6fe8e933cbe4")) __declspec(novtable) IIterable<Windows::IInspectable> : impl_IIterable<Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_7bca64fd_150c_5d50_b56b_9f4f474c5930
#define WINRT_GENERIC_7bca64fd_150c_5d50_b56b_9f4f474c5930
template <> struct __declspec(uuid("7bca64fd-150c-5d50-b56b-9f4f474c5930")) __declspec(novtable) IVectorView<float> : impl_IVectorView<float> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_96e17fbc_78c7_5560_ac3a_587f46db70d6
#define WINRT_GENERIC_96e17fbc_78c7_5560_ac3a_587f46db70d6
template <> struct __declspec(uuid("96e17fbc-78c7-5560-ac3a-587f46db70d6")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::Controls::Primitives::FlyoutBase, Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::Controls::Primitives::FlyoutBase, Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_44a94f2d_04f8_5091_b336_be7892dd10be
#define WINRT_GENERIC_44a94f2d_04f8_5091_b336_be7892dd10be
template <> struct __declspec(uuid("44a94f2d-04f8-5091-b336-be7892dd10be")) __declspec(novtable) IIterator<Windows::IInspectable> : impl_IIterator<Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_42614e61_b0aa_5e72_9354_2771db20b7a8
#define WINRT_GENERIC_42614e61_b0aa_5e72_9354_2771db20b7a8
template <> struct __declspec(uuid("42614e61-b0aa-5e72-9354-2771db20b7a8")) __declspec(novtable) IIterator<float> : impl_IIterator<float> {};
#endif

#ifndef WINRT_GENERIC_b01bee51_063a_5fda_bd72_d76637bb8cb8
#define WINRT_GENERIC_b01bee51_063a_5fda_bd72_d76637bb8cb8
template <> struct __declspec(uuid("b01bee51-063a-5fda-bd72-d76637bb8cb8")) __declspec(novtable) IIterable<float> : impl_IIterable<float> {};
#endif


}

namespace Windows::UI::Xaml::Controls::Primitives {

template <typename D>
struct WINRT_EBO impl_IAppBarTemplateSettings
{
    Windows::Foundation::Rect ClipRect() const;
    double CompactVerticalDelta() const;
    Windows::UI::Xaml::Thickness CompactRootMargin() const;
    double MinimalVerticalDelta() const;
    Windows::UI::Xaml::Thickness MinimalRootMargin() const;
    double HiddenVerticalDelta() const;
    Windows::UI::Xaml::Thickness HiddenRootMargin() const;
};

template <typename D>
struct WINRT_EBO impl_IButtonBase
{
    Windows::UI::Xaml::Controls::ClickMode ClickMode() const;
    void ClickMode(Windows::UI::Xaml::Controls::ClickMode value) const;
    bool IsPointerOver() const;
    bool IsPressed() const;
    Windows::UI::Xaml::Input::ICommand Command() const;
    void Command(const Windows::UI::Xaml::Input::ICommand & value) const;
    Windows::IInspectable CommandParameter() const;
    void CommandParameter(const Windows::IInspectable & value) const;
    event_token Click(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using Click_revoker = event_revoker<IButtonBase>;
    Click_revoker Click(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void Click(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IButtonBaseFactory
{
    Windows::UI::Xaml::Controls::Primitives::ButtonBase CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IButtonBaseStatics
{
    Windows::UI::Xaml::DependencyProperty ClickModeProperty() const;
    Windows::UI::Xaml::DependencyProperty IsPointerOverProperty() const;
    Windows::UI::Xaml::DependencyProperty IsPressedProperty() const;
    Windows::UI::Xaml::DependencyProperty CommandProperty() const;
    Windows::UI::Xaml::DependencyProperty CommandParameterProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ICalendarPanel
{
};

template <typename D>
struct WINRT_EBO impl_ICalendarViewTemplateSettings
{
    double MinViewWidth() const;
    hstring HeaderText() const;
    hstring WeekDay1() const;
    hstring WeekDay2() const;
    hstring WeekDay3() const;
    hstring WeekDay4() const;
    hstring WeekDay5() const;
    hstring WeekDay6() const;
    hstring WeekDay7() const;
    bool HasMoreContentAfter() const;
    bool HasMoreContentBefore() const;
    bool HasMoreViews() const;
    Windows::Foundation::Rect ClipRect() const;
    double CenterX() const;
    double CenterY() const;
};

template <typename D>
struct WINRT_EBO impl_ICarouselPanel
{
    bool CanVerticallyScroll() const;
    void CanVerticallyScroll(bool value) const;
    bool CanHorizontallyScroll() const;
    void CanHorizontallyScroll(bool value) const;
    double ExtentWidth() const;
    double ExtentHeight() const;
    double ViewportWidth() const;
    double ViewportHeight() const;
    double HorizontalOffset() const;
    double VerticalOffset() const;
    Windows::IInspectable ScrollOwner() const;
    void ScrollOwner(const Windows::IInspectable & value) const;
    void LineUp() const;
    void LineDown() const;
    void LineLeft() const;
    void LineRight() const;
    void PageUp() const;
    void PageDown() const;
    void PageLeft() const;
    void PageRight() const;
    void MouseWheelUp() const;
    void MouseWheelDown() const;
    void MouseWheelLeft() const;
    void MouseWheelRight() const;
    void SetHorizontalOffset(double offset) const;
    void SetVerticalOffset(double offset) const;
    Windows::Foundation::Rect MakeVisible(const Windows::UI::Xaml::UIElement & visual, const Windows::Foundation::Rect & rectangle) const;
};

template <typename D>
struct WINRT_EBO impl_ICarouselPanelFactory
{
    Windows::UI::Xaml::Controls::Primitives::CarouselPanel CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IComboBoxTemplateSettings
{
    double DropDownOpenedHeight() const;
    double DropDownClosedHeight() const;
    double DropDownOffset() const;
    Windows::UI::Xaml::Controls::Primitives::AnimationDirection SelectedItemDirection() const;
};

template <typename D>
struct WINRT_EBO impl_IComboBoxTemplateSettings2
{
    double DropDownContentMinWidth() const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBarTemplateSettings
{
    double ContentHeight() const;
    Windows::Foundation::Rect OverflowContentClipRect() const;
    double OverflowContentMinWidth() const;
    double OverflowContentMaxHeight() const;
    double OverflowContentHorizontalOffset() const;
    double OverflowContentHeight() const;
    double NegativeOverflowContentHeight() const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBarTemplateSettings2
{
    double OverflowContentMaxWidth() const;
};

template <typename D>
struct WINRT_EBO impl_ICommandBarTemplateSettings3
{
    Windows::UI::Xaml::Visibility EffectiveOverflowButtonVisibility() const;
};

template <typename D>
struct WINRT_EBO impl_IDragCompletedEventArgs
{
    double HorizontalChange() const;
    double VerticalChange() const;
    bool Canceled() const;
};

template <typename D>
struct WINRT_EBO impl_IDragCompletedEventArgsFactory
{
    Windows::UI::Xaml::Controls::Primitives::DragCompletedEventArgs CreateInstanceWithHorizontalChangeVerticalChangeAndCanceled(double horizontalChange, double verticalChange, bool canceled, const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IDragDeltaEventArgs
{
    double HorizontalChange() const;
    double VerticalChange() const;
};

template <typename D>
struct WINRT_EBO impl_IDragDeltaEventArgsFactory
{
    Windows::UI::Xaml::Controls::Primitives::DragDeltaEventArgs CreateInstanceWithHorizontalChangeAndVerticalChange(double horizontalChange, double verticalChange, const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IDragStartedEventArgs
{
    double HorizontalOffset() const;
    double VerticalOffset() const;
};

template <typename D>
struct WINRT_EBO impl_IDragStartedEventArgsFactory
{
    Windows::UI::Xaml::Controls::Primitives::DragStartedEventArgs CreateInstanceWithHorizontalOffsetAndVerticalOffset(double horizontalOffset, double verticalOffset, const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IFlyoutBase
{
    Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode Placement() const;
    void Placement(Windows::UI::Xaml::Controls::Primitives::FlyoutPlacementMode value) const;
    event_token Opened(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using Opened_revoker = event_revoker<IFlyoutBase>;
    Opened_revoker Opened(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void Opened(event_token token) const;
    event_token Closed(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using Closed_revoker = event_revoker<IFlyoutBase>;
    Closed_revoker Closed(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void Closed(event_token token) const;
    event_token Opening(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using Opening_revoker = event_revoker<IFlyoutBase>;
    Opening_revoker Opening(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void Opening(event_token token) const;
    void ShowAt(const Windows::UI::Xaml::FrameworkElement & placementTarget) const;
    void Hide() const;
};

template <typename D>
struct WINRT_EBO impl_IFlyoutBase2
{
    Windows::UI::Xaml::FrameworkElement Target() const;
    bool AllowFocusOnInteraction() const;
    void AllowFocusOnInteraction(bool value) const;
    Windows::UI::Xaml::Controls::LightDismissOverlayMode LightDismissOverlayMode() const;
    void LightDismissOverlayMode(Windows::UI::Xaml::Controls::LightDismissOverlayMode value) const;
    bool AllowFocusWhenDisabled() const;
    void AllowFocusWhenDisabled(bool value) const;
    Windows::UI::Xaml::ElementSoundMode ElementSoundMode() const;
    void ElementSoundMode(Windows::UI::Xaml::ElementSoundMode value) const;
    event_token Closing(const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Primitives::FlyoutBase, Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs> & value) const;
    using Closing_revoker = event_revoker<IFlyoutBase2>;
    Closing_revoker Closing(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::UI::Xaml::Controls::Primitives::FlyoutBase, Windows::UI::Xaml::Controls::Primitives::FlyoutBaseClosingEventArgs> & value) const;
    void Closing(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IFlyoutBaseClosingEventArgs
{
    bool Cancel() const;
    void Cancel(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_IFlyoutBaseFactory
{
    Windows::UI::Xaml::Controls::Primitives::FlyoutBase CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IFlyoutBaseOverrides
{
    Windows::UI::Xaml::Controls::Control CreatePresenter() const;
};

template <typename D>
struct WINRT_EBO impl_IFlyoutBaseStatics
{
    Windows::UI::Xaml::DependencyProperty PlacementProperty() const;
    Windows::UI::Xaml::DependencyProperty AttachedFlyoutProperty() const;
    Windows::UI::Xaml::Controls::Primitives::FlyoutBase GetAttachedFlyout(const Windows::UI::Xaml::FrameworkElement & element) const;
    void SetAttachedFlyout(const Windows::UI::Xaml::FrameworkElement & element, const Windows::UI::Xaml::Controls::Primitives::FlyoutBase & value) const;
    void ShowAttachedFlyout(const Windows::UI::Xaml::FrameworkElement & flyoutOwner) const;
};

template <typename D>
struct WINRT_EBO impl_IFlyoutBaseStatics2
{
    Windows::UI::Xaml::DependencyProperty AllowFocusOnInteractionProperty() const;
    Windows::UI::Xaml::DependencyProperty LightDismissOverlayModeProperty() const;
    Windows::UI::Xaml::DependencyProperty AllowFocusWhenDisabledProperty() const;
    Windows::UI::Xaml::DependencyProperty ElementSoundModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IGeneratorPositionHelper
{
};

template <typename D>
struct WINRT_EBO impl_IGeneratorPositionHelperStatics
{
    Windows::UI::Xaml::Controls::Primitives::GeneratorPosition FromIndexAndOffset(int32_t index, int32_t offset) const;
};

template <typename D>
struct WINRT_EBO impl_IGridViewItemPresenter
{
    bool SelectionCheckMarkVisualEnabled() const;
    void SelectionCheckMarkVisualEnabled(bool value) const;
    Windows::UI::Xaml::Media::Brush CheckHintBrush() const;
    void CheckHintBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush CheckSelectingBrush() const;
    void CheckSelectingBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush CheckBrush() const;
    void CheckBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush DragBackground() const;
    void DragBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush DragForeground() const;
    void DragForeground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush FocusBorderBrush() const;
    void FocusBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush PlaceholderBackground() const;
    void PlaceholderBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush PointerOverBackground() const;
    void PointerOverBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedBackground() const;
    void SelectedBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedForeground() const;
    void SelectedForeground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedPointerOverBackground() const;
    void SelectedPointerOverBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedPointerOverBorderBrush() const;
    void SelectedPointerOverBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Thickness SelectedBorderThickness() const;
    void SelectedBorderThickness(const Windows::UI::Xaml::Thickness & value) const;
    double DisabledOpacity() const;
    void DisabledOpacity(double value) const;
    double DragOpacity() const;
    void DragOpacity(double value) const;
    double ReorderHintOffset() const;
    void ReorderHintOffset(double value) const;
    Windows::UI::Xaml::HorizontalAlignment GridViewItemPresenterHorizontalContentAlignment() const;
    void GridViewItemPresenterHorizontalContentAlignment(Windows::UI::Xaml::HorizontalAlignment value) const;
    Windows::UI::Xaml::VerticalAlignment GridViewItemPresenterVerticalContentAlignment() const;
    void GridViewItemPresenterVerticalContentAlignment(Windows::UI::Xaml::VerticalAlignment value) const;
    Windows::UI::Xaml::Thickness GridViewItemPresenterPadding() const;
    void GridViewItemPresenterPadding(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::Thickness PointerOverBackgroundMargin() const;
    void PointerOverBackgroundMargin(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::Thickness ContentMargin() const;
    void ContentMargin(const Windows::UI::Xaml::Thickness & value) const;
};

template <typename D>
struct WINRT_EBO impl_IGridViewItemPresenterFactory
{
    Windows::UI::Xaml::Controls::Primitives::GridViewItemPresenter CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IGridViewItemPresenterStatics
{
    Windows::UI::Xaml::DependencyProperty SelectionCheckMarkVisualEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty CheckHintBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty CheckSelectingBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty CheckBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty DragBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty DragForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty FocusBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty PlaceholderBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty PointerOverBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedPointerOverBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedPointerOverBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedBorderThicknessProperty() const;
    Windows::UI::Xaml::DependencyProperty DisabledOpacityProperty() const;
    Windows::UI::Xaml::DependencyProperty DragOpacityProperty() const;
    Windows::UI::Xaml::DependencyProperty ReorderHintOffsetProperty() const;
    Windows::UI::Xaml::DependencyProperty GridViewItemPresenterHorizontalContentAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty GridViewItemPresenterVerticalContentAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty GridViewItemPresenterPaddingProperty() const;
    Windows::UI::Xaml::DependencyProperty PointerOverBackgroundMarginProperty() const;
    Windows::UI::Xaml::DependencyProperty ContentMarginProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IGridViewItemTemplateSettings
{
    int32_t DragItemsCount() const;
};

template <typename D>
struct WINRT_EBO impl_IItemsChangedEventArgs
{
    int32_t Action() const;
    Windows::UI::Xaml::Controls::Primitives::GeneratorPosition Position() const;
    Windows::UI::Xaml::Controls::Primitives::GeneratorPosition OldPosition() const;
    int32_t ItemCount() const;
    int32_t ItemUICount() const;
};

template <typename D>
struct WINRT_EBO impl_IJumpListItemBackgroundConverter
{
    Windows::UI::Xaml::Media::Brush Enabled() const;
    void Enabled(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush Disabled() const;
    void Disabled(const Windows::UI::Xaml::Media::Brush & value) const;
};

template <typename D>
struct WINRT_EBO impl_IJumpListItemBackgroundConverterStatics
{
    Windows::UI::Xaml::DependencyProperty EnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty DisabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IJumpListItemForegroundConverter
{
    Windows::UI::Xaml::Media::Brush Enabled() const;
    void Enabled(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush Disabled() const;
    void Disabled(const Windows::UI::Xaml::Media::Brush & value) const;
};

template <typename D>
struct WINRT_EBO impl_IJumpListItemForegroundConverterStatics
{
    Windows::UI::Xaml::DependencyProperty EnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty DisabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ILayoutInformation
{
};

template <typename D>
struct WINRT_EBO impl_ILayoutInformationStatics
{
    Windows::UI::Xaml::UIElement GetLayoutExceptionElement(const Windows::IInspectable & dispatcher) const;
    Windows::Foundation::Rect GetLayoutSlot(const Windows::UI::Xaml::FrameworkElement & element) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewItemPresenter
{
    bool SelectionCheckMarkVisualEnabled() const;
    void SelectionCheckMarkVisualEnabled(bool value) const;
    Windows::UI::Xaml::Media::Brush CheckHintBrush() const;
    void CheckHintBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush CheckSelectingBrush() const;
    void CheckSelectingBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush CheckBrush() const;
    void CheckBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush DragBackground() const;
    void DragBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush DragForeground() const;
    void DragForeground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush FocusBorderBrush() const;
    void FocusBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush PlaceholderBackground() const;
    void PlaceholderBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush PointerOverBackground() const;
    void PointerOverBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedBackground() const;
    void SelectedBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedForeground() const;
    void SelectedForeground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedPointerOverBackground() const;
    void SelectedPointerOverBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush SelectedPointerOverBorderBrush() const;
    void SelectedPointerOverBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Thickness SelectedBorderThickness() const;
    void SelectedBorderThickness(const Windows::UI::Xaml::Thickness & value) const;
    double DisabledOpacity() const;
    void DisabledOpacity(double value) const;
    double DragOpacity() const;
    void DragOpacity(double value) const;
    double ReorderHintOffset() const;
    void ReorderHintOffset(double value) const;
    Windows::UI::Xaml::HorizontalAlignment ListViewItemPresenterHorizontalContentAlignment() const;
    void ListViewItemPresenterHorizontalContentAlignment(Windows::UI::Xaml::HorizontalAlignment value) const;
    Windows::UI::Xaml::VerticalAlignment ListViewItemPresenterVerticalContentAlignment() const;
    void ListViewItemPresenterVerticalContentAlignment(Windows::UI::Xaml::VerticalAlignment value) const;
    Windows::UI::Xaml::Thickness ListViewItemPresenterPadding() const;
    void ListViewItemPresenterPadding(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::Thickness PointerOverBackgroundMargin() const;
    void PointerOverBackgroundMargin(const Windows::UI::Xaml::Thickness & value) const;
    Windows::UI::Xaml::Thickness ContentMargin() const;
    void ContentMargin(const Windows::UI::Xaml::Thickness & value) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewItemPresenter2
{
    Windows::UI::Xaml::Media::Brush SelectedPressedBackground() const;
    void SelectedPressedBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush PressedBackground() const;
    void PressedBackground(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush CheckBoxBrush() const;
    void CheckBoxBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Media::Brush FocusSecondaryBorderBrush() const;
    void FocusSecondaryBorderBrush(const Windows::UI::Xaml::Media::Brush & value) const;
    Windows::UI::Xaml::Controls::Primitives::ListViewItemPresenterCheckMode CheckMode() const;
    void CheckMode(Windows::UI::Xaml::Controls::Primitives::ListViewItemPresenterCheckMode value) const;
    Windows::UI::Xaml::Media::Brush PointerOverForeground() const;
    void PointerOverForeground(const Windows::UI::Xaml::Media::Brush & value) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewItemPresenterFactory
{
    Windows::UI::Xaml::Controls::Primitives::ListViewItemPresenter CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IListViewItemPresenterStatics
{
    Windows::UI::Xaml::DependencyProperty SelectionCheckMarkVisualEnabledProperty() const;
    Windows::UI::Xaml::DependencyProperty CheckHintBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty CheckSelectingBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty CheckBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty DragBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty DragForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty FocusBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty PlaceholderBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty PointerOverBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedForegroundProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedPointerOverBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedPointerOverBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedBorderThicknessProperty() const;
    Windows::UI::Xaml::DependencyProperty DisabledOpacityProperty() const;
    Windows::UI::Xaml::DependencyProperty DragOpacityProperty() const;
    Windows::UI::Xaml::DependencyProperty ReorderHintOffsetProperty() const;
    Windows::UI::Xaml::DependencyProperty ListViewItemPresenterHorizontalContentAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty ListViewItemPresenterVerticalContentAlignmentProperty() const;
    Windows::UI::Xaml::DependencyProperty ListViewItemPresenterPaddingProperty() const;
    Windows::UI::Xaml::DependencyProperty PointerOverBackgroundMarginProperty() const;
    Windows::UI::Xaml::DependencyProperty ContentMarginProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IListViewItemPresenterStatics2
{
    Windows::UI::Xaml::DependencyProperty SelectedPressedBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty PressedBackgroundProperty() const;
    Windows::UI::Xaml::DependencyProperty CheckBoxBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty FocusSecondaryBorderBrushProperty() const;
    Windows::UI::Xaml::DependencyProperty CheckModeProperty() const;
    Windows::UI::Xaml::DependencyProperty PointerOverForegroundProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IListViewItemTemplateSettings
{
    int32_t DragItemsCount() const;
};

template <typename D>
struct WINRT_EBO impl_ILoopingSelector
{
    bool ShouldLoop() const;
    void ShouldLoop(bool value) const;
    Windows::Foundation::Collections::IVector<Windows::IInspectable> Items() const;
    void Items(const Windows::Foundation::Collections::IVector<Windows::IInspectable> & value) const;
    int32_t SelectedIndex() const;
    void SelectedIndex(int32_t value) const;
    Windows::IInspectable SelectedItem() const;
    void SelectedItem(const Windows::IInspectable & value) const;
    int32_t ItemWidth() const;
    void ItemWidth(int32_t value) const;
    int32_t ItemHeight() const;
    void ItemHeight(int32_t value) const;
    Windows::UI::Xaml::DataTemplate ItemTemplate() const;
    void ItemTemplate(const Windows::UI::Xaml::DataTemplate & value) const;
    event_token SelectionChanged(const Windows::UI::Xaml::Controls::SelectionChangedEventHandler & value) const;
    using SelectionChanged_revoker = event_revoker<ILoopingSelector>;
    SelectionChanged_revoker SelectionChanged(auto_revoke_t, const Windows::UI::Xaml::Controls::SelectionChangedEventHandler & value) const;
    void SelectionChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ILoopingSelectorItem
{
};

template <typename D>
struct WINRT_EBO impl_ILoopingSelectorPanel
{
};

template <typename D>
struct WINRT_EBO impl_ILoopingSelectorStatics
{
    Windows::UI::Xaml::DependencyProperty ShouldLoopProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemsProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedIndexProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedItemProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemWidthProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemHeightProperty() const;
    Windows::UI::Xaml::DependencyProperty ItemTemplateProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IMenuFlyoutPresenterTemplateSettings
{
    double FlyoutContentMinWidth() const;
};

template <typename D>
struct WINRT_EBO impl_IOrientedVirtualizingPanel
{
    bool CanVerticallyScroll() const;
    void CanVerticallyScroll(bool value) const;
    bool CanHorizontallyScroll() const;
    void CanHorizontallyScroll(bool value) const;
    double ExtentWidth() const;
    double ExtentHeight() const;
    double ViewportWidth() const;
    double ViewportHeight() const;
    double HorizontalOffset() const;
    double VerticalOffset() const;
    Windows::IInspectable ScrollOwner() const;
    void ScrollOwner(const Windows::IInspectable & value) const;
    void LineUp() const;
    void LineDown() const;
    void LineLeft() const;
    void LineRight() const;
    void PageUp() const;
    void PageDown() const;
    void PageLeft() const;
    void PageRight() const;
    void MouseWheelUp() const;
    void MouseWheelDown() const;
    void MouseWheelLeft() const;
    void MouseWheelRight() const;
    void SetHorizontalOffset(double offset) const;
    void SetVerticalOffset(double offset) const;
    Windows::Foundation::Rect MakeVisible(const Windows::UI::Xaml::UIElement & visual, const Windows::Foundation::Rect & rectangle) const;
};

template <typename D>
struct WINRT_EBO impl_IOrientedVirtualizingPanelFactory
{
};

template <typename D>
struct WINRT_EBO impl_IPickerFlyoutBase
{
};

template <typename D>
struct WINRT_EBO impl_IPickerFlyoutBaseFactory
{
    Windows::UI::Xaml::Controls::Primitives::PickerFlyoutBase CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IPickerFlyoutBaseOverrides
{
    void OnConfirmed() const;
    bool ShouldShowConfirmationButtons() const;
};

template <typename D>
struct WINRT_EBO impl_IPickerFlyoutBaseStatics
{
    Windows::UI::Xaml::DependencyProperty TitleProperty() const;
    hstring GetTitle(const Windows::UI::Xaml::DependencyObject & element) const;
    void SetTitle(const Windows::UI::Xaml::DependencyObject & element, hstring_ref value) const;
};

template <typename D>
struct WINRT_EBO impl_IPivotHeaderItem
{
};

template <typename D>
struct WINRT_EBO impl_IPivotHeaderItemFactory
{
    Windows::UI::Xaml::Controls::Primitives::PivotHeaderItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IPivotHeaderPanel
{
};

template <typename D>
struct WINRT_EBO impl_IPivotPanel
{
};

template <typename D>
struct WINRT_EBO impl_IPopup
{
    Windows::UI::Xaml::UIElement Child() const;
    void Child(const Windows::UI::Xaml::UIElement & value) const;
    bool IsOpen() const;
    void IsOpen(bool value) const;
    double HorizontalOffset() const;
    void HorizontalOffset(double value) const;
    double VerticalOffset() const;
    void VerticalOffset(double value) const;
    Windows::UI::Xaml::Media::Animation::TransitionCollection ChildTransitions() const;
    void ChildTransitions(const Windows::UI::Xaml::Media::Animation::TransitionCollection & value) const;
    bool IsLightDismissEnabled() const;
    void IsLightDismissEnabled(bool value) const;
    event_token Opened(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using Opened_revoker = event_revoker<IPopup>;
    Opened_revoker Opened(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void Opened(event_token token) const;
    event_token Closed(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using Closed_revoker = event_revoker<IPopup>;
    Closed_revoker Closed(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void Closed(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IPopup2
{
    Windows::UI::Xaml::Controls::LightDismissOverlayMode LightDismissOverlayMode() const;
    void LightDismissOverlayMode(Windows::UI::Xaml::Controls::LightDismissOverlayMode value) const;
};

template <typename D>
struct WINRT_EBO impl_IPopupStatics
{
    Windows::UI::Xaml::DependencyProperty ChildProperty() const;
    Windows::UI::Xaml::DependencyProperty IsOpenProperty() const;
    Windows::UI::Xaml::DependencyProperty HorizontalOffsetProperty() const;
    Windows::UI::Xaml::DependencyProperty VerticalOffsetProperty() const;
    Windows::UI::Xaml::DependencyProperty ChildTransitionsProperty() const;
    Windows::UI::Xaml::DependencyProperty IsLightDismissEnabledProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IPopupStatics2
{
    Windows::UI::Xaml::DependencyProperty LightDismissOverlayModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IProgressBarTemplateSettings
{
    double EllipseDiameter() const;
    double EllipseOffset() const;
    double EllipseAnimationWellPosition() const;
    double EllipseAnimationEndPosition() const;
    double ContainerAnimationStartPosition() const;
    double ContainerAnimationEndPosition() const;
    double IndicatorLengthDelta() const;
};

template <typename D>
struct WINRT_EBO impl_IProgressRingTemplateSettings
{
    double EllipseDiameter() const;
    Windows::UI::Xaml::Thickness EllipseOffset() const;
    double MaxSideLength() const;
};

template <typename D>
struct WINRT_EBO impl_IRangeBase
{
    double Minimum() const;
    void Minimum(double value) const;
    double Maximum() const;
    void Maximum(double value) const;
    double SmallChange() const;
    void SmallChange(double value) const;
    double LargeChange() const;
    void LargeChange(double value) const;
    double Value() const;
    void Value(double value) const;
    event_token ValueChanged(const Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventHandler & value) const;
    using ValueChanged_revoker = event_revoker<IRangeBase>;
    ValueChanged_revoker ValueChanged(auto_revoke_t, const Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventHandler & value) const;
    void ValueChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IRangeBaseFactory
{
    Windows::UI::Xaml::Controls::Primitives::RangeBase CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IRangeBaseOverrides
{
    void OnMinimumChanged(double oldMinimum, double newMinimum) const;
    void OnMaximumChanged(double oldMaximum, double newMaximum) const;
    void OnValueChanged(double oldValue, double newValue) const;
};

template <typename D>
struct WINRT_EBO impl_IRangeBaseStatics
{
    Windows::UI::Xaml::DependencyProperty MinimumProperty() const;
    Windows::UI::Xaml::DependencyProperty MaximumProperty() const;
    Windows::UI::Xaml::DependencyProperty SmallChangeProperty() const;
    Windows::UI::Xaml::DependencyProperty LargeChangeProperty() const;
    Windows::UI::Xaml::DependencyProperty ValueProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IRangeBaseValueChangedEventArgs
{
    double OldValue() const;
    double NewValue() const;
};

template <typename D>
struct WINRT_EBO impl_IRepeatButton
{
    int32_t Delay() const;
    void Delay(int32_t value) const;
    int32_t Interval() const;
    void Interval(int32_t value) const;
};

template <typename D>
struct WINRT_EBO impl_IRepeatButtonStatics
{
    Windows::UI::Xaml::DependencyProperty DelayProperty() const;
    Windows::UI::Xaml::DependencyProperty IntervalProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IScrollBar
{
    Windows::UI::Xaml::Controls::Orientation Orientation() const;
    void Orientation(Windows::UI::Xaml::Controls::Orientation value) const;
    double ViewportSize() const;
    void ViewportSize(double value) const;
    Windows::UI::Xaml::Controls::Primitives::ScrollingIndicatorMode IndicatorMode() const;
    void IndicatorMode(Windows::UI::Xaml::Controls::Primitives::ScrollingIndicatorMode value) const;
    event_token Scroll(const Windows::UI::Xaml::Controls::Primitives::ScrollEventHandler & value) const;
    using Scroll_revoker = event_revoker<IScrollBar>;
    Scroll_revoker Scroll(auto_revoke_t, const Windows::UI::Xaml::Controls::Primitives::ScrollEventHandler & value) const;
    void Scroll(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IScrollBarStatics
{
    Windows::UI::Xaml::DependencyProperty OrientationProperty() const;
    Windows::UI::Xaml::DependencyProperty ViewportSizeProperty() const;
    Windows::UI::Xaml::DependencyProperty IndicatorModeProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IScrollEventArgs
{
    double NewValue() const;
    Windows::UI::Xaml::Controls::Primitives::ScrollEventType ScrollEventType() const;
};

template <typename D>
struct WINRT_EBO impl_IScrollSnapPointsInfo
{
    bool AreHorizontalSnapPointsRegular() const;
    bool AreVerticalSnapPointsRegular() const;
    event_token HorizontalSnapPointsChanged(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using HorizontalSnapPointsChanged_revoker = event_revoker<IScrollSnapPointsInfo>;
    HorizontalSnapPointsChanged_revoker HorizontalSnapPointsChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void HorizontalSnapPointsChanged(event_token token) const;
    event_token VerticalSnapPointsChanged(const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    using VerticalSnapPointsChanged_revoker = event_revoker<IScrollSnapPointsInfo>;
    VerticalSnapPointsChanged_revoker VerticalSnapPointsChanged(auto_revoke_t, const Windows::Foundation::EventHandler<Windows::IInspectable> & value) const;
    void VerticalSnapPointsChanged(event_token token) const;
    Windows::Foundation::Collections::IVectorView<float> GetIrregularSnapPoints(Windows::UI::Xaml::Controls::Orientation orientation, Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment alignment) const;
    float GetRegularSnapPoints(Windows::UI::Xaml::Controls::Orientation orientation, Windows::UI::Xaml::Controls::Primitives::SnapPointsAlignment alignment, float & offset) const;
};

template <typename D>
struct WINRT_EBO impl_ISelector
{
    int32_t SelectedIndex() const;
    void SelectedIndex(int32_t value) const;
    Windows::IInspectable SelectedItem() const;
    void SelectedItem(const Windows::IInspectable & value) const;
    Windows::IInspectable SelectedValue() const;
    void SelectedValue(const Windows::IInspectable & value) const;
    hstring SelectedValuePath() const;
    void SelectedValuePath(hstring_ref value) const;
    Windows::Foundation::IReference<bool> IsSynchronizedWithCurrentItem() const;
    void IsSynchronizedWithCurrentItem(const Windows::Foundation::IReference<bool> & value) const;
    event_token SelectionChanged(const Windows::UI::Xaml::Controls::SelectionChangedEventHandler & value) const;
    using SelectionChanged_revoker = event_revoker<ISelector>;
    SelectionChanged_revoker SelectionChanged(auto_revoke_t, const Windows::UI::Xaml::Controls::SelectionChangedEventHandler & value) const;
    void SelectionChanged(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ISelectorFactory
{
};

template <typename D>
struct WINRT_EBO impl_ISelectorItem
{
    bool IsSelected() const;
    void IsSelected(bool value) const;
};

template <typename D>
struct WINRT_EBO impl_ISelectorItemFactory
{
    Windows::UI::Xaml::Controls::Primitives::SelectorItem CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_ISelectorItemStatics
{
    Windows::UI::Xaml::DependencyProperty IsSelectedProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ISelectorStatics
{
    Windows::UI::Xaml::DependencyProperty SelectedIndexProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedItemProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedValueProperty() const;
    Windows::UI::Xaml::DependencyProperty SelectedValuePathProperty() const;
    Windows::UI::Xaml::DependencyProperty IsSynchronizedWithCurrentItemProperty() const;
    bool GetIsSelectionActive(const Windows::UI::Xaml::DependencyObject & element) const;
};

template <typename D>
struct WINRT_EBO impl_ISettingsFlyoutTemplateSettings
{
    Windows::UI::Xaml::Media::Brush HeaderBackground() const;
    Windows::UI::Xaml::Media::Brush HeaderForeground() const;
    Windows::UI::Xaml::Media::Brush BorderBrush() const;
    Windows::UI::Xaml::Thickness BorderThickness() const;
    Windows::UI::Xaml::Media::ImageSource IconSource() const;
    Windows::UI::Xaml::Media::Animation::TransitionCollection ContentTransitions() const;
};

template <typename D>
struct WINRT_EBO impl_ISplitViewTemplateSettings
{
    double OpenPaneLength() const;
    double NegativeOpenPaneLength() const;
    double OpenPaneLengthMinusCompactLength() const;
    double NegativeOpenPaneLengthMinusCompactLength() const;
    Windows::UI::Xaml::GridLength OpenPaneGridLength() const;
    Windows::UI::Xaml::GridLength CompactPaneGridLength() const;
};

template <typename D>
struct WINRT_EBO impl_IThumb
{
    bool IsDragging() const;
    event_token DragStarted(const Windows::UI::Xaml::Controls::Primitives::DragStartedEventHandler & value) const;
    using DragStarted_revoker = event_revoker<IThumb>;
    DragStarted_revoker DragStarted(auto_revoke_t, const Windows::UI::Xaml::Controls::Primitives::DragStartedEventHandler & value) const;
    void DragStarted(event_token token) const;
    event_token DragDelta(const Windows::UI::Xaml::Controls::Primitives::DragDeltaEventHandler & value) const;
    using DragDelta_revoker = event_revoker<IThumb>;
    DragDelta_revoker DragDelta(auto_revoke_t, const Windows::UI::Xaml::Controls::Primitives::DragDeltaEventHandler & value) const;
    void DragDelta(event_token token) const;
    event_token DragCompleted(const Windows::UI::Xaml::Controls::Primitives::DragCompletedEventHandler & value) const;
    using DragCompleted_revoker = event_revoker<IThumb>;
    DragCompleted_revoker DragCompleted(auto_revoke_t, const Windows::UI::Xaml::Controls::Primitives::DragCompletedEventHandler & value) const;
    void DragCompleted(event_token token) const;
    void CancelDrag() const;
};

template <typename D>
struct WINRT_EBO impl_IThumbStatics
{
    Windows::UI::Xaml::DependencyProperty IsDraggingProperty() const;
};

template <typename D>
struct WINRT_EBO impl_ITickBar
{
    Windows::UI::Xaml::Media::Brush Fill() const;
    void Fill(const Windows::UI::Xaml::Media::Brush & value) const;
};

template <typename D>
struct WINRT_EBO impl_ITickBarStatics
{
    Windows::UI::Xaml::DependencyProperty FillProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IToggleButton
{
    Windows::Foundation::IReference<bool> IsChecked() const;
    void IsChecked(const Windows::Foundation::IReference<bool> & value) const;
    bool IsThreeState() const;
    void IsThreeState(bool value) const;
    event_token Checked(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using Checked_revoker = event_revoker<IToggleButton>;
    Checked_revoker Checked(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void Checked(event_token token) const;
    event_token Unchecked(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using Unchecked_revoker = event_revoker<IToggleButton>;
    Unchecked_revoker Unchecked(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void Unchecked(event_token token) const;
    event_token Indeterminate(const Windows::UI::Xaml::RoutedEventHandler & value) const;
    using Indeterminate_revoker = event_revoker<IToggleButton>;
    Indeterminate_revoker Indeterminate(auto_revoke_t, const Windows::UI::Xaml::RoutedEventHandler & value) const;
    void Indeterminate(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IToggleButtonFactory
{
    Windows::UI::Xaml::Controls::Primitives::ToggleButton CreateInstance(const Windows::IInspectable & outer, Windows::IInspectable & inner) const;
};

template <typename D>
struct WINRT_EBO impl_IToggleButtonOverrides
{
    void OnToggle() const;
};

template <typename D>
struct WINRT_EBO impl_IToggleButtonStatics
{
    Windows::UI::Xaml::DependencyProperty IsCheckedProperty() const;
    Windows::UI::Xaml::DependencyProperty IsThreeStateProperty() const;
};

template <typename D>
struct WINRT_EBO impl_IToggleSwitchTemplateSettings
{
    double KnobCurrentToOnOffset() const;
    double KnobCurrentToOffOffset() const;
    double KnobOnToOffOffset() const;
    double KnobOffToOnOffset() const;
    double CurtainCurrentToOnOffset() const;
    double CurtainCurrentToOffOffset() const;
    double CurtainOnToOffOffset() const;
    double CurtainOffToOnOffset() const;
};

template <typename D>
struct WINRT_EBO impl_IToolTipTemplateSettings
{
    double FromHorizontalOffset() const;
    double FromVerticalOffset() const;
};

struct DragCompletedEventHandler : Windows::IUnknown
{
    DragCompletedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<DragCompletedEventHandler>(m_ptr); }
    template <typename L> DragCompletedEventHandler(L lambda);
    template <typename F> DragCompletedEventHandler (F * function);
    template <typename O, typename M> DragCompletedEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::Primitives::DragCompletedEventArgs & e) const;
};

struct DragDeltaEventHandler : Windows::IUnknown
{
    DragDeltaEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<DragDeltaEventHandler>(m_ptr); }
    template <typename L> DragDeltaEventHandler(L lambda);
    template <typename F> DragDeltaEventHandler (F * function);
    template <typename O, typename M> DragDeltaEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::Primitives::DragDeltaEventArgs & e) const;
};

struct DragStartedEventHandler : Windows::IUnknown
{
    DragStartedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<DragStartedEventHandler>(m_ptr); }
    template <typename L> DragStartedEventHandler(L lambda);
    template <typename F> DragStartedEventHandler (F * function);
    template <typename O, typename M> DragStartedEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::Primitives::DragStartedEventArgs & e) const;
};

struct ItemsChangedEventHandler : Windows::IUnknown
{
    ItemsChangedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ItemsChangedEventHandler>(m_ptr); }
    template <typename L> ItemsChangedEventHandler(L lambda);
    template <typename F> ItemsChangedEventHandler (F * function);
    template <typename O, typename M> ItemsChangedEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::Primitives::ItemsChangedEventArgs & e) const;
};

struct RangeBaseValueChangedEventHandler : Windows::IUnknown
{
    RangeBaseValueChangedEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<RangeBaseValueChangedEventHandler>(m_ptr); }
    template <typename L> RangeBaseValueChangedEventHandler(L lambda);
    template <typename F> RangeBaseValueChangedEventHandler (F * function);
    template <typename O, typename M> RangeBaseValueChangedEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::Primitives::RangeBaseValueChangedEventArgs & e) const;
};

struct ScrollEventHandler : Windows::IUnknown
{
    ScrollEventHandler(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ScrollEventHandler>(m_ptr); }
    template <typename L> ScrollEventHandler(L lambda);
    template <typename F> ScrollEventHandler (F * function);
    template <typename O, typename M> ScrollEventHandler(O * object, M method);
    void operator()(const Windows::IInspectable & sender, const Windows::UI::Xaml::Controls::Primitives::ScrollEventArgs & e) const;
};

struct IAppBarTemplateSettings :
    Windows::IInspectable,
    impl::consume<IAppBarTemplateSettings>
{
    IAppBarTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAppBarTemplateSettings>(m_ptr); }
};

struct IButtonBase :
    Windows::IInspectable,
    impl::consume<IButtonBase>
{
    IButtonBase(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IButtonBase>(m_ptr); }
};

struct IButtonBaseFactory :
    Windows::IInspectable,
    impl::consume<IButtonBaseFactory>
{
    IButtonBaseFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IButtonBaseFactory>(m_ptr); }
};

struct IButtonBaseStatics :
    Windows::IInspectable,
    impl::consume<IButtonBaseStatics>
{
    IButtonBaseStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IButtonBaseStatics>(m_ptr); }
};

struct ICalendarPanel :
    Windows::IInspectable,
    impl::consume<ICalendarPanel>
{
    ICalendarPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarPanel>(m_ptr); }
};

struct ICalendarViewTemplateSettings :
    Windows::IInspectable,
    impl::consume<ICalendarViewTemplateSettings>
{
    ICalendarViewTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICalendarViewTemplateSettings>(m_ptr); }
};

struct ICarouselPanel :
    Windows::IInspectable,
    impl::consume<ICarouselPanel>
{
    ICarouselPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICarouselPanel>(m_ptr); }
};

struct ICarouselPanelFactory :
    Windows::IInspectable,
    impl::consume<ICarouselPanelFactory>
{
    ICarouselPanelFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICarouselPanelFactory>(m_ptr); }
};

struct IComboBoxTemplateSettings :
    Windows::IInspectable,
    impl::consume<IComboBoxTemplateSettings>
{
    IComboBoxTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBoxTemplateSettings>(m_ptr); }
};

struct IComboBoxTemplateSettings2 :
    Windows::IInspectable,
    impl::consume<IComboBoxTemplateSettings2>
{
    IComboBoxTemplateSettings2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IComboBoxTemplateSettings2>(m_ptr); }
};

struct ICommandBarTemplateSettings :
    Windows::IInspectable,
    impl::consume<ICommandBarTemplateSettings>
{
    ICommandBarTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBarTemplateSettings>(m_ptr); }
};

struct ICommandBarTemplateSettings2 :
    Windows::IInspectable,
    impl::consume<ICommandBarTemplateSettings2>
{
    ICommandBarTemplateSettings2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBarTemplateSettings2>(m_ptr); }
};

struct ICommandBarTemplateSettings3 :
    Windows::IInspectable,
    impl::consume<ICommandBarTemplateSettings3>
{
    ICommandBarTemplateSettings3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ICommandBarTemplateSettings3>(m_ptr); }
};

struct IDragCompletedEventArgs :
    Windows::IInspectable,
    impl::consume<IDragCompletedEventArgs>
{
    IDragCompletedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDragCompletedEventArgs>(m_ptr); }
};

struct IDragCompletedEventArgsFactory :
    Windows::IInspectable,
    impl::consume<IDragCompletedEventArgsFactory>
{
    IDragCompletedEventArgsFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDragCompletedEventArgsFactory>(m_ptr); }
};

struct IDragDeltaEventArgs :
    Windows::IInspectable,
    impl::consume<IDragDeltaEventArgs>
{
    IDragDeltaEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDragDeltaEventArgs>(m_ptr); }
};

struct IDragDeltaEventArgsFactory :
    Windows::IInspectable,
    impl::consume<IDragDeltaEventArgsFactory>
{
    IDragDeltaEventArgsFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDragDeltaEventArgsFactory>(m_ptr); }
};

struct IDragStartedEventArgs :
    Windows::IInspectable,
    impl::consume<IDragStartedEventArgs>
{
    IDragStartedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDragStartedEventArgs>(m_ptr); }
};

struct IDragStartedEventArgsFactory :
    Windows::IInspectable,
    impl::consume<IDragStartedEventArgsFactory>
{
    IDragStartedEventArgsFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDragStartedEventArgsFactory>(m_ptr); }
};

struct IFlyoutBase :
    Windows::IInspectable,
    impl::consume<IFlyoutBase>
{
    IFlyoutBase(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyoutBase>(m_ptr); }
};

struct IFlyoutBase2 :
    Windows::IInspectable,
    impl::consume<IFlyoutBase2>
{
    IFlyoutBase2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyoutBase2>(m_ptr); }
};

struct IFlyoutBaseClosingEventArgs :
    Windows::IInspectable,
    impl::consume<IFlyoutBaseClosingEventArgs>
{
    IFlyoutBaseClosingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyoutBaseClosingEventArgs>(m_ptr); }
};

struct IFlyoutBaseFactory :
    Windows::IInspectable,
    impl::consume<IFlyoutBaseFactory>
{
    IFlyoutBaseFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyoutBaseFactory>(m_ptr); }
};

struct IFlyoutBaseOverrides :
    Windows::IInspectable,
    impl::consume<IFlyoutBaseOverrides>
{
    IFlyoutBaseOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyoutBaseOverrides>(m_ptr); }
};

struct IFlyoutBaseStatics :
    Windows::IInspectable,
    impl::consume<IFlyoutBaseStatics>
{
    IFlyoutBaseStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyoutBaseStatics>(m_ptr); }
};

struct IFlyoutBaseStatics2 :
    Windows::IInspectable,
    impl::consume<IFlyoutBaseStatics2>
{
    IFlyoutBaseStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFlyoutBaseStatics2>(m_ptr); }
};

struct IGeneratorPositionHelper :
    Windows::IInspectable,
    impl::consume<IGeneratorPositionHelper>
{
    IGeneratorPositionHelper(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGeneratorPositionHelper>(m_ptr); }
};

struct IGeneratorPositionHelperStatics :
    Windows::IInspectable,
    impl::consume<IGeneratorPositionHelperStatics>
{
    IGeneratorPositionHelperStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGeneratorPositionHelperStatics>(m_ptr); }
};

struct IGridViewItemPresenter :
    Windows::IInspectable,
    impl::consume<IGridViewItemPresenter>
{
    IGridViewItemPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridViewItemPresenter>(m_ptr); }
};

struct IGridViewItemPresenterFactory :
    Windows::IInspectable,
    impl::consume<IGridViewItemPresenterFactory>
{
    IGridViewItemPresenterFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridViewItemPresenterFactory>(m_ptr); }
};

struct IGridViewItemPresenterStatics :
    Windows::IInspectable,
    impl::consume<IGridViewItemPresenterStatics>
{
    IGridViewItemPresenterStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridViewItemPresenterStatics>(m_ptr); }
};

struct IGridViewItemTemplateSettings :
    Windows::IInspectable,
    impl::consume<IGridViewItemTemplateSettings>
{
    IGridViewItemTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IGridViewItemTemplateSettings>(m_ptr); }
};

struct IItemsChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IItemsChangedEventArgs>
{
    IItemsChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IItemsChangedEventArgs>(m_ptr); }
};

struct IJumpListItemBackgroundConverter :
    Windows::IInspectable,
    impl::consume<IJumpListItemBackgroundConverter>
{
    IJumpListItemBackgroundConverter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IJumpListItemBackgroundConverter>(m_ptr); }
};

struct IJumpListItemBackgroundConverterStatics :
    Windows::IInspectable,
    impl::consume<IJumpListItemBackgroundConverterStatics>
{
    IJumpListItemBackgroundConverterStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IJumpListItemBackgroundConverterStatics>(m_ptr); }
};

struct IJumpListItemForegroundConverter :
    Windows::IInspectable,
    impl::consume<IJumpListItemForegroundConverter>
{
    IJumpListItemForegroundConverter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IJumpListItemForegroundConverter>(m_ptr); }
};

struct IJumpListItemForegroundConverterStatics :
    Windows::IInspectable,
    impl::consume<IJumpListItemForegroundConverterStatics>
{
    IJumpListItemForegroundConverterStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IJumpListItemForegroundConverterStatics>(m_ptr); }
};

struct ILayoutInformation :
    Windows::IInspectable,
    impl::consume<ILayoutInformation>
{
    ILayoutInformation(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILayoutInformation>(m_ptr); }
};

struct ILayoutInformationStatics :
    Windows::IInspectable,
    impl::consume<ILayoutInformationStatics>
{
    ILayoutInformationStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILayoutInformationStatics>(m_ptr); }
};

struct IListViewItemPresenter :
    Windows::IInspectable,
    impl::consume<IListViewItemPresenter>
{
    IListViewItemPresenter(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewItemPresenter>(m_ptr); }
};

struct IListViewItemPresenter2 :
    Windows::IInspectable,
    impl::consume<IListViewItemPresenter2>
{
    IListViewItemPresenter2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewItemPresenter2>(m_ptr); }
};

struct IListViewItemPresenterFactory :
    Windows::IInspectable,
    impl::consume<IListViewItemPresenterFactory>
{
    IListViewItemPresenterFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewItemPresenterFactory>(m_ptr); }
};

struct IListViewItemPresenterStatics :
    Windows::IInspectable,
    impl::consume<IListViewItemPresenterStatics>
{
    IListViewItemPresenterStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewItemPresenterStatics>(m_ptr); }
};

struct IListViewItemPresenterStatics2 :
    Windows::IInspectable,
    impl::consume<IListViewItemPresenterStatics2>
{
    IListViewItemPresenterStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewItemPresenterStatics2>(m_ptr); }
};

struct IListViewItemTemplateSettings :
    Windows::IInspectable,
    impl::consume<IListViewItemTemplateSettings>
{
    IListViewItemTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IListViewItemTemplateSettings>(m_ptr); }
};

struct ILoopingSelector :
    Windows::IInspectable,
    impl::consume<ILoopingSelector>
{
    ILoopingSelector(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILoopingSelector>(m_ptr); }
};

struct ILoopingSelectorItem :
    Windows::IInspectable,
    impl::consume<ILoopingSelectorItem>
{
    ILoopingSelectorItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILoopingSelectorItem>(m_ptr); }
};

struct ILoopingSelectorPanel :
    Windows::IInspectable,
    impl::consume<ILoopingSelectorPanel>
{
    ILoopingSelectorPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILoopingSelectorPanel>(m_ptr); }
};

struct ILoopingSelectorStatics :
    Windows::IInspectable,
    impl::consume<ILoopingSelectorStatics>
{
    ILoopingSelectorStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ILoopingSelectorStatics>(m_ptr); }
};

struct IMenuFlyoutPresenterTemplateSettings :
    Windows::IInspectable,
    impl::consume<IMenuFlyoutPresenterTemplateSettings>
{
    IMenuFlyoutPresenterTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMenuFlyoutPresenterTemplateSettings>(m_ptr); }
};

struct IOrientedVirtualizingPanel :
    Windows::IInspectable,
    impl::consume<IOrientedVirtualizingPanel>
{
    IOrientedVirtualizingPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOrientedVirtualizingPanel>(m_ptr); }
};

struct IOrientedVirtualizingPanelFactory :
    Windows::IInspectable,
    impl::consume<IOrientedVirtualizingPanelFactory>
{
    IOrientedVirtualizingPanelFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IOrientedVirtualizingPanelFactory>(m_ptr); }
};

struct IPickerFlyoutBase :
    Windows::IInspectable,
    impl::consume<IPickerFlyoutBase>
{
    IPickerFlyoutBase(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPickerFlyoutBase>(m_ptr); }
};

struct IPickerFlyoutBaseFactory :
    Windows::IInspectable,
    impl::consume<IPickerFlyoutBaseFactory>
{
    IPickerFlyoutBaseFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPickerFlyoutBaseFactory>(m_ptr); }
};

struct IPickerFlyoutBaseOverrides :
    Windows::IInspectable,
    impl::consume<IPickerFlyoutBaseOverrides>
{
    IPickerFlyoutBaseOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPickerFlyoutBaseOverrides>(m_ptr); }
};

struct IPickerFlyoutBaseStatics :
    Windows::IInspectable,
    impl::consume<IPickerFlyoutBaseStatics>
{
    IPickerFlyoutBaseStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPickerFlyoutBaseStatics>(m_ptr); }
};

struct IPivotHeaderItem :
    Windows::IInspectable,
    impl::consume<IPivotHeaderItem>
{
    IPivotHeaderItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotHeaderItem>(m_ptr); }
};

struct IPivotHeaderItemFactory :
    Windows::IInspectable,
    impl::consume<IPivotHeaderItemFactory>
{
    IPivotHeaderItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotHeaderItemFactory>(m_ptr); }
};

struct IPivotHeaderPanel :
    Windows::IInspectable,
    impl::consume<IPivotHeaderPanel>
{
    IPivotHeaderPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotHeaderPanel>(m_ptr); }
};

struct IPivotPanel :
    Windows::IInspectable,
    impl::consume<IPivotPanel>
{
    IPivotPanel(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPivotPanel>(m_ptr); }
};

struct IPopup :
    Windows::IInspectable,
    impl::consume<IPopup>
{
    IPopup(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPopup>(m_ptr); }
};

struct IPopup2 :
    Windows::IInspectable,
    impl::consume<IPopup2>
{
    IPopup2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPopup2>(m_ptr); }
};

struct IPopupStatics :
    Windows::IInspectable,
    impl::consume<IPopupStatics>
{
    IPopupStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPopupStatics>(m_ptr); }
};

struct IPopupStatics2 :
    Windows::IInspectable,
    impl::consume<IPopupStatics2>
{
    IPopupStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IPopupStatics2>(m_ptr); }
};

struct IProgressBarTemplateSettings :
    Windows::IInspectable,
    impl::consume<IProgressBarTemplateSettings>
{
    IProgressBarTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProgressBarTemplateSettings>(m_ptr); }
};

struct IProgressRingTemplateSettings :
    Windows::IInspectable,
    impl::consume<IProgressRingTemplateSettings>
{
    IProgressRingTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IProgressRingTemplateSettings>(m_ptr); }
};

struct IRangeBase :
    Windows::IInspectable,
    impl::consume<IRangeBase>
{
    IRangeBase(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRangeBase>(m_ptr); }
};

struct IRangeBaseFactory :
    Windows::IInspectable,
    impl::consume<IRangeBaseFactory>
{
    IRangeBaseFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRangeBaseFactory>(m_ptr); }
};

struct IRangeBaseOverrides :
    Windows::IInspectable,
    impl::consume<IRangeBaseOverrides>
{
    IRangeBaseOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRangeBaseOverrides>(m_ptr); }
};

struct IRangeBaseStatics :
    Windows::IInspectable,
    impl::consume<IRangeBaseStatics>
{
    IRangeBaseStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRangeBaseStatics>(m_ptr); }
};

struct IRangeBaseValueChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IRangeBaseValueChangedEventArgs>
{
    IRangeBaseValueChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRangeBaseValueChangedEventArgs>(m_ptr); }
};

struct IRepeatButton :
    Windows::IInspectable,
    impl::consume<IRepeatButton>
{
    IRepeatButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRepeatButton>(m_ptr); }
};

struct IRepeatButtonStatics :
    Windows::IInspectable,
    impl::consume<IRepeatButtonStatics>
{
    IRepeatButtonStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IRepeatButtonStatics>(m_ptr); }
};

struct IScrollBar :
    Windows::IInspectable,
    impl::consume<IScrollBar>
{
    IScrollBar(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollBar>(m_ptr); }
};

struct IScrollBarStatics :
    Windows::IInspectable,
    impl::consume<IScrollBarStatics>
{
    IScrollBarStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollBarStatics>(m_ptr); }
};

struct IScrollEventArgs :
    Windows::IInspectable,
    impl::consume<IScrollEventArgs>
{
    IScrollEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollEventArgs>(m_ptr); }
};

struct IScrollSnapPointsInfo :
    Windows::IInspectable,
    impl::consume<IScrollSnapPointsInfo>
{
    IScrollSnapPointsInfo(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IScrollSnapPointsInfo>(m_ptr); }
};

struct ISelector :
    Windows::IInspectable,
    impl::consume<ISelector>
{
    ISelector(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISelector>(m_ptr); }
};

struct ISelectorFactory :
    Windows::IInspectable,
    impl::consume<ISelectorFactory>
{
    ISelectorFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISelectorFactory>(m_ptr); }
};

struct ISelectorItem :
    Windows::IInspectable,
    impl::consume<ISelectorItem>
{
    ISelectorItem(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISelectorItem>(m_ptr); }
};

struct ISelectorItemFactory :
    Windows::IInspectable,
    impl::consume<ISelectorItemFactory>
{
    ISelectorItemFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISelectorItemFactory>(m_ptr); }
};

struct ISelectorItemStatics :
    Windows::IInspectable,
    impl::consume<ISelectorItemStatics>
{
    ISelectorItemStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISelectorItemStatics>(m_ptr); }
};

struct ISelectorStatics :
    Windows::IInspectable,
    impl::consume<ISelectorStatics>
{
    ISelectorStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISelectorStatics>(m_ptr); }
};

struct ISettingsFlyoutTemplateSettings :
    Windows::IInspectable,
    impl::consume<ISettingsFlyoutTemplateSettings>
{
    ISettingsFlyoutTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISettingsFlyoutTemplateSettings>(m_ptr); }
};

struct ISplitViewTemplateSettings :
    Windows::IInspectable,
    impl::consume<ISplitViewTemplateSettings>
{
    ISplitViewTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISplitViewTemplateSettings>(m_ptr); }
};

struct IThumb :
    Windows::IInspectable,
    impl::consume<IThumb>
{
    IThumb(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IThumb>(m_ptr); }
};

struct IThumbStatics :
    Windows::IInspectable,
    impl::consume<IThumbStatics>
{
    IThumbStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IThumbStatics>(m_ptr); }
};

struct ITickBar :
    Windows::IInspectable,
    impl::consume<ITickBar>
{
    ITickBar(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITickBar>(m_ptr); }
};

struct ITickBarStatics :
    Windows::IInspectable,
    impl::consume<ITickBarStatics>
{
    ITickBarStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITickBarStatics>(m_ptr); }
};

struct IToggleButton :
    Windows::IInspectable,
    impl::consume<IToggleButton>
{
    IToggleButton(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToggleButton>(m_ptr); }
};

struct IToggleButtonFactory :
    Windows::IInspectable,
    impl::consume<IToggleButtonFactory>
{
    IToggleButtonFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToggleButtonFactory>(m_ptr); }
};

struct IToggleButtonOverrides :
    Windows::IInspectable,
    impl::consume<IToggleButtonOverrides>
{
    IToggleButtonOverrides(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToggleButtonOverrides>(m_ptr); }
};

struct IToggleButtonStatics :
    Windows::IInspectable,
    impl::consume<IToggleButtonStatics>
{
    IToggleButtonStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToggleButtonStatics>(m_ptr); }
};

struct IToggleSwitchTemplateSettings :
    Windows::IInspectable,
    impl::consume<IToggleSwitchTemplateSettings>
{
    IToggleSwitchTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToggleSwitchTemplateSettings>(m_ptr); }
};

struct IToolTipTemplateSettings :
    Windows::IInspectable,
    impl::consume<IToolTipTemplateSettings>
{
    IToolTipTemplateSettings(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IToolTipTemplateSettings>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.Media.Core.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.Media.Core.1.h"
#include "Windows.Foundation.1.h"
#include "Windows.Foundation.2.h"
#include "Windows.Media.2.h"
#include "Windows.Media.Effects.2.h"
#include "Windows.Media.Playback.2.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_513ef3af_e784_5325_a91e_97c2b8111cf3
#define WINRT_GENERIC_513ef3af_e784_5325_a91e_97c2b8111cf3
template <> struct __declspec(uuid("513ef3af-e784-5325-a91e-97c2b8111cf3")) __declspec(novtable) IReference<uint32_t> : impl_IReference<uint32_t> {};
#endif

#ifndef WINRT_GENERIC_604d0c4c_91de_5c2a_935f_362f13eaf800
#define WINRT_GENERIC_604d0c4c_91de_5c2a_935f_362f13eaf800
template <> struct __declspec(uuid("604d0c4c-91de-5c2a-935f-362f13eaf800")) __declspec(novtable) IReference<Windows::Foundation::TimeSpan> : impl_IReference<Windows::Foundation::TimeSpan> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_5ee3189c_7dbf_5998_ad07_5414fb82567c
#define WINRT_GENERIC_5ee3189c_7dbf_5998_ad07_5414fb82567c
template <> struct __declspec(uuid("5ee3189c-7dbf-5998-ad07-5414fb82567c")) __declspec(novtable) IMap<GUID, Windows::IInspectable> : impl_IMap<GUID, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_3bda1540_d089_5a1a_8f0d_94eba8068e58
#define WINRT_GENERIC_3bda1540_d089_5a1a_8f0d_94eba8068e58
template <> struct __declspec(uuid("3bda1540-d089-5a1a-8f0d-94eba8068e58")) __declspec(novtable) IKeyValuePair<GUID, Windows::IInspectable> : impl_IKeyValuePair<GUID, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_e4d2c732_bbc1_5ef4_869f_5007ceb55f6e
#define WINRT_GENERIC_e4d2c732_bbc1_5ef4_869f_5007ceb55f6e
template <> struct __declspec(uuid("e4d2c732-bbc1-5ef4-869f-5007ceb55f6e")) __declspec(novtable) IMapView<GUID, Windows::IInspectable> : impl_IMapView<GUID, Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_238cc251_d0b8_5a34_81d4_0dd1f936a20d
#define WINRT_GENERIC_238cc251_d0b8_5a34_81d4_0dd1f936a20d
template <> struct __declspec(uuid("238cc251-d0b8-5a34-81d4-0dd1f936a20d")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceClosedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceClosedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_a93d5846_c660_586e_b6b5_a52fb81f9240
#define WINRT_GENERIC_a93d5846_c660_586e_b6b5_a52fb81f9240
template <> struct __declspec(uuid("a93d5846-c660-586e-b6b5-a52fb81f9240")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceStartingEventArgs> : impl_TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceStartingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_6fd6ded7_421b_5ef5_8bf5_edea45401665
#define WINRT_GENERIC_6fd6ded7_421b_5ef5_8bf5_edea45401665
template <> struct __declspec(uuid("6fd6ded7-421b-5ef5-8bf5-edea45401665")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::IInspectable> : impl_TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_4f1a3ae3_b8b7_5689_901d_b0b623f5a172
#define WINRT_GENERIC_4f1a3ae3_b8b7_5689_901d_b0b623f5a172
template <> struct __declspec(uuid("4f1a3ae3-b8b7-5689-901d-b0b623f5a172")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRequestedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRequestedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_452b2e4a_5511_5b3c_8a8e_ee659576a4c1
#define WINRT_GENERIC_452b2e4a_5511_5b3c_8a8e_ee659576a4c1
template <> struct __declspec(uuid("452b2e4a-5511-5b3c-8a8e-ee659576a4c1")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSwitchStreamsRequestedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSwitchStreamsRequestedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_9d812c70_9f0d_5ad5_8274_f760c9ca0c38
#define WINRT_GENERIC_9d812c70_9f0d_5ad5_8274_f760c9ca0c38
template <> struct __declspec(uuid("9d812c70-9f0d-5ad5-8274-f760c9ca0c38")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRenderedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRenderedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_d4dc5ef1_c1cb_5c32_803d_f2f9a7ad9916
#define WINRT_GENERIC_d4dc5ef1_c1cb_5c32_803d_f2f9a7ad9916
template <> struct __declspec(uuid("d4dc5ef1-c1cb-5c32-803d-f2f9a7ad9916")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MediaStreamSample, Windows::IInspectable> : impl_TypedEventHandler<Windows::Media::Core::MediaStreamSample, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_3cdc5e86_4ada_5ef7_967a_e137a4621907
#define WINRT_GENERIC_3cdc5e86_4ada_5ef7_967a_e137a4621907
template <> struct __declspec(uuid("3cdc5e86-4ada-5ef7-967a-e137a4621907")) __declspec(novtable) IAsyncOperation<Windows::Media::Core::MediaStreamSample> : impl_IAsyncOperation<Windows::Media::Core::MediaStreamSample> {};
#endif

#ifndef WINRT_GENERIC_724bf4ef_de7a_5dbd_815e_522a87bc3344
#define WINRT_GENERIC_724bf4ef_de7a_5dbd_815e_522a87bc3344
template <> struct __declspec(uuid("724bf4ef-de7a-5dbd-815e-522a87bc3344")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> : impl_TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_187fd3d7_bb9d_541a_94fd_43c31dd84a67
#define WINRT_GENERIC_187fd3d7_bb9d_541a_94fd_43c31dd84a67
template <> struct __declspec(uuid("187fd3d7-bb9d-541a-94fd-43c31dd84a67")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> : impl_TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_87ff1dd1_7ec3_5bc5_b558_0425d806bf4b
#define WINRT_GENERIC_87ff1dd1_7ec3_5bc5_b558_0425d806bf4b
template <> struct __declspec(uuid("87ff1dd1-7ec3-5bc5-b558-0425d806bf4b")) __declspec(novtable) IVectorView<Windows::Media::Core::MseTimeRange> : impl_IVectorView<Windows::Media::Core::MseTimeRange> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_0ff01695_fbb2_5e95_8ec7_da17d8e99f16
#define WINRT_GENERIC_0ff01695_fbb2_5e95_8ec7_da17d8e99f16
template <> struct __declspec(uuid("0ff01695-fbb2-5e95-8ec7-da17d8e99f16")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> : impl_TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_85318263_1360_5c78_b0ad_52d6b45b19f3
#define WINRT_GENERIC_85318263_1360_5c78_b0ad_52d6b45b19f3
template <> struct __declspec(uuid("85318263-1360-5c78-b0ad-52d6b45b19f3")) __declspec(novtable) IVectorView<Windows::Media::Core::MseSourceBuffer> : impl_IVectorView<Windows::Media::Core::MseSourceBuffer> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_48630f8c_dbde_569e_a0c8_7588d1d2bd03
#define WINRT_GENERIC_48630f8c_dbde_569e_a0c8_7588d1d2bd03
template <> struct __declspec(uuid("48630f8c-dbde-569e-a0c8-7588d1d2bd03")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::SceneAnalysisEffect, Windows::Media::Core::SceneAnalyzedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::SceneAnalysisEffect, Windows::Media::Core::SceneAnalyzedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_fcd6a2a3_b6ff_5572_912b_99ebaf95165d
#define WINRT_GENERIC_fcd6a2a3_b6ff_5572_912b_99ebaf95165d
template <> struct __declspec(uuid("fcd6a2a3-b6ff-5572-912b-99ebaf95165d")) __declspec(novtable) IVectorView<Windows::Media::Devices::Core::FrameController> : impl_IVectorView<Windows::Media::Devices::Core::FrameController> {};
#endif

#ifndef WINRT_GENERIC_39ef4411_0618_5b8d_8ea2_81c637f823f8
#define WINRT_GENERIC_39ef4411_0618_5b8d_8ea2_81c637f823f8
template <> struct __declspec(uuid("39ef4411-0618-5b8d-8ea2-81c637f823f8")) __declspec(novtable) IVectorView<Windows::Media::FaceAnalysis::DetectedFace> : impl_IVectorView<Windows::Media::FaceAnalysis::DetectedFace> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_01f0d7a6_f9bd_5bc1_aaa9_dff396f72f87
#define WINRT_GENERIC_01f0d7a6_f9bd_5bc1_aaa9_dff396f72f87
template <> struct __declspec(uuid("01f0d7a6-f9bd-5bc1-aaa9-dff396f72f87")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::FaceDetectionEffect, Windows::Media::Core::FaceDetectedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::FaceDetectionEffect, Windows::Media::Core::FaceDetectedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_897592e2_bfcc_5f16_8834_2c9c4f20559b
#define WINRT_GENERIC_897592e2_bfcc_5f16_8834_2c9c4f20559b
template <> struct __declspec(uuid("897592e2-bfcc-5f16-8834-2c9c4f20559b")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::VideoStabilizationEffect, Windows::Media::Core::VideoStabilizationEffectEnabledChangedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::VideoStabilizationEffect, Windows::Media::Core::VideoStabilizationEffectEnabledChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_5b133719_ee98_59b2_b432_1c9a5a56ab05
#define WINRT_GENERIC_5b133719_ee98_59b2_b432_1c9a5a56ab05
template <> struct __declspec(uuid("5b133719-ee98-59b2-b432-1c9a5a56ab05")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MediaBinder, Windows::Media::Core::MediaBindingEventArgs> : impl_TypedEventHandler<Windows::Media::Core::MediaBinder, Windows::Media::Core::MediaBindingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_3f3b10e2_b2e9_55c6_abb3_4a258072ebb9
#define WINRT_GENERIC_3f3b10e2_b2e9_55c6_abb3_4a258072ebb9
template <> struct __declspec(uuid("3f3b10e2-b2e9-55c6-abb3-4a258072ebb9")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MediaBindingEventArgs, Windows::IInspectable> : impl_TypedEventHandler<Windows::Media::Core::MediaBindingEventArgs, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_425d53e3_fba6_5ea3_b713_db4d70787436
#define WINRT_GENERIC_425d53e3_fba6_5ea3_b713_db4d70787436
template <> struct __declspec(uuid("425d53e3-fba6-5ea3-b713-db4d70787436")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceOpenOperationCompletedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceOpenOperationCompletedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_95e6c852_6e9c_50a9_8935_054320242945
#define WINRT_GENERIC_95e6c852_6e9c_50a9_8935_054320242945
template <> struct __declspec(uuid("95e6c852-6e9c-50a9-8935-054320242945")) __declspec(novtable) IObservableVector<Windows::Media::Core::TimedTextSource> : impl_IObservableVector<Windows::Media::Core::TimedTextSource> {};
#endif

#ifndef WINRT_GENERIC_98ebeba8_6659_5af2_be4f_32fdeede3b77
#define WINRT_GENERIC_98ebeba8_6659_5af2_be4f_32fdeede3b77
template <> struct __declspec(uuid("98ebeba8-6659-5af2-be4f-32fdeede3b77")) __declspec(novtable) IObservableVector<Windows::Media::Core::TimedMetadataTrack> : impl_IObservableVector<Windows::Media::Core::TimedMetadataTrack> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_2274d3a6_1ba0_5230_bb86_de90058b6403
#define WINRT_GENERIC_2274d3a6_1ba0_5230_bb86_de90058b6403
template <> struct __declspec(uuid("2274d3a6-1ba0-5230-bb86-de90058b6403")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceStateChangedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceStateChangedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_284f0441_e96d_58ad_9188_7bf46514dfcc
#define WINRT_GENERIC_284f0441_e96d_58ad_9188_7bf46514dfcc
template <> struct __declspec(uuid("284f0441-e96d-58ad-9188-7bf46514dfcc")) __declspec(novtable) IVector<Windows::Media::Core::TimedTextLine> : impl_IVector<Windows::Media::Core::TimedTextLine> {};
#endif

#ifndef WINRT_GENERIC_8786f392_f369_57ea_a16e_75870246a8c9
#define WINRT_GENERIC_8786f392_f369_57ea_a16e_75870246a8c9
template <> struct __declspec(uuid("8786f392-f369-57ea-a16e-75870246a8c9")) __declspec(novtable) IVector<Windows::Media::Core::TimedTextSubformat> : impl_IVector<Windows::Media::Core::TimedTextSubformat> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_21eb6e39_728a_56a9_8dce_062ba4c81bf5
#define WINRT_GENERIC_21eb6e39_728a_56a9_8dce_062ba4c81bf5
template <> struct __declspec(uuid("21eb6e39-728a-56a9-8dce-062ba4c81bf5")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::ISingleSelectMediaTrackList, Windows::IInspectable> : impl_TypedEventHandler<Windows::Media::Core::ISingleSelectMediaTrackList, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_4aac9411_c355_5c95_8c78_5a0f5ca1a54d
#define WINRT_GENERIC_4aac9411_c355_5c95_8c78_5a0f5ca1a54d
template <> struct __declspec(uuid("4aac9411-c355-5c95-8c78-5a0f5ca1a54d")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> : impl_TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> {};
#endif

#ifndef WINRT_GENERIC_8dc73162_255b_532e_b0c7_9a6d70b4bb9e
#define WINRT_GENERIC_8dc73162_255b_532e_b0c7_9a6d70b4bb9e
template <> struct __declspec(uuid("8dc73162-255b-532e-b0c7-9a6d70b4bb9e")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::TimedMetadataTrackFailedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::TimedMetadataTrackFailedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_996421a1_625c_5d92_ad68_8b3911d294b0
#define WINRT_GENERIC_996421a1_625c_5d92_ad68_8b3911d294b0
template <> struct __declspec(uuid("996421a1-625c-5d92-ad68-8b3911d294b0")) __declspec(novtable) IVectorView<Windows::Media::Core::IMediaCue> : impl_IVectorView<Windows::Media::Core::IMediaCue> {};
#endif

#ifndef WINRT_GENERIC_0313ae7a_2803_5d45_b5a1_a0fc5cd55e7c
#define WINRT_GENERIC_0313ae7a_2803_5d45_b5a1_a0fc5cd55e7c
template <> struct __declspec(uuid("0313ae7a-2803-5d45-b5a1-a0fc5cd55e7c")) __declspec(novtable) IVectorView<Windows::Media::Core::TimedMetadataTrack> : impl_IVectorView<Windows::Media::Core::TimedMetadataTrack> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_0220562a_5de4_5ad2_ac20_6cd26f111745
#define WINRT_GENERIC_0220562a_5de4_5ad2_ac20_6cd26f111745
template <> struct __declspec(uuid("0220562a-5de4-5ad2-ac20-6cd26f111745")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::TimedTextSource, Windows::Media::Core::TimedTextSourceResolveResultEventArgs> : impl_TypedEventHandler<Windows::Media::Core::TimedTextSource, Windows::Media::Core::TimedTextSourceResolveResultEventArgs> {};
#endif

#ifndef WINRT_GENERIC_b1e4bd43_541b_53f3_ad6c_ddaac4813023
#define WINRT_GENERIC_b1e4bd43_541b_53f3_ad6c_ddaac4813023
template <> struct __declspec(uuid("b1e4bd43-541b-53f3-ad6c-ddaac4813023")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::VideoTrack, Windows::Media::Core::VideoTrackOpenFailedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::VideoTrack, Windows::Media::Core::VideoTrackOpenFailedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_b5b7e554_2476_5667_9c9a_1c7a7d09ace2
#define WINRT_GENERIC_b5b7e554_2476_5667_9c9a_1c7a7d09ace2
template <> struct __declspec(uuid("b5b7e554-2476-5667-9c9a-1c7a7d09ace2")) __declspec(novtable) TypedEventHandler<Windows::Media::Core::AudioTrack, Windows::Media::Core::AudioTrackOpenFailedEventArgs> : impl_TypedEventHandler<Windows::Media::Core::AudioTrack, Windows::Media::Core::AudioTrackOpenFailedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_150a4454_03bb_5dd1_8153_6a600e851f71
#define WINRT_GENERIC_150a4454_03bb_5dd1_8153_6a600e851f71
template <> struct __declspec(uuid("150a4454-03bb-5dd1-8153-6a600e851f71")) __declspec(novtable) IIterable<Windows::Media::Core::TimedMetadataTrack> : impl_IIterable<Windows::Media::Core::TimedMetadataTrack> {};
#endif

#ifndef WINRT_GENERIC_a0cf090e_0340_531f_898b_c21eafb9f4ae
#define WINRT_GENERIC_a0cf090e_0340_531f_898b_c21eafb9f4ae
template <> struct __declspec(uuid("a0cf090e-0340-531f-898b-c21eafb9f4ae")) __declspec(novtable) IIterator<Windows::Media::FaceAnalysis::DetectedFace> : impl_IIterator<Windows::Media::FaceAnalysis::DetectedFace> {};
#endif

#ifndef WINRT_GENERIC_25347323_3556_5cbb_9855_2b5856437f4d
#define WINRT_GENERIC_25347323_3556_5cbb_9855_2b5856437f4d
template <> struct __declspec(uuid("25347323-3556-5cbb-9855-2b5856437f4d")) __declspec(novtable) IIterable<Windows::Media::FaceAnalysis::DetectedFace> : impl_IIterable<Windows::Media::FaceAnalysis::DetectedFace> {};
#endif

#ifndef WINRT_GENERIC_1440dc88_63ff_5a01_bb93_390c76742488
#define WINRT_GENERIC_1440dc88_63ff_5a01_bb93_390c76742488
template <> struct __declspec(uuid("1440dc88-63ff-5a01-bb93-390c76742488")) __declspec(novtable) IIterator<Windows::Media::Devices::Core::FrameController> : impl_IIterator<Windows::Media::Devices::Core::FrameController> {};
#endif

#ifndef WINRT_GENERIC_bd8eeadc_2dd9_5ad8_ac5d_f3b13b94b9c2
#define WINRT_GENERIC_bd8eeadc_2dd9_5ad8_ac5d_f3b13b94b9c2
template <> struct __declspec(uuid("bd8eeadc-2dd9-5ad8-ac5d-f3b13b94b9c2")) __declspec(novtable) IIterable<Windows::Media::Devices::Core::FrameController> : impl_IIterable<Windows::Media::Devices::Core::FrameController> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_df7aacc9_a86c_5c7d_bf98_cc371c97c67b
#define WINRT_GENERIC_df7aacc9_a86c_5c7d_bf98_cc371c97c67b
template <> struct __declspec(uuid("df7aacc9-a86c-5c7d-bf98-cc371c97c67b")) __declspec(novtable) AsyncOperationCompletedHandler<Windows::Media::Core::MediaStreamSample> : impl_AsyncOperationCompletedHandler<Windows::Media::Core::MediaStreamSample> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_92a36852_fbb3_5b48_b4ec_01dda0972a5c
#define WINRT_GENERIC_92a36852_fbb3_5b48_b4ec_01dda0972a5c
template <> struct __declspec(uuid("92a36852-fbb3-5b48-b4ec-01dda0972a5c")) __declspec(novtable) IIterator<Windows::Media::Core::MseTimeRange> : impl_IIterator<Windows::Media::Core::MseTimeRange> {};
#endif

#ifndef WINRT_GENERIC_ed0c6e08_e22f_5ac2_ba14_e0ff1df3467f
#define WINRT_GENERIC_ed0c6e08_e22f_5ac2_ba14_e0ff1df3467f
template <> struct __declspec(uuid("ed0c6e08-e22f-5ac2-ba14-e0ff1df3467f")) __declspec(novtable) IIterable<Windows::Media::Core::MseTimeRange> : impl_IIterable<Windows::Media::Core::MseTimeRange> {};
#endif

#ifndef WINRT_GENERIC_53076581_01a9_51b9_98cc_5265504cd352
#define WINRT_GENERIC_53076581_01a9_51b9_98cc_5265504cd352
template <> struct __declspec(uuid("53076581-01a9-51b9-98cc-5265504cd352")) __declspec(novtable) IIterator<Windows::Media::Core::MseSourceBuffer> : impl_IIterator<Windows::Media::Core::MseSourceBuffer> {};
#endif

#ifndef WINRT_GENERIC_5ca0da86_6307_558a_865f_3a1ef9fe56b3
#define WINRT_GENERIC_5ca0da86_6307_558a_865f_3a1ef9fe56b3
template <> struct __declspec(uuid("5ca0da86-6307-558a-865f-3a1ef9fe56b3")) __declspec(novtable) IIterable<Windows::Media::Core::MseSourceBuffer> : impl_IIterable<Windows::Media::Core::MseSourceBuffer> {};
#endif

#ifndef WINRT_GENERIC_e12e6261_b198_56e0_9822_ba2d3bb6f8fe
#define WINRT_GENERIC_e12e6261_b198_56e0_9822_ba2d3bb6f8fe
template <> struct __declspec(uuid("e12e6261-b198-56e0-9822-ba2d3bb6f8fe")) __declspec(novtable) VectorChangedEventHandler<Windows::Media::Core::TimedTextSource> : impl_VectorChangedEventHandler<Windows::Media::Core::TimedTextSource> {};
#endif

#ifndef WINRT_GENERIC_bdded7c0_5c73_57f5_9b08_652933586dd5
#define WINRT_GENERIC_bdded7c0_5c73_57f5_9b08_652933586dd5
template <> struct __declspec(uuid("bdded7c0-5c73-57f5-9b08-652933586dd5")) __declspec(novtable) IIterator<Windows::Media::Core::TimedTextSource> : impl_IIterator<Windows::Media::Core::TimedTextSource> {};
#endif

#ifndef WINRT_GENERIC_4fc57282_0edf_5d85_9d89_ddc2a5692c13
#define WINRT_GENERIC_4fc57282_0edf_5d85_9d89_ddc2a5692c13
template <> struct __declspec(uuid("4fc57282-0edf-5d85-9d89-ddc2a5692c13")) __declspec(novtable) IIterable<Windows::Media::Core::TimedTextSource> : impl_IIterable<Windows::Media::Core::TimedTextSource> {};
#endif

#ifndef WINRT_GENERIC_edcd634e_b7e4_5ff8_b8c2_8493849b2c0d
#define WINRT_GENERIC_edcd634e_b7e4_5ff8_b8c2_8493849b2c0d
template <> struct __declspec(uuid("edcd634e-b7e4-5ff8-b8c2-8493849b2c0d")) __declspec(novtable) IVectorView<Windows::Media::Core::TimedTextSource> : impl_IVectorView<Windows::Media::Core::TimedTextSource> {};
#endif

#ifndef WINRT_GENERIC_d0a72378_5432_50bf_93c3_c5f35fc93517
#define WINRT_GENERIC_d0a72378_5432_50bf_93c3_c5f35fc93517
template <> struct __declspec(uuid("d0a72378-5432-50bf-93c3-c5f35fc93517")) __declspec(novtable) IVector<Windows::Media::Core::TimedTextSource> : impl_IVector<Windows::Media::Core::TimedTextSource> {};
#endif

#ifndef WINRT_GENERIC_bd1dc81c_23c4_5b4b_ac38_c5d34cdf34e4
#define WINRT_GENERIC_bd1dc81c_23c4_5b4b_ac38_c5d34cdf34e4
template <> struct __declspec(uuid("bd1dc81c-23c4-5b4b-ac38-c5d34cdf34e4")) __declspec(novtable) VectorChangedEventHandler<Windows::Media::Core::TimedMetadataTrack> : impl_VectorChangedEventHandler<Windows::Media::Core::TimedMetadataTrack> {};
#endif

#ifndef WINRT_GENERIC_859354e5_077b_5d53_b297_1a07b97f09c3
#define WINRT_GENERIC_859354e5_077b_5d53_b297_1a07b97f09c3
template <> struct __declspec(uuid("859354e5-077b-5d53-b297-1a07b97f09c3")) __declspec(novtable) IIterator<Windows::Media::Core::TimedMetadataTrack> : impl_IIterator<Windows::Media::Core::TimedMetadataTrack> {};
#endif

#ifndef WINRT_GENERIC_c46d9e34_ea11_5bb2_9744_1617417ef016
#define WINRT_GENERIC_c46d9e34_ea11_5bb2_9744_1617417ef016
template <> struct __declspec(uuid("c46d9e34-ea11-5bb2-9744-1617417ef016")) __declspec(novtable) IVector<Windows::Media::Core::TimedMetadataTrack> : impl_IVector<Windows::Media::Core::TimedMetadataTrack> {};
#endif

#ifndef WINRT_GENERIC_84c4fcac_86d8_5c74_a138_d9bf37b749ec
#define WINRT_GENERIC_84c4fcac_86d8_5c74_a138_d9bf37b749ec
template <> struct __declspec(uuid("84c4fcac-86d8-5c74-a138-d9bf37b749ec")) __declspec(novtable) IIterator<Windows::Media::Core::TimedTextLine> : impl_IIterator<Windows::Media::Core::TimedTextLine> {};
#endif

#ifndef WINRT_GENERIC_aec710ad_3bd8_5a59_ae77_e7fc46fb105b
#define WINRT_GENERIC_aec710ad_3bd8_5a59_ae77_e7fc46fb105b
template <> struct __declspec(uuid("aec710ad-3bd8-5a59-ae77-e7fc46fb105b")) __declspec(novtable) IIterable<Windows::Media::Core::TimedTextLine> : impl_IIterable<Windows::Media::Core::TimedTextLine> {};
#endif

#ifndef WINRT_GENERIC_9532b5cc_73fc_5e3a_8531_794c30d7a1ae
#define WINRT_GENERIC_9532b5cc_73fc_5e3a_8531_794c30d7a1ae
template <> struct __declspec(uuid("9532b5cc-73fc-5e3a-8531-794c30d7a1ae")) __declspec(novtable) IVectorView<Windows::Media::Core::TimedTextLine> : impl_IVectorView<Windows::Media::Core::TimedTextLine> {};
#endif

#ifndef WINRT_GENERIC_65105e50_865c_591d_9bf4_96237de2533f
#define WINRT_GENERIC_65105e50_865c_591d_9bf4_96237de2533f
template <> struct __declspec(uuid("65105e50-865c-591d-9bf4-96237de2533f")) __declspec(novtable) IIterator<Windows::Media::Core::TimedTextSubformat> : impl_IIterator<Windows::Media::Core::TimedTextSubformat> {};
#endif

#ifndef WINRT_GENERIC_cee3ae43_c93c_56f7_8c55_9024ded72c76
#define WINRT_GENERIC_cee3ae43_c93c_56f7_8c55_9024ded72c76
template <> struct __declspec(uuid("cee3ae43-c93c-56f7-8c55-9024ded72c76")) __declspec(novtable) IIterable<Windows::Media::Core::TimedTextSubformat> : impl_IIterable<Windows::Media::Core::TimedTextSubformat> {};
#endif

#ifndef WINRT_GENERIC_411a0e26_42e2_5e65_b9c4_980c4c3f31f7
#define WINRT_GENERIC_411a0e26_42e2_5e65_b9c4_980c4c3f31f7
template <> struct __declspec(uuid("411a0e26-42e2-5e65-b9c4-980c4c3f31f7")) __declspec(novtable) IVectorView<Windows::Media::Core::TimedTextSubformat> : impl_IVectorView<Windows::Media::Core::TimedTextSubformat> {};
#endif

#ifndef WINRT_GENERIC_1a594dc8_a64b_55ed_9b34_7b274e1d5c70
#define WINRT_GENERIC_1a594dc8_a64b_55ed_9b34_7b274e1d5c70
template <> struct __declspec(uuid("1a594dc8-a64b-55ed-9b34-7b274e1d5c70")) __declspec(novtable) IIterator<Windows::Media::Core::IMediaCue> : impl_IIterator<Windows::Media::Core::IMediaCue> {};
#endif

#ifndef WINRT_GENERIC_737a2098_41bf_5d9f_a1d2_2f171c578b3c
#define WINRT_GENERIC_737a2098_41bf_5d9f_a1d2_2f171c578b3c
template <> struct __declspec(uuid("737a2098-41bf-5d9f-a1d2-2f171c578b3c")) __declspec(novtable) IIterable<Windows::Media::Core::IMediaCue> : impl_IIterable<Windows::Media::Core::IMediaCue> {};
#endif

#ifndef WINRT_GENERIC_f3b20528_e3b3_5331_b2d0_0c2623aee785
#define WINRT_GENERIC_f3b20528_e3b3_5331_b2d0_0c2623aee785
template <> struct __declspec(uuid("f3b20528-e3b3-5331-b2d0-0c2623aee785")) __declspec(novtable) IIterable<Windows::Foundation::Collections::IKeyValuePair<GUID, Windows::IInspectable>> : impl_IIterable<Windows::Foundation::Collections::IKeyValuePair<GUID, Windows::IInspectable>> {};
#endif

#ifndef WINRT_GENERIC_4f25059a_0b9a_5f25_9b9e_4b9f1d22ff65
#define WINRT_GENERIC_4f25059a_0b9a_5f25_9b9e_4b9f1d22ff65
template <> struct __declspec(uuid("4f25059a-0b9a-5f25-9b9e-4b9f1d22ff65")) __declspec(novtable) IIterator<Windows::Foundation::Collections::IKeyValuePair<GUID, Windows::IInspectable>> : impl_IIterator<Windows::Foundation::Collections::IKeyValuePair<GUID, Windows::IInspectable>> {};
#endif


}

namespace Windows::Media::Core {

template <typename D>
struct WINRT_EBO impl_IAudioStreamDescriptor
{
    Windows::Media::MediaProperties::AudioEncodingProperties EncodingProperties() const;
};

template <typename D>
struct WINRT_EBO impl_IAudioStreamDescriptor2
{
    void LeadingEncoderPadding(const Windows::Foundation::IReference<uint32_t> & value) const;
    Windows::Foundation::IReference<uint32_t> LeadingEncoderPadding() const;
    void TrailingEncoderPadding(const Windows::Foundation::IReference<uint32_t> & value) const;
    Windows::Foundation::IReference<uint32_t> TrailingEncoderPadding() const;
};

template <typename D>
struct WINRT_EBO impl_IAudioStreamDescriptorFactory
{
    Windows::Media::Core::AudioStreamDescriptor Create(const Windows::Media::MediaProperties::AudioEncodingProperties & encodingProperties) const;
};

template <typename D>
struct WINRT_EBO impl_IAudioTrack
{
    event_token OpenFailed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::AudioTrack, Windows::Media::Core::AudioTrackOpenFailedEventArgs> & handler) const;
    using OpenFailed_revoker = event_revoker<IAudioTrack>;
    OpenFailed_revoker OpenFailed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::AudioTrack, Windows::Media::Core::AudioTrackOpenFailedEventArgs> & handler) const;
    void OpenFailed(event_token token) const;
    Windows::Media::MediaProperties::AudioEncodingProperties GetEncodingProperties() const;
    Windows::Media::Playback::MediaPlaybackItem PlaybackItem() const;
    hstring Name() const;
    Windows::Media::Core::AudioTrackSupportInfo SupportInfo() const;
};

template <typename D>
struct WINRT_EBO impl_IAudioTrackOpenFailedEventArgs
{
    HRESULT ExtendedError() const;
};

template <typename D>
struct WINRT_EBO impl_IAudioTrackSupportInfo
{
    Windows::Media::Core::MediaDecoderStatus DecoderStatus() const;
    Windows::Media::Core::AudioDecoderDegradation Degradation() const;
    Windows::Media::Core::AudioDecoderDegradationReason DegradationReason() const;
    Windows::Media::Core::MediaSourceStatus MediaSourceStatus() const;
};

template <typename D>
struct WINRT_EBO impl_IDataCue
{
    void Data(const Windows::Storage::Streams::IBuffer & value) const;
    Windows::Storage::Streams::IBuffer Data() const;
};

template <typename D>
struct WINRT_EBO impl_IFaceDetectedEventArgs
{
    Windows::Media::Core::FaceDetectionEffectFrame ResultFrame() const;
};

template <typename D>
struct WINRT_EBO impl_IFaceDetectionEffect
{
    void Enabled(bool value) const;
    bool Enabled() const;
    void DesiredDetectionInterval(const Windows::Foundation::TimeSpan & value) const;
    Windows::Foundation::TimeSpan DesiredDetectionInterval() const;
    event_token FaceDetected(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::FaceDetectionEffect, Windows::Media::Core::FaceDetectedEventArgs> & handler) const;
    using FaceDetected_revoker = event_revoker<IFaceDetectionEffect>;
    FaceDetected_revoker FaceDetected(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::FaceDetectionEffect, Windows::Media::Core::FaceDetectedEventArgs> & handler) const;
    void FaceDetected(event_token cookie) const;
};

template <typename D>
struct WINRT_EBO impl_IFaceDetectionEffectDefinition
{
    void DetectionMode(Windows::Media::Core::FaceDetectionMode value) const;
    Windows::Media::Core::FaceDetectionMode DetectionMode() const;
    void SynchronousDetectionEnabled(bool value) const;
    bool SynchronousDetectionEnabled() const;
};

template <typename D>
struct WINRT_EBO impl_IFaceDetectionEffectFrame
{
    Windows::Foundation::Collections::IVectorView<Windows::Media::FaceAnalysis::DetectedFace> DetectedFaces() const;
};

template <typename D>
struct WINRT_EBO impl_IHighDynamicRangeControl
{
    void Enabled(bool value) const;
    bool Enabled() const;
};

template <typename D>
struct WINRT_EBO impl_IHighDynamicRangeOutput
{
    double Certainty() const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Devices::Core::FrameController> FrameControllers() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaBinder
{
    event_token Binding(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBinder, Windows::Media::Core::MediaBindingEventArgs> & handler) const;
    using Binding_revoker = event_revoker<IMediaBinder>;
    Binding_revoker Binding(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBinder, Windows::Media::Core::MediaBindingEventArgs> & handler) const;
    void Binding(event_token token) const;
    hstring Token() const;
    void Token(hstring_ref value) const;
    Windows::Media::Core::MediaSource Source() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaBindingEventArgs
{
    event_token Canceled(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBindingEventArgs, Windows::IInspectable> & handler) const;
    using Canceled_revoker = event_revoker<IMediaBindingEventArgs>;
    Canceled_revoker Canceled(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaBindingEventArgs, Windows::IInspectable> & handler) const;
    void Canceled(event_token token) const;
    Windows::Media::Core::MediaBinder MediaBinder() const;
    Windows::Foundation::Deferral GetDeferral() const;
    void SetUri(const Windows::Foundation::Uri & uri) const;
    void SetStream(const Windows::Storage::Streams::IRandomAccessStream & stream, hstring_ref contentType) const;
    void SetStreamReference(const Windows::Storage::Streams::IRandomAccessStreamReference & stream, hstring_ref contentType) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCue
{
    void StartTime(const Windows::Foundation::TimeSpan & value) const;
    Windows::Foundation::TimeSpan StartTime() const;
    void Duration(const Windows::Foundation::TimeSpan & value) const;
    Windows::Foundation::TimeSpan Duration() const;
    void Id(hstring_ref value) const;
    hstring Id() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaCueEventArgs
{
    Windows::Media::Core::IMediaCue Cue() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaSource
{
};

template <typename D>
struct WINRT_EBO impl_IMediaSource2
{
    event_token OpenOperationCompleted(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceOpenOperationCompletedEventArgs> & handler) const;
    using OpenOperationCompleted_revoker = event_revoker<IMediaSource2>;
    OpenOperationCompleted_revoker OpenOperationCompleted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceOpenOperationCompletedEventArgs> & handler) const;
    void OpenOperationCompleted(event_token token) const;
    Windows::Foundation::Collections::ValueSet CustomProperties() const;
    Windows::Foundation::IReference<Windows::Foundation::TimeSpan> Duration() const;
    bool IsOpen() const;
    Windows::Foundation::Collections::IObservableVector<Windows::Media::Core::TimedTextSource> ExternalTimedTextSources() const;
    Windows::Foundation::Collections::IObservableVector<Windows::Media::Core::TimedMetadataTrack> ExternalTimedMetadataTracks() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaSource3
{
    event_token StateChanged(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceStateChangedEventArgs> & handler) const;
    using StateChanged_revoker = event_revoker<IMediaSource3>;
    StateChanged_revoker StateChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaSource, Windows::Media::Core::MediaSourceStateChangedEventArgs> & handler) const;
    void StateChanged(event_token token) const;
    Windows::Media::Core::MediaSourceState State() const;
    void Reset() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaSourceError
{
    HRESULT ExtendedError() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaSourceOpenOperationCompletedEventArgs
{
    Windows::Media::Core::MediaSourceError Error() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaSourceStateChangedEventArgs
{
    Windows::Media::Core::MediaSourceState OldState() const;
    Windows::Media::Core::MediaSourceState NewState() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaSourceStatics
{
    Windows::Media::Core::MediaSource CreateFromAdaptiveMediaSource(const Windows::Media::Streaming::Adaptive::AdaptiveMediaSource & mediaSource) const;
    Windows::Media::Core::MediaSource CreateFromMediaStreamSource(const Windows::Media::Core::MediaStreamSource & mediaSource) const;
    Windows::Media::Core::MediaSource CreateFromMseStreamSource(const Windows::Media::Core::MseStreamSource & mediaSource) const;
    Windows::Media::Core::MediaSource CreateFromIMediaSource(const Windows::Media::Core::IMediaSource & mediaSource) const;
    Windows::Media::Core::MediaSource CreateFromStorageFile(const Windows::Storage::IStorageFile & file) const;
    Windows::Media::Core::MediaSource CreateFromStream(const Windows::Storage::Streams::IRandomAccessStream & stream, hstring_ref contentType) const;
    Windows::Media::Core::MediaSource CreateFromStreamReference(const Windows::Storage::Streams::IRandomAccessStreamReference & stream, hstring_ref contentType) const;
    Windows::Media::Core::MediaSource CreateFromUri(const Windows::Foundation::Uri & uri) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaSourceStatics2
{
    Windows::Media::Core::MediaSource CreateFromMediaBinder(const Windows::Media::Core::MediaBinder & binder) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamDescriptor
{
    bool IsSelected() const;
    void Name(hstring_ref value) const;
    hstring Name() const;
    void Language(hstring_ref value) const;
    hstring Language() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSample
{
    event_token Processed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSample, Windows::IInspectable> & handler) const;
    using Processed_revoker = event_revoker<IMediaStreamSample>;
    Processed_revoker Processed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSample, Windows::IInspectable> & handler) const;
    void Processed(event_token token) const;
    Windows::Storage::Streams::Buffer Buffer() const;
    Windows::Foundation::TimeSpan Timestamp() const;
    Windows::Media::Core::MediaStreamSamplePropertySet ExtendedProperties() const;
    Windows::Media::Core::MediaStreamSampleProtectionProperties Protection() const;
    void DecodeTimestamp(const Windows::Foundation::TimeSpan & value) const;
    Windows::Foundation::TimeSpan DecodeTimestamp() const;
    void Duration(const Windows::Foundation::TimeSpan & value) const;
    Windows::Foundation::TimeSpan Duration() const;
    void KeyFrame(bool value) const;
    bool KeyFrame() const;
    void Discontinuous(bool value) const;
    bool Discontinuous() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSampleProtectionProperties
{
    void SetKeyIdentifier(array_ref<const uint8_t> value) const;
    void GetKeyIdentifier(com_array<uint8_t> & value) const;
    void SetInitializationVector(array_ref<const uint8_t> value) const;
    void GetInitializationVector(com_array<uint8_t> & value) const;
    void SetSubSampleMapping(array_ref<const uint8_t> value) const;
    void GetSubSampleMapping(com_array<uint8_t> & value) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSampleStatics
{
    Windows::Media::Core::MediaStreamSample CreateFromBuffer(const Windows::Storage::Streams::IBuffer & buffer, const Windows::Foundation::TimeSpan & timestamp) const;
    Windows::Foundation::IAsyncOperation<Windows::Media::Core::MediaStreamSample> CreateFromStreamAsync(const Windows::Storage::Streams::IInputStream & stream, uint32_t count, const Windows::Foundation::TimeSpan & timestamp) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSource
{
    event_token Closed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceClosedEventArgs> & handler) const;
    using Closed_revoker = event_revoker<IMediaStreamSource>;
    Closed_revoker Closed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceClosedEventArgs> & handler) const;
    void Closed(event_token token) const;
    event_token Starting(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceStartingEventArgs> & handler) const;
    using Starting_revoker = event_revoker<IMediaStreamSource>;
    Starting_revoker Starting(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceStartingEventArgs> & handler) const;
    void Starting(event_token token) const;
    event_token Paused(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::IInspectable> & handler) const;
    using Paused_revoker = event_revoker<IMediaStreamSource>;
    Paused_revoker Paused(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::IInspectable> & handler) const;
    void Paused(event_token token) const;
    event_token SampleRequested(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRequestedEventArgs> & handler) const;
    using SampleRequested_revoker = event_revoker<IMediaStreamSource>;
    SampleRequested_revoker SampleRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRequestedEventArgs> & handler) const;
    void SampleRequested(event_token token) const;
    event_token SwitchStreamsRequested(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSwitchStreamsRequestedEventArgs> & handler) const;
    using SwitchStreamsRequested_revoker = event_revoker<IMediaStreamSource>;
    SwitchStreamsRequested_revoker SwitchStreamsRequested(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSwitchStreamsRequestedEventArgs> & handler) const;
    void SwitchStreamsRequested(event_token token) const;
    void NotifyError(Windows::Media::Core::MediaStreamSourceErrorStatus errorStatus) const;
    void AddStreamDescriptor(const Windows::Media::Core::IMediaStreamDescriptor & descriptor) const;
    void MediaProtectionManager(const Windows::Media::Protection::MediaProtectionManager & value) const;
    Windows::Media::Protection::MediaProtectionManager MediaProtectionManager() const;
    void Duration(const Windows::Foundation::TimeSpan & value) const;
    Windows::Foundation::TimeSpan Duration() const;
    void CanSeek(bool value) const;
    bool CanSeek() const;
    void BufferTime(const Windows::Foundation::TimeSpan & value) const;
    Windows::Foundation::TimeSpan BufferTime() const;
    void SetBufferedRange(const Windows::Foundation::TimeSpan & startOffset, const Windows::Foundation::TimeSpan & endOffset) const;
    Windows::Storage::FileProperties::MusicProperties MusicProperties() const;
    Windows::Storage::FileProperties::VideoProperties VideoProperties() const;
    void Thumbnail(const Windows::Storage::Streams::IRandomAccessStreamReference & value) const;
    Windows::Storage::Streams::IRandomAccessStreamReference Thumbnail() const;
    void AddProtectionKey(const Windows::Media::Core::IMediaStreamDescriptor & streamDescriptor, array_ref<const uint8_t> keyIdentifier, array_ref<const uint8_t> licenseData) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSource2
{
    event_token SampleRendered(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRenderedEventArgs> & handler) const;
    using SampleRendered_revoker = event_revoker<IMediaStreamSource2>;
    SampleRendered_revoker SampleRendered(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MediaStreamSource, Windows::Media::Core::MediaStreamSourceSampleRenderedEventArgs> & handler) const;
    void SampleRendered(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceClosedEventArgs
{
    Windows::Media::Core::MediaStreamSourceClosedRequest Request() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceClosedRequest
{
    Windows::Media::Core::MediaStreamSourceClosedReason Reason() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceFactory
{
    Windows::Media::Core::MediaStreamSource CreateFromDescriptor(const Windows::Media::Core::IMediaStreamDescriptor & descriptor) const;
    Windows::Media::Core::MediaStreamSource CreateFromDescriptors(const Windows::Media::Core::IMediaStreamDescriptor & descriptor, const Windows::Media::Core::IMediaStreamDescriptor & descriptor2) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceSampleRenderedEventArgs
{
    Windows::Foundation::TimeSpan SampleLag() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceSampleRequest
{
    Windows::Media::Core::IMediaStreamDescriptor StreamDescriptor() const;
    Windows::Media::Core::MediaStreamSourceSampleRequestDeferral GetDeferral() const;
    void Sample(const Windows::Media::Core::MediaStreamSample & value) const;
    Windows::Media::Core::MediaStreamSample Sample() const;
    void ReportSampleProgress(uint32_t progress) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceSampleRequestDeferral
{
    void Complete() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceSampleRequestedEventArgs
{
    Windows::Media::Core::MediaStreamSourceSampleRequest Request() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceStartingEventArgs
{
    Windows::Media::Core::MediaStreamSourceStartingRequest Request() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceStartingRequest
{
    Windows::Foundation::IReference<Windows::Foundation::TimeSpan> StartPosition() const;
    Windows::Media::Core::MediaStreamSourceStartingRequestDeferral GetDeferral() const;
    void SetActualStartPosition(const Windows::Foundation::TimeSpan & position) const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceStartingRequestDeferral
{
    void Complete() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceSwitchStreamsRequest
{
    Windows::Media::Core::IMediaStreamDescriptor OldStreamDescriptor() const;
    Windows::Media::Core::IMediaStreamDescriptor NewStreamDescriptor() const;
    Windows::Media::Core::MediaStreamSourceSwitchStreamsRequestDeferral GetDeferral() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceSwitchStreamsRequestDeferral
{
    void Complete() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaStreamSourceSwitchStreamsRequestedEventArgs
{
    Windows::Media::Core::MediaStreamSourceSwitchStreamsRequest Request() const;
};

template <typename D>
struct WINRT_EBO impl_IMediaTrack
{
    hstring Id() const;
    hstring Language() const;
    Windows::Media::Core::MediaTrackKind TrackKind() const;
    void Label(hstring_ref value) const;
    hstring Label() const;
};

template <typename D>
struct WINRT_EBO impl_IMseSourceBuffer
{
    event_token UpdateStarting(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const;
    using UpdateStarting_revoker = event_revoker<IMseSourceBuffer>;
    UpdateStarting_revoker UpdateStarting(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const;
    void UpdateStarting(event_token token) const;
    event_token Updated(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const;
    using Updated_revoker = event_revoker<IMseSourceBuffer>;
    Updated_revoker Updated(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const;
    void Updated(event_token token) const;
    event_token UpdateEnded(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const;
    using UpdateEnded_revoker = event_revoker<IMseSourceBuffer>;
    UpdateEnded_revoker UpdateEnded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const;
    void UpdateEnded(event_token token) const;
    event_token ErrorOccurred(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const;
    using ErrorOccurred_revoker = event_revoker<IMseSourceBuffer>;
    ErrorOccurred_revoker ErrorOccurred(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const;
    void ErrorOccurred(event_token token) const;
    event_token Aborted(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const;
    using Aborted_revoker = event_revoker<IMseSourceBuffer>;
    Aborted_revoker Aborted(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBuffer, Windows::IInspectable> & handler) const;
    void Aborted(event_token token) const;
    Windows::Media::Core::MseAppendMode Mode() const;
    void Mode(Windows::Media::Core::MseAppendMode value) const;
    bool IsUpdating() const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Core::MseTimeRange> Buffered() const;
    Windows::Foundation::TimeSpan TimestampOffset() const;
    void TimestampOffset(const Windows::Foundation::TimeSpan & value) const;
    Windows::Foundation::TimeSpan AppendWindowStart() const;
    void AppendWindowStart(const Windows::Foundation::TimeSpan & value) const;
    Windows::Foundation::IReference<Windows::Foundation::TimeSpan> AppendWindowEnd() const;
    void AppendWindowEnd(const Windows::Foundation::IReference<Windows::Foundation::TimeSpan> & value) const;
    void AppendBuffer(const Windows::Storage::Streams::IBuffer & buffer) const;
    void AppendStream(const Windows::Storage::Streams::IInputStream & stream) const;
    void AppendStream(const Windows::Storage::Streams::IInputStream & stream, uint64_t maxSize) const;
    void Abort() const;
    void Remove(const Windows::Foundation::TimeSpan & start, const Windows::Foundation::IReference<Windows::Foundation::TimeSpan> & end) const;
};

template <typename D>
struct WINRT_EBO impl_IMseSourceBufferList
{
    event_token SourceBufferAdded(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> & handler) const;
    using SourceBufferAdded_revoker = event_revoker<IMseSourceBufferList>;
    SourceBufferAdded_revoker SourceBufferAdded(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> & handler) const;
    void SourceBufferAdded(event_token token) const;
    event_token SourceBufferRemoved(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> & handler) const;
    using SourceBufferRemoved_revoker = event_revoker<IMseSourceBufferList>;
    SourceBufferRemoved_revoker SourceBufferRemoved(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseSourceBufferList, Windows::IInspectable> & handler) const;
    void SourceBufferRemoved(event_token token) const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Core::MseSourceBuffer> Buffers() const;
};

template <typename D>
struct WINRT_EBO impl_IMseStreamSource
{
    event_token Opened(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const;
    using Opened_revoker = event_revoker<IMseStreamSource>;
    Opened_revoker Opened(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const;
    void Opened(event_token token) const;
    event_token Ended(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const;
    using Ended_revoker = event_revoker<IMseStreamSource>;
    Ended_revoker Ended(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const;
    void Ended(event_token token) const;
    event_token Closed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const;
    using Closed_revoker = event_revoker<IMseStreamSource>;
    Closed_revoker Closed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::MseStreamSource, Windows::IInspectable> & handler) const;
    void Closed(event_token token) const;
    Windows::Media::Core::MseSourceBufferList SourceBuffers() const;
    Windows::Media::Core::MseSourceBufferList ActiveSourceBuffers() const;
    Windows::Media::Core::MseReadyState ReadyState() const;
    Windows::Foundation::IReference<Windows::Foundation::TimeSpan> Duration() const;
    void Duration(const Windows::Foundation::IReference<Windows::Foundation::TimeSpan> & value) const;
    Windows::Media::Core::MseSourceBuffer AddSourceBuffer(hstring_ref mimeType) const;
    void RemoveSourceBuffer(const Windows::Media::Core::MseSourceBuffer & buffer) const;
    void EndOfStream(Windows::Media::Core::MseEndOfStreamStatus status) const;
};

template <typename D>
struct WINRT_EBO impl_IMseStreamSourceStatics
{
    bool IsContentTypeSupported(hstring_ref contentType) const;
};

template <typename D>
struct WINRT_EBO impl_ISceneAnalysisEffect
{
    Windows::Media::Core::HighDynamicRangeControl HighDynamicRangeAnalyzer() const;
    void DesiredAnalysisInterval(const Windows::Foundation::TimeSpan & value) const;
    Windows::Foundation::TimeSpan DesiredAnalysisInterval() const;
    event_token SceneAnalyzed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::SceneAnalysisEffect, Windows::Media::Core::SceneAnalyzedEventArgs> & handler) const;
    using SceneAnalyzed_revoker = event_revoker<ISceneAnalysisEffect>;
    SceneAnalyzed_revoker SceneAnalyzed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::SceneAnalysisEffect, Windows::Media::Core::SceneAnalyzedEventArgs> & handler) const;
    void SceneAnalyzed(event_token cookie) const;
};

template <typename D>
struct WINRT_EBO impl_ISceneAnalysisEffectFrame
{
    Windows::Media::Capture::CapturedFrameControlValues FrameControlValues() const;
    Windows::Media::Core::HighDynamicRangeOutput HighDynamicRange() const;
};

template <typename D>
struct WINRT_EBO impl_ISceneAnalyzedEventArgs
{
    Windows::Media::Core::SceneAnalysisEffectFrame ResultFrame() const;
};

template <typename D>
struct WINRT_EBO impl_ISingleSelectMediaTrackList
{
    event_token SelectedIndexChanged(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::ISingleSelectMediaTrackList, Windows::IInspectable> & handler) const;
    using SelectedIndexChanged_revoker = event_revoker<ISingleSelectMediaTrackList>;
    SelectedIndexChanged_revoker SelectedIndexChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::ISingleSelectMediaTrackList, Windows::IInspectable> & handler) const;
    void SelectedIndexChanged(event_token token) const;
    void SelectedIndex(int32_t value) const;
    int32_t SelectedIndex() const;
};

template <typename D>
struct WINRT_EBO impl_ITimedMetadataTrack
{
    event_token CueEntered(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> & handler) const;
    using CueEntered_revoker = event_revoker<ITimedMetadataTrack>;
    CueEntered_revoker CueEntered(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> & handler) const;
    void CueEntered(event_token token) const;
    event_token CueExited(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> & handler) const;
    using CueExited_revoker = event_revoker<ITimedMetadataTrack>;
    CueExited_revoker CueExited(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::MediaCueEventArgs> & handler) const;
    void CueExited(event_token token) const;
    event_token TrackFailed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::TimedMetadataTrackFailedEventArgs> & handler) const;
    using TrackFailed_revoker = event_revoker<ITimedMetadataTrack>;
    TrackFailed_revoker TrackFailed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedMetadataTrack, Windows::Media::Core::TimedMetadataTrackFailedEventArgs> & handler) const;
    void TrackFailed(event_token token) const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Core::IMediaCue> Cues() const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Core::IMediaCue> ActiveCues() const;
    Windows::Media::Core::TimedMetadataKind TimedMetadataKind() const;
    hstring DispatchType() const;
    void AddCue(const Windows::Media::Core::IMediaCue & cue) const;
    void RemoveCue(const Windows::Media::Core::IMediaCue & cue) const;
};

template <typename D>
struct WINRT_EBO impl_ITimedMetadataTrack2
{
    Windows::Media::Playback::MediaPlaybackItem PlaybackItem() const;
    hstring Name() const;
};

template <typename D>
struct WINRT_EBO impl_ITimedMetadataTrackError
{
    Windows::Media::Core::TimedMetadataTrackErrorCode ErrorCode() const;
    HRESULT ExtendedError() const;
};

template <typename D>
struct WINRT_EBO impl_ITimedMetadataTrackFactory
{
    Windows::Media::Core::TimedMetadataTrack Create(hstring_ref id, hstring_ref language, Windows::Media::Core::TimedMetadataKind kind) const;
};

template <typename D>
struct WINRT_EBO impl_ITimedMetadataTrackFailedEventArgs
{
    Windows::Media::Core::TimedMetadataTrackError Error() const;
};

template <typename D>
struct WINRT_EBO impl_ITimedTextCue
{
    Windows::Media::Core::TimedTextRegion CueRegion() const;
    void CueRegion(const Windows::Media::Core::TimedTextRegion & value) const;
    Windows::Media::Core::TimedTextStyle CueStyle() const;
    void CueStyle(const Windows::Media::Core::TimedTextStyle & value) const;
    Windows::Foundation::Collections::IVector<Windows::Media::Core::TimedTextLine> Lines() const;
};

template <typename D>
struct WINRT_EBO impl_ITimedTextLine
{
    hstring Text() const;
    void Text(hstring_ref value) const;
    Windows::Foundation::Collections::IVector<Windows::Media::Core::TimedTextSubformat> Subformats() const;
};

template <typename D>
struct WINRT_EBO impl_ITimedTextRegion
{
    hstring Name() const;
    void Name(hstring_ref value) const;
    Windows::Media::Core::TimedTextPoint Position() const;
    void Position(const Windows::Media::Core::TimedTextPoint & value) const;
    Windows::Media::Core::TimedTextSize Extent() const;
    void Extent(const Windows::Media::Core::TimedTextSize & value) const;
    Windows::UI::Color Background() const;
    void Background(const Windows::UI::Color & value) const;
    Windows::Media::Core::TimedTextWritingMode WritingMode() const;
    void WritingMode(Windows::Media::Core::TimedTextWritingMode value) const;
    Windows::Media::Core::TimedTextDisplayAlignment DisplayAlignment() const;
    void DisplayAlignment(Windows::Media::Core::TimedTextDisplayAlignment value) const;
    Windows::Media::Core::TimedTextDouble LineHeight() const;
    void LineHeight(const Windows::Media::Core::TimedTextDouble & value) const;
    bool IsOverflowClipped() const;
    void IsOverflowClipped(bool value) const;
    Windows::Media::Core::TimedTextPadding Padding() const;
    void Padding(const Windows::Media::Core::TimedTextPadding & value) const;
    Windows::Media::Core::TimedTextWrapping TextWrapping() const;
    void TextWrapping(Windows::Media::Core::TimedTextWrapping value) const;
    int32_t ZIndex() const;
    void ZIndex(int32_t value) const;
    Windows::Media::Core::TimedTextScrollMode ScrollMode() const;
    void ScrollMode(Windows::Media::Core::TimedTextScrollMode value) const;
};

template <typename D>
struct WINRT_EBO impl_ITimedTextSource
{
    event_token Resolved(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedTextSource, Windows::Media::Core::TimedTextSourceResolveResultEventArgs> & handler) const;
    using Resolved_revoker = event_revoker<ITimedTextSource>;
    Resolved_revoker Resolved(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::TimedTextSource, Windows::Media::Core::TimedTextSourceResolveResultEventArgs> & handler) const;
    void Resolved(event_token token) const;
};

template <typename D>
struct WINRT_EBO impl_ITimedTextSourceResolveResultEventArgs
{
    Windows::Media::Core::TimedMetadataTrackError Error() const;
    Windows::Foundation::Collections::IVectorView<Windows::Media::Core::TimedMetadataTrack> Tracks() const;
};

template <typename D>
struct WINRT_EBO impl_ITimedTextSourceStatics
{
    Windows::Media::Core::TimedTextSource CreateFromStream(const Windows::Storage::Streams::IRandomAccessStream & stream) const;
    Windows::Media::Core::TimedTextSource CreateFromUri(const Windows::Foundation::Uri & uri) const;
    Windows::Media::Core::TimedTextSource CreateFromStream(const Windows::Storage::Streams::IRandomAccessStream & stream, hstring_ref defaultLanguage) const;
    Windows::Media::Core::TimedTextSource CreateFromUri(const Windows::Foundation::Uri & uri, hstring_ref defaultLanguage) const;
};

template <typename D>
struct WINRT_EBO impl_ITimedTextStyle
{
    hstring Name() const;
    void Name(hstring_ref value) const;
    hstring FontFamily() const;
    void FontFamily(hstring_ref value) const;
    Windows::Media::Core::TimedTextDouble FontSize() const;
    void FontSize(const Windows::Media::Core::TimedTextDouble & value) const;
    Windows::Media::Core::TimedTextWeight FontWeight() const;
    void FontWeight(Windows::Media::Core::TimedTextWeight value) const;
    Windows::UI::Color Foreground() const;
    void Foreground(const Windows::UI::Color & value) const;
    Windows::UI::Color Background() const;
    void Background(const Windows::UI::Color & value) const;
    bool IsBackgroundAlwaysShown() const;
    void IsBackgroundAlwaysShown(bool value) const;
    Windows::Media::Core::TimedTextFlowDirection FlowDirection() const;
    void FlowDirection(Windows::Media::Core::TimedTextFlowDirection value) const;
    Windows::Media::Core::TimedTextLineAlignment LineAlignment() const;
    void LineAlignment(Windows::Media::Core::TimedTextLineAlignment value) const;
    Windows::UI::Color OutlineColor() const;
    void OutlineColor(const Windows::UI::Color & value) const;
    Windows::Media::Core::TimedTextDouble OutlineThickness() const;
    void OutlineThickness(const Windows::Media::Core::TimedTextDouble & value) const;
    Windows::Media::Core::TimedTextDouble OutlineRadius() const;
    void OutlineRadius(const Windows::Media::Core::TimedTextDouble & value) const;
};

template <typename D>
struct WINRT_EBO impl_ITimedTextSubformat
{
    int32_t StartIndex() const;
    void StartIndex(int32_t value) const;
    int32_t Length() const;
    void Length(int32_t value) const;
    Windows::Media::Core::TimedTextStyle SubformatStyle() const;
    void SubformatStyle(const Windows::Media::Core::TimedTextStyle & value) const;
};

template <typename D>
struct WINRT_EBO impl_IVideoStabilizationEffect
{
    void Enabled(bool value) const;
    bool Enabled() const;
    event_token EnabledChanged(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoStabilizationEffect, Windows::Media::Core::VideoStabilizationEffectEnabledChangedEventArgs> & handler) const;
    using EnabledChanged_revoker = event_revoker<IVideoStabilizationEffect>;
    EnabledChanged_revoker EnabledChanged(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoStabilizationEffect, Windows::Media::Core::VideoStabilizationEffectEnabledChangedEventArgs> & handler) const;
    void EnabledChanged(event_token cookie) const;
    Windows::Media::Capture::VideoStreamConfiguration GetRecommendedStreamConfiguration(const Windows::Media::Devices::VideoDeviceController & controller, const Windows::Media::MediaProperties::VideoEncodingProperties & desiredProperties) const;
};

template <typename D>
struct WINRT_EBO impl_IVideoStabilizationEffectEnabledChangedEventArgs
{
    Windows::Media::Core::VideoStabilizationEffectEnabledChangedReason Reason() const;
};

template <typename D>
struct WINRT_EBO impl_IVideoStreamDescriptor
{
    Windows::Media::MediaProperties::VideoEncodingProperties EncodingProperties() const;
};

template <typename D>
struct WINRT_EBO impl_IVideoStreamDescriptorFactory
{
    Windows::Media::Core::VideoStreamDescriptor Create(const Windows::Media::MediaProperties::VideoEncodingProperties & encodingProperties) const;
};

template <typename D>
struct WINRT_EBO impl_IVideoTrack
{
    event_token OpenFailed(const Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoTrack, Windows::Media::Core::VideoTrackOpenFailedEventArgs> & handler) const;
    using OpenFailed_revoker = event_revoker<IVideoTrack>;
    OpenFailed_revoker OpenFailed(auto_revoke_t, const Windows::Foundation::TypedEventHandler<Windows::Media::Core::VideoTrack, Windows::Media::Core::VideoTrackOpenFailedEventArgs> & handler) const;
    void OpenFailed(event_token token) const;
    Windows::Media::MediaProperties::VideoEncodingProperties GetEncodingProperties() const;
    Windows::Media::Playback::MediaPlaybackItem PlaybackItem() const;
    hstring Name() const;
    Windows::Media::Core::VideoTrackSupportInfo SupportInfo() const;
};

template <typename D>
struct WINRT_EBO impl_IVideoTrackOpenFailedEventArgs
{
    HRESULT ExtendedError() const;
};

template <typename D>
struct WINRT_EBO impl_IVideoTrackSupportInfo
{
    Windows::Media::Core::MediaDecoderStatus DecoderStatus() const;
    Windows::Media::Core::MediaSourceStatus MediaSourceStatus() const;
};

struct IAudioStreamDescriptor :
    Windows::IInspectable,
    impl::consume<IAudioStreamDescriptor>,
    impl::require<IAudioStreamDescriptor, Windows::Media::Core::IMediaStreamDescriptor>
{
    IAudioStreamDescriptor(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAudioStreamDescriptor>(m_ptr); }
};

struct IAudioStreamDescriptor2 :
    Windows::IInspectable,
    impl::consume<IAudioStreamDescriptor2>,
    impl::require<IAudioStreamDescriptor2, Windows::Media::Core::IMediaStreamDescriptor>
{
    IAudioStreamDescriptor2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAudioStreamDescriptor2>(m_ptr); }
};

struct IAudioStreamDescriptorFactory :
    Windows::IInspectable,
    impl::consume<IAudioStreamDescriptorFactory>
{
    IAudioStreamDescriptorFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAudioStreamDescriptorFactory>(m_ptr); }
};

struct IAudioTrack :
    Windows::IInspectable,
    impl::consume<IAudioTrack>
{
    IAudioTrack(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAudioTrack>(m_ptr); }
};

struct IAudioTrackOpenFailedEventArgs :
    Windows::IInspectable,
    impl::consume<IAudioTrackOpenFailedEventArgs>
{
    IAudioTrackOpenFailedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAudioTrackOpenFailedEventArgs>(m_ptr); }
};

struct IAudioTrackSupportInfo :
    Windows::IInspectable,
    impl::consume<IAudioTrackSupportInfo>
{
    IAudioTrackSupportInfo(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IAudioTrackSupportInfo>(m_ptr); }
};

struct IDataCue :
    Windows::IInspectable,
    impl::consume<IDataCue>,
    impl::require<IDataCue, Windows::Media::Core::IMediaCue>
{
    IDataCue(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IDataCue>(m_ptr); }
};

struct IFaceDetectedEventArgs :
    Windows::IInspectable,
    impl::consume<IFaceDetectedEventArgs>
{
    IFaceDetectedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFaceDetectedEventArgs>(m_ptr); }
};

struct IFaceDetectionEffect :
    Windows::IInspectable,
    impl::consume<IFaceDetectionEffect>,
    impl::require<IFaceDetectionEffect, Windows::Media::IMediaExtension>
{
    IFaceDetectionEffect(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFaceDetectionEffect>(m_ptr); }
};

struct IFaceDetectionEffectDefinition :
    Windows::IInspectable,
    impl::consume<IFaceDetectionEffectDefinition>,
    impl::require<IFaceDetectionEffectDefinition, Windows::Media::Effects::IVideoEffectDefinition>
{
    IFaceDetectionEffectDefinition(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFaceDetectionEffectDefinition>(m_ptr); }
};

struct IFaceDetectionEffectFrame :
    Windows::IInspectable,
    impl::consume<IFaceDetectionEffectFrame>,
    impl::require<IFaceDetectionEffectFrame, Windows::Foundation::IClosable, Windows::Media::IMediaFrame>
{
    IFaceDetectionEffectFrame(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IFaceDetectionEffectFrame>(m_ptr); }
};

struct IHighDynamicRangeControl :
    Windows::IInspectable,
    impl::consume<IHighDynamicRangeControl>
{
    IHighDynamicRangeControl(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHighDynamicRangeControl>(m_ptr); }
};

struct IHighDynamicRangeOutput :
    Windows::IInspectable,
    impl::consume<IHighDynamicRangeOutput>
{
    IHighDynamicRangeOutput(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IHighDynamicRangeOutput>(m_ptr); }
};

struct IMediaBinder :
    Windows::IInspectable,
    impl::consume<IMediaBinder>
{
    IMediaBinder(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaBinder>(m_ptr); }
};

struct IMediaBindingEventArgs :
    Windows::IInspectable,
    impl::consume<IMediaBindingEventArgs>
{
    IMediaBindingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaBindingEventArgs>(m_ptr); }
};

struct IMediaCue :
    Windows::IInspectable,
    impl::consume<IMediaCue>
{
    IMediaCue(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCue>(m_ptr); }
};

struct IMediaCueEventArgs :
    Windows::IInspectable,
    impl::consume<IMediaCueEventArgs>
{
    IMediaCueEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaCueEventArgs>(m_ptr); }
};

struct IMediaSource :
    Windows::IInspectable,
    impl::consume<IMediaSource>
{
    IMediaSource(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaSource>(m_ptr); }
};

struct IMediaSource2 :
    Windows::IInspectable,
    impl::consume<IMediaSource2>,
    impl::require<IMediaSource2, Windows::Foundation::IClosable, Windows::Media::Playback::IMediaPlaybackSource>
{
    IMediaSource2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaSource2>(m_ptr); }
};

struct IMediaSource3 :
    Windows::IInspectable,
    impl::consume<IMediaSource3>,
    impl::require<IMediaSource3, Windows::Foundation::IClosable, Windows::Media::Core::IMediaSource2, Windows::Media::Playback::IMediaPlaybackSource>
{
    IMediaSource3(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaSource3>(m_ptr); }
};

struct IMediaSourceError :
    Windows::IInspectable,
    impl::consume<IMediaSourceError>
{
    IMediaSourceError(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaSourceError>(m_ptr); }
};

struct IMediaSourceOpenOperationCompletedEventArgs :
    Windows::IInspectable,
    impl::consume<IMediaSourceOpenOperationCompletedEventArgs>
{
    IMediaSourceOpenOperationCompletedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaSourceOpenOperationCompletedEventArgs>(m_ptr); }
};

struct IMediaSourceStateChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IMediaSourceStateChangedEventArgs>
{
    IMediaSourceStateChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaSourceStateChangedEventArgs>(m_ptr); }
};

struct IMediaSourceStatics :
    Windows::IInspectable,
    impl::consume<IMediaSourceStatics>
{
    IMediaSourceStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaSourceStatics>(m_ptr); }
};

struct IMediaSourceStatics2 :
    Windows::IInspectable,
    impl::consume<IMediaSourceStatics2>
{
    IMediaSourceStatics2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaSourceStatics2>(m_ptr); }
};

struct IMediaStreamDescriptor :
    Windows::IInspectable,
    impl::consume<IMediaStreamDescriptor>
{
    IMediaStreamDescriptor(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamDescriptor>(m_ptr); }
};

struct IMediaStreamSample :
    Windows::IInspectable,
    impl::consume<IMediaStreamSample>
{
    IMediaStreamSample(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSample>(m_ptr); }
};

struct IMediaStreamSampleProtectionProperties :
    Windows::IInspectable,
    impl::consume<IMediaStreamSampleProtectionProperties>
{
    IMediaStreamSampleProtectionProperties(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSampleProtectionProperties>(m_ptr); }
};

struct IMediaStreamSampleStatics :
    Windows::IInspectable,
    impl::consume<IMediaStreamSampleStatics>
{
    IMediaStreamSampleStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSampleStatics>(m_ptr); }
};

struct IMediaStreamSource :
    Windows::IInspectable,
    impl::consume<IMediaStreamSource>,
    impl::require<IMediaStreamSource, Windows::Media::Core::IMediaSource>
{
    IMediaStreamSource(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSource>(m_ptr); }
};

struct IMediaStreamSource2 :
    Windows::IInspectable,
    impl::consume<IMediaStreamSource2>,
    impl::require<IMediaStreamSource2, Windows::Media::Core::IMediaSource, Windows::Media::Core::IMediaStreamSource>
{
    IMediaStreamSource2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSource2>(m_ptr); }
};

struct IMediaStreamSourceClosedEventArgs :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceClosedEventArgs>
{
    IMediaStreamSourceClosedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceClosedEventArgs>(m_ptr); }
};

struct IMediaStreamSourceClosedRequest :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceClosedRequest>
{
    IMediaStreamSourceClosedRequest(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceClosedRequest>(m_ptr); }
};

struct IMediaStreamSourceFactory :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceFactory>
{
    IMediaStreamSourceFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceFactory>(m_ptr); }
};

struct IMediaStreamSourceSampleRenderedEventArgs :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceSampleRenderedEventArgs>
{
    IMediaStreamSourceSampleRenderedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceSampleRenderedEventArgs>(m_ptr); }
};

struct IMediaStreamSourceSampleRequest :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceSampleRequest>
{
    IMediaStreamSourceSampleRequest(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceSampleRequest>(m_ptr); }
};

struct IMediaStreamSourceSampleRequestDeferral :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceSampleRequestDeferral>
{
    IMediaStreamSourceSampleRequestDeferral(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceSampleRequestDeferral>(m_ptr); }
};

struct IMediaStreamSourceSampleRequestedEventArgs :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceSampleRequestedEventArgs>
{
    IMediaStreamSourceSampleRequestedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceSampleRequestedEventArgs>(m_ptr); }
};

struct IMediaStreamSourceStartingEventArgs :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceStartingEventArgs>
{
    IMediaStreamSourceStartingEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceStartingEventArgs>(m_ptr); }
};

struct IMediaStreamSourceStartingRequest :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceStartingRequest>
{
    IMediaStreamSourceStartingRequest(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceStartingRequest>(m_ptr); }
};

struct IMediaStreamSourceStartingRequestDeferral :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceStartingRequestDeferral>
{
    IMediaStreamSourceStartingRequestDeferral(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceStartingRequestDeferral>(m_ptr); }
};

struct IMediaStreamSourceSwitchStreamsRequest :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceSwitchStreamsRequest>
{
    IMediaStreamSourceSwitchStreamsRequest(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceSwitchStreamsRequest>(m_ptr); }
};

struct IMediaStreamSourceSwitchStreamsRequestDeferral :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceSwitchStreamsRequestDeferral>
{
    IMediaStreamSourceSwitchStreamsRequestDeferral(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceSwitchStreamsRequestDeferral>(m_ptr); }
};

struct IMediaStreamSourceSwitchStreamsRequestedEventArgs :
    Windows::IInspectable,
    impl::consume<IMediaStreamSourceSwitchStreamsRequestedEventArgs>
{
    IMediaStreamSourceSwitchStreamsRequestedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaStreamSourceSwitchStreamsRequestedEventArgs>(m_ptr); }
};

struct IMediaTrack :
    Windows::IInspectable,
    impl::consume<IMediaTrack>
{
    IMediaTrack(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMediaTrack>(m_ptr); }
};

struct IMseSourceBuffer :
    Windows::IInspectable,
    impl::consume<IMseSourceBuffer>
{
    IMseSourceBuffer(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMseSourceBuffer>(m_ptr); }
};

struct IMseSourceBufferList :
    Windows::IInspectable,
    impl::consume<IMseSourceBufferList>
{
    IMseSourceBufferList(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMseSourceBufferList>(m_ptr); }
};

struct IMseStreamSource :
    Windows::IInspectable,
    impl::consume<IMseStreamSource>,
    impl::require<IMseStreamSource, Windows::Media::Core::IMediaSource>
{
    IMseStreamSource(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMseStreamSource>(m_ptr); }
};

struct IMseStreamSourceStatics :
    Windows::IInspectable,
    impl::consume<IMseStreamSourceStatics>
{
    IMseStreamSourceStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IMseStreamSourceStatics>(m_ptr); }
};

struct ISceneAnalysisEffect :
    Windows::IInspectable,
    impl::consume<ISceneAnalysisEffect>,
    impl::require<ISceneAnalysisEffect, Windows::Media::IMediaExtension>
{
    ISceneAnalysisEffect(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISceneAnalysisEffect>(m_ptr); }
};

struct ISceneAnalysisEffectFrame :
    Windows::IInspectable,
    impl::consume<ISceneAnalysisEffectFrame>,
    impl::require<ISceneAnalysisEffectFrame, Windows::Foundation::IClosable, Windows::Media::IMediaFrame>
{
    ISceneAnalysisEffectFrame(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISceneAnalysisEffectFrame>(m_ptr); }
};

struct ISceneAnalyzedEventArgs :
    Windows::IInspectable,
    impl::consume<ISceneAnalyzedEventArgs>
{
    ISceneAnalyzedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISceneAnalyzedEventArgs>(m_ptr); }
};

struct ISingleSelectMediaTrackList :
    Windows::IInspectable,
    impl::consume<ISingleSelectMediaTrackList>
{
    ISingleSelectMediaTrackList(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ISingleSelectMediaTrackList>(m_ptr); }
};

struct ITimedMetadataTrack :
    Windows::IInspectable,
    impl::consume<ITimedMetadataTrack>,
    impl::require<ITimedMetadataTrack, Windows::Media::Core::IMediaTrack>
{
    ITimedMetadataTrack(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedMetadataTrack>(m_ptr); }
};

struct ITimedMetadataTrack2 :
    Windows::IInspectable,
    impl::consume<ITimedMetadataTrack2>,
    impl::require<ITimedMetadataTrack2, Windows::Media::Core::IMediaTrack, Windows::Media::Core::ITimedMetadataTrack>
{
    ITimedMetadataTrack2(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedMetadataTrack2>(m_ptr); }
};

struct ITimedMetadataTrackError :
    Windows::IInspectable,
    impl::consume<ITimedMetadataTrackError>
{
    ITimedMetadataTrackError(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedMetadataTrackError>(m_ptr); }
};

struct ITimedMetadataTrackFactory :
    Windows::IInspectable,
    impl::consume<ITimedMetadataTrackFactory>
{
    ITimedMetadataTrackFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedMetadataTrackFactory>(m_ptr); }
};

struct ITimedMetadataTrackFailedEventArgs :
    Windows::IInspectable,
    impl::consume<ITimedMetadataTrackFailedEventArgs>
{
    ITimedMetadataTrackFailedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedMetadataTrackFailedEventArgs>(m_ptr); }
};

struct ITimedTextCue :
    Windows::IInspectable,
    impl::consume<ITimedTextCue>,
    impl::require<ITimedTextCue, Windows::Media::Core::IMediaCue>
{
    ITimedTextCue(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedTextCue>(m_ptr); }
};

struct ITimedTextLine :
    Windows::IInspectable,
    impl::consume<ITimedTextLine>
{
    ITimedTextLine(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedTextLine>(m_ptr); }
};

struct ITimedTextRegion :
    Windows::IInspectable,
    impl::consume<ITimedTextRegion>
{
    ITimedTextRegion(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedTextRegion>(m_ptr); }
};

struct ITimedTextSource :
    Windows::IInspectable,
    impl::consume<ITimedTextSource>
{
    ITimedTextSource(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedTextSource>(m_ptr); }
};

struct ITimedTextSourceResolveResultEventArgs :
    Windows::IInspectable,
    impl::consume<ITimedTextSourceResolveResultEventArgs>
{
    ITimedTextSourceResolveResultEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedTextSourceResolveResultEventArgs>(m_ptr); }
};

struct ITimedTextSourceStatics :
    Windows::IInspectable,
    impl::consume<ITimedTextSourceStatics>
{
    ITimedTextSourceStatics(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedTextSourceStatics>(m_ptr); }
};

struct ITimedTextStyle :
    Windows::IInspectable,
    impl::consume<ITimedTextStyle>
{
    ITimedTextStyle(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedTextStyle>(m_ptr); }
};

struct ITimedTextSubformat :
    Windows::IInspectable,
    impl::consume<ITimedTextSubformat>
{
    ITimedTextSubformat(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<ITimedTextSubformat>(m_ptr); }
};

struct IVideoStabilizationEffect :
    Windows::IInspectable,
    impl::consume<IVideoStabilizationEffect>,
    impl::require<IVideoStabilizationEffect, Windows::Media::IMediaExtension>
{
    IVideoStabilizationEffect(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoStabilizationEffect>(m_ptr); }
};

struct IVideoStabilizationEffectEnabledChangedEventArgs :
    Windows::IInspectable,
    impl::consume<IVideoStabilizationEffectEnabledChangedEventArgs>
{
    IVideoStabilizationEffectEnabledChangedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoStabilizationEffectEnabledChangedEventArgs>(m_ptr); }
};

struct IVideoStreamDescriptor :
    Windows::IInspectable,
    impl::consume<IVideoStreamDescriptor>,
    impl::require<IVideoStreamDescriptor, Windows::Media::Core::IMediaStreamDescriptor>
{
    IVideoStreamDescriptor(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoStreamDescriptor>(m_ptr); }
};

struct IVideoStreamDescriptorFactory :
    Windows::IInspectable,
    impl::consume<IVideoStreamDescriptorFactory>
{
    IVideoStreamDescriptorFactory(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoStreamDescriptorFactory>(m_ptr); }
};

struct IVideoTrack :
    Windows::IInspectable,
    impl::consume<IVideoTrack>
{
    IVideoTrack(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoTrack>(m_ptr); }
};

struct IVideoTrackOpenFailedEventArgs :
    Windows::IInspectable,
    impl::consume<IVideoTrackOpenFailedEventArgs>
{
    IVideoTrackOpenFailedEventArgs(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoTrackOpenFailedEventArgs>(m_ptr); }
};

struct IVideoTrackSupportInfo :
    Windows::IInspectable,
    impl::consume<IVideoTrackSupportInfo>
{
    IVideoTrackSupportInfo(std::nullptr_t = nullptr) noexcept {}
    auto operator->() const noexcept { return ptr<IVideoTrackSupportInfo>(m_ptr); }
};

}

}


<|start_filename|>UWP/RadialDevice/winrt/internal/Windows.UI.Xaml.2.h<|end_filename|>
// C++ for the Windows Runtime v1.0.161012.5
// Copyright (c) 2016 Microsoft Corporation. All rights reserved.

#pragma once

#include "Windows.UI.Xaml.1.h"
#include "Windows.Foundation.1.h"
#include "Windows.ApplicationModel.Core.2.h"

WINRT_EXPORT namespace winrt {

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
#define WINRT_GENERIC_c50898f6_c536_5f47_8583_8b2c2438a13b
template <> struct __declspec(uuid("c50898f6-c536-5f47-8583-8b2c2438a13b")) __declspec(novtable) EventHandler<Windows::IInspectable> : impl_EventHandler<Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_8b98aea9_64f0_5672_b30e_dfd9c2e4f6fe
#define WINRT_GENERIC_8b98aea9_64f0_5672_b30e_dfd9c2e4f6fe
template <> struct __declspec(uuid("8b98aea9-64f0-5672-b30e-dfd9c2e4f6fe")) __declspec(novtable) IAsyncOperation<winrt::Windows::ApplicationModel::DataTransfer::DataPackageOperation> : impl_IAsyncOperation<winrt::Windows::ApplicationModel::DataTransfer::DataPackageOperation> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_c192280d_3a09_5423_9dc5_67b83ebde41d
#define WINRT_GENERIC_c192280d_3a09_5423_9dc5_67b83ebde41d
template <> struct __declspec(uuid("c192280d-3a09-5423-9dc5-67b83ebde41d")) __declspec(novtable) IIterable<Windows::Foundation::Point> : impl_IIterable<Windows::Foundation::Point> {};
#endif

#ifndef WINRT_GENERIC_bd55a7fd_7501_5519_9ffb_d0074240db61
#define WINRT_GENERIC_bd55a7fd_7501_5519_9ffb_d0074240db61
template <> struct __declspec(uuid("bd55a7fd-7501-5519-9ffb-d0074240db61")) __declspec(novtable) IVector<Windows::UI::Xaml::SetterBase> : impl_IVector<Windows::UI::Xaml::SetterBase> {};
#endif

#ifndef WINRT_GENERIC_aafe70cb_90a8_5719_bd3e_f0b066ed1626
#define WINRT_GENERIC_aafe70cb_90a8_5719_bd3e_f0b066ed1626
template <> struct __declspec(uuid("aafe70cb-90a8-5719-bd3e-f0b066ed1626")) __declspec(novtable) IIterable<Windows::UI::Xaml::SetterBase> : impl_IIterable<Windows::UI::Xaml::SetterBase> {};
#endif

#ifndef WINRT_GENERIC_a488f35d_9ffc_5250_ac19_9416777b175a
#define WINRT_GENERIC_a488f35d_9ffc_5250_ac19_9416777b175a
template <> struct __declspec(uuid("a488f35d-9ffc-5250-ac19-9416777b175a")) __declspec(novtable) IVector<Windows::UI::Xaml::TriggerAction> : impl_IVector<Windows::UI::Xaml::TriggerAction> {};
#endif

#ifndef WINRT_GENERIC_a9d34579_8a6a_58bf_85fd_0f37324e2397
#define WINRT_GENERIC_a9d34579_8a6a_58bf_85fd_0f37324e2397
template <> struct __declspec(uuid("a9d34579-8a6a-58bf-85fd-0f37324e2397")) __declspec(novtable) IIterable<Windows::UI::Xaml::TriggerAction> : impl_IIterable<Windows::UI::Xaml::TriggerAction> {};
#endif

#ifndef WINRT_GENERIC_9149863b_b78b_5fb6_a0a1_9ebf6bbc3407
#define WINRT_GENERIC_9149863b_b78b_5fb6_a0a1_9ebf6bbc3407
template <> struct __declspec(uuid("9149863b-b78b-5fb6-a0a1-9ebf6bbc3407")) __declspec(novtable) IVector<Windows::UI::Xaml::TriggerBase> : impl_IVector<Windows::UI::Xaml::TriggerBase> {};
#endif

#ifndef WINRT_GENERIC_d697764f_4e15_5888_a2a5_7b4cf0eb07a5
#define WINRT_GENERIC_d697764f_4e15_5888_a2a5_7b4cf0eb07a5
template <> struct __declspec(uuid("d697764f-4e15-5888-a2a5-7b4cf0eb07a5")) __declspec(novtable) IIterable<Windows::UI::Xaml::TriggerBase> : impl_IIterable<Windows::UI::Xaml::TriggerBase> {};
#endif

#ifndef WINRT_GENERIC_fac6f4d2_96fd_5ceb_80bf_46ac6529fc65
#define WINRT_GENERIC_fac6f4d2_96fd_5ceb_80bf_46ac6529fc65
template <> struct __declspec(uuid("fac6f4d2-96fd-5ceb-80bf-46ac6529fc65")) __declspec(novtable) IObservableVector<Windows::UI::Xaml::DependencyObject> : impl_IObservableVector<Windows::UI::Xaml::DependencyObject> {};
#endif

#ifndef WINRT_GENERIC_771b857e_ab5c_5db8_a021_397c92cdc44c
#define WINRT_GENERIC_771b857e_ab5c_5db8_a021_397c92cdc44c
template <> struct __declspec(uuid("771b857e-ab5c-5db8-a021-397c92cdc44c")) __declspec(novtable) IVector<Windows::UI::Xaml::DependencyObject> : impl_IVector<Windows::UI::Xaml::DependencyObject> {};
#endif

#ifndef WINRT_GENERIC_f66c6bd3_55b4_5bbb_b82a_6d9ce383091a
#define WINRT_GENERIC_f66c6bd3_55b4_5bbb_b82a_6d9ce383091a
template <> struct __declspec(uuid("f66c6bd3-55b4-5bbb-b82a-6d9ce383091a")) __declspec(novtable) IIterable<Windows::UI::Xaml::DependencyObject> : impl_IIterable<Windows::UI::Xaml::DependencyObject> {};
#endif

#ifndef WINRT_GENERIC_fe820a0c_694d_518b_8ec5_372993f6ceaf
#define WINRT_GENERIC_fe820a0c_694d_518b_8ec5_372993f6ceaf
template <> struct __declspec(uuid("fe820a0c-694d-518b-8ec5-372993f6ceaf")) __declspec(novtable) IVector<Windows::UI::Xaml::ResourceDictionary> : impl_IVector<Windows::UI::Xaml::ResourceDictionary> {};
#endif

#ifndef WINRT_GENERIC_f5f69427_55ed_5512_8429_d4f6626dfcdd
#define WINRT_GENERIC_f5f69427_55ed_5512_8429_d4f6626dfcdd
template <> struct __declspec(uuid("f5f69427-55ed-5512-8429-d4f6626dfcdd")) __declspec(novtable) IMap<Windows::IInspectable, Windows::IInspectable> : impl_IMap<Windows::IInspectable, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_59e7ae0c_c29d_5ad6_bef5_dedb52a198e1
#define WINRT_GENERIC_59e7ae0c_c29d_5ad6_bef5_dedb52a198e1
template <> struct __declspec(uuid("59e7ae0c-c29d-5ad6-bef5-dedb52a198e1")) __declspec(novtable) IKeyValuePair<Windows::IInspectable, Windows::IInspectable> : impl_IKeyValuePair<Windows::IInspectable, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_6250f79f_7668_51e9_86a3_3821217a6631
#define WINRT_GENERIC_6250f79f_7668_51e9_86a3_3821217a6631
template <> struct __declspec(uuid("6250f79f-7668-51e9-86a3-3821217a6631")) __declspec(novtable) IVectorView<Windows::UI::Xaml::Input::Pointer> : impl_IVectorView<Windows::UI::Xaml::Input::Pointer> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_ecc4b13b_146c_5963_b8b3_024c5b9b95e4
#define WINRT_GENERIC_ecc4b13b_146c_5963_b8b3_024c5b9b95e4
template <> struct __declspec(uuid("ecc4b13b-146c-5963-b8b3-024c5b9b95e4")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::DragStartingEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::DragStartingEventArgs> {};
#endif

#ifndef WINRT_GENERIC_ffd72e78_ec1f_5bcc_9d13_ff5fbb040562
#define WINRT_GENERIC_ffd72e78_ec1f_5bcc_9d13_ff5fbb040562
template <> struct __declspec(uuid("ffd72e78-ec1f-5bcc-9d13-ff5fbb040562")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::DropCompletedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::DropCompletedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_41d66b93_d17b_59b2_b916_8e813fecb9bd
#define WINRT_GENERIC_41d66b93_d17b_59b2_b916_8e813fecb9bd
template <> struct __declspec(uuid("41d66b93-d17b-59b2-b916-8e813fecb9bd")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::Input::ContextRequestedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::Input::ContextRequestedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_657f28aa_8c76_501f_b032_d8dc93595e76
#define WINRT_GENERIC_657f28aa_8c76_501f_b032_d8dc93595e76
template <> struct __declspec(uuid("657f28aa-8c76-501f-b032-d8dc93595e76")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::RoutedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::RoutedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_5871821a_2491_5cec_a457_21996ca4efaf
#define WINRT_GENERIC_5871821a_2491_5cec_a457_21996ca4efaf
template <> struct __declspec(uuid("5871821a-2491-5cec-a457-21996ca4efaf")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::Input::AccessKeyDisplayRequestedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_2831903f_655e_5464_828c_56a8b4c65f1e
#define WINRT_GENERIC_2831903f_655e_5464_828c_56a8b4c65f1e
template <> struct __declspec(uuid("2831903f-655e-5464-828c-56a8b4c65f1e")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::Input::AccessKeyDisplayDismissedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_a5c9a137_f716_5d8d_92c4_02f171936fa1
#define WINRT_GENERIC_a5c9a137_f716_5d8d_92c4_02f171936fa1
template <> struct __declspec(uuid("a5c9a137-f716-5d8d-92c4-02f171936fa1")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::UIElement, Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_72dbaa30_9016_51d9_8500_4b215b5cb468
#define WINRT_GENERIC_72dbaa30_9016_51d9_8500_4b215b5cb468
template <> struct __declspec(uuid("72dbaa30-9016-51d9-8500-4b215b5cb468")) __declspec(novtable) IVector<Windows::UI::Xaml::StateTriggerBase> : impl_IVector<Windows::UI::Xaml::StateTriggerBase> {};
#endif

#ifndef WINRT_GENERIC_5aebeb8c_7ef7_5975_ba0a_6c19a529bb72
#define WINRT_GENERIC_5aebeb8c_7ef7_5975_ba0a_6c19a529bb72
template <> struct __declspec(uuid("5aebeb8c-7ef7-5975-ba0a-6c19a529bb72")) __declspec(novtable) IVector<Windows::UI::Xaml::VisualTransition> : impl_IVector<Windows::UI::Xaml::VisualTransition> {};
#endif

#ifndef WINRT_GENERIC_5b6d19b8_bc0c_5a77_a406_c01c12fd46c3
#define WINRT_GENERIC_5b6d19b8_bc0c_5a77_a406_c01c12fd46c3
template <> struct __declspec(uuid("5b6d19b8-bc0c-5a77-a406-c01c12fd46c3")) __declspec(novtable) IVector<Windows::UI::Xaml::VisualState> : impl_IVector<Windows::UI::Xaml::VisualState> {};
#endif

#ifndef WINRT_GENERIC_729a0392_675e_58e4_b6a3_0457bb9ea968
#define WINRT_GENERIC_729a0392_675e_58e4_b6a3_0457bb9ea968
template <> struct __declspec(uuid("729a0392-675e-58e4-b6a3-0457bb9ea968")) __declspec(novtable) IVector<Windows::UI::Xaml::VisualStateGroup> : impl_IVector<Windows::UI::Xaml::VisualStateGroup> {};
#endif


}

namespace ABI::Windows::Foundation {

#ifndef WINRT_GENERIC_b01c8a21_de6f_5edd_8796_300e3fe66382
#define WINRT_GENERIC_b01c8a21_de6f_5edd_8796_300e3fe66382
template <> struct __declspec(uuid("b01c8a21-de6f-5edd-8796-300e3fe66382")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::FrameworkElement, Windows::UI::Xaml::DataContextChangedEventArgs> : impl_TypedEventHandler<Windows::UI::Xaml::FrameworkElement, Windows::UI::Xaml::DataContextChangedEventArgs> {};
#endif

#ifndef WINRT_GENERIC_c229f252_dede_5d42_a01a_8479d56a7d2f
#define WINRT_GENERIC_c229f252_dede_5d42_a01a_8479d56a7d2f
template <> struct __declspec(uuid("c229f252-dede-5d42-a01a-8479d56a7d2f")) __declspec(novtable) TypedEventHandler<Windows::UI::Xaml::FrameworkElement, Windows::IInspectable> : impl_TypedEventHandler<Windows::UI::Xaml::FrameworkElement, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_add21d46_17df_5a43_a685_3262fce84643
#define WINRT_GENERIC_add21d46_17df_5a43_a685_3262fce84643
template <> struct __declspec(uuid("add21d46-17df-5a43-a685-3262fce84643")) __declspec(novtable) AsyncOperationCompletedHandler<winrt::Windows::ApplicationModel::DataTransfer::DataPackageOperation> : impl_AsyncOperationCompletedHandler<winrt::Windows::ApplicationModel::DataTransfer::DataPackageOperation> {};
#endif


}

namespace ABI::Windows::Foundation::Collections {

#ifndef WINRT_GENERIC_c602b59e_0a8e_5e99_b478_2b564585278d
#define WINRT_GENERIC_c602b59e_0a8e_5e99_b478_2b564585278d
template <> struct __declspec(uuid("c602b59e-0a8e-5e99-b478-2b564585278d")) __declspec(novtable) IIterator<Windows::Foundation::Point> : impl_IIterator<Windows::Foundation::Point> {};
#endif

#ifndef WINRT_GENERIC_3198322e_2527_58d1_8d92_9d22b977d255
#define WINRT_GENERIC_3198322e_2527_58d1_8d92_9d22b977d255
template <> struct __declspec(uuid("3198322e-2527-58d1-8d92-9d22b977d255")) __declspec(novtable) IIterator<Windows::UI::Xaml::SetterBase> : impl_IIterator<Windows::UI::Xaml::SetterBase> {};
#endif

#ifndef WINRT_GENERIC_88eef29a_842b_55c2_a936_2b9d75e923e5
#define WINRT_GENERIC_88eef29a_842b_55c2_a936_2b9d75e923e5
template <> struct __declspec(uuid("88eef29a-842b-55c2-a936-2b9d75e923e5")) __declspec(novtable) IVectorView<Windows::UI::Xaml::SetterBase> : impl_IVectorView<Windows::UI::Xaml::SetterBase> {};
#endif

#ifndef WINRT_GENERIC_fa0c6c2e_f81a_543c_b8b6_5c18d36711b0
#define WINRT_GENERIC_fa0c6c2e_f81a_543c_b8b6_5c18d36711b0
template <> struct __declspec(uuid("fa0c6c2e-f81a-543c-b8b6-5c18d36711b0")) __declspec(novtable) IIterator<Windows::UI::Xaml::TriggerAction> : impl_IIterator<Windows::UI::Xaml::TriggerAction> {};
#endif

#ifndef WINRT_GENERIC_b6c7ce15_6a2f_5bbb_9efb_49be20b928a1
#define WINRT_GENERIC_b6c7ce15_6a2f_5bbb_9efb_49be20b928a1
template <> struct __declspec(uuid("b6c7ce15-6a2f-5bbb-9efb-49be20b928a1")) __declspec(novtable) IVectorView<Windows::UI::Xaml::TriggerAction> : impl_IVectorView<Windows::UI::Xaml::TriggerAction> {};
#endif

#ifndef WINRT_GENERIC_d317c81a_5dda_59f6_8ce9_44f2877bfae8
#define WINRT_GENERIC_d317c81a_5dda_59f6_8ce9_44f2877bfae8
template <> struct __declspec(uuid("d317c81a-5dda-59f6-8ce9-44f2877bfae8")) __declspec(novtable) IIterator<Windows::UI::Xaml::TriggerBase> : impl_IIterator<Windows::UI::Xaml::TriggerBase> {};
#endif

#ifndef WINRT_GENERIC_6c97f246_4010_5c09_9722_39fcc3d0647d
#define WINRT_GENERIC_6c97f246_4010_5c09_9722_39fcc3d0647d
template <> struct __declspec(uuid("6c97f246-4010-5c09-9722-39fcc3d0647d")) __declspec(novtable) IVectorView<Windows::UI::Xaml::TriggerBase> : impl_IVectorView<Windows::UI::Xaml::TriggerBase> {};
#endif

#ifndef WINRT_GENERIC_b62dec93_a7a5_5ff5_b2d2_6bd20ca0bd4d
#define WINRT_GENERIC_b62dec93_a7a5_5ff5_b2d2_6bd20ca0bd4d
template <> struct __declspec(uuid("b62dec93-a7a5-5ff5-b2d2-6bd20ca0bd4d")) __declspec(novtable) VectorChangedEventHandler<Windows::UI::Xaml::DependencyObject> : impl_VectorChangedEventHandler<Windows::UI::Xaml::DependencyObject> {};
#endif

#ifndef WINRT_GENERIC_29f8d454_905d_587e_b9d8_bfd418805a65
#define WINRT_GENERIC_29f8d454_905d_587e_b9d8_bfd418805a65
template <> struct __declspec(uuid("29f8d454-905d-587e-b9d8-bfd418805a65")) __declspec(novtable) IIterator<Windows::UI::Xaml::DependencyObject> : impl_IIterator<Windows::UI::Xaml::DependencyObject> {};
#endif

#ifndef WINRT_GENERIC_fe750d77_1307_5df2_a021_1c7a8d6b80ad
#define WINRT_GENERIC_fe750d77_1307_5df2_a021_1c7a8d6b80ad
template <> struct __declspec(uuid("fe750d77-1307-5df2-a021-1c7a8d6b80ad")) __declspec(novtable) IVectorView<Windows::UI::Xaml::DependencyObject> : impl_IVectorView<Windows::UI::Xaml::DependencyObject> {};
#endif

#ifndef WINRT_GENERIC_849a2f3a_2e5e_58a8_b76e_73450ea680c0
#define WINRT_GENERIC_849a2f3a_2e5e_58a8_b76e_73450ea680c0
template <> struct __declspec(uuid("849a2f3a-2e5e-58a8-b76e-73450ea680c0")) __declspec(novtable) IIterator<Windows::UI::Xaml::ResourceDictionary> : impl_IIterator<Windows::UI::Xaml::ResourceDictionary> {};
#endif

#ifndef WINRT_GENERIC_eaf20635_a462_5397_bee1_f7a09504653b
#define WINRT_GENERIC_eaf20635_a462_5397_bee1_f7a09504653b
template <> struct __declspec(uuid("eaf20635-a462-5397-bee1-f7a09504653b")) __declspec(novtable) IIterable<Windows::UI::Xaml::ResourceDictionary> : impl_IIterable<Windows::UI::Xaml::ResourceDictionary> {};
#endif

#ifndef WINRT_GENERIC_36ce8ed8_c1a9_55b7_86dc_b41b8ed8edf4
#define WINRT_GENERIC_36ce8ed8_c1a9_55b7_86dc_b41b8ed8edf4
template <> struct __declspec(uuid("36ce8ed8-c1a9-55b7-86dc-b41b8ed8edf4")) __declspec(novtable) IVectorView<Windows::UI::Xaml::ResourceDictionary> : impl_IVectorView<Windows::UI::Xaml::ResourceDictionary> {};
#endif

#ifndef WINRT_GENERIC_efe76d10_cb60_50ad_8a4f_6885cd6212a1
#define WINRT_GENERIC_efe76d10_cb60_50ad_8a4f_6885cd6212a1
template <> struct __declspec(uuid("efe76d10-cb60-50ad-8a4f-6885cd6212a1")) __declspec(novtable) IMapView<Windows::IInspectable, Windows::IInspectable> : impl_IMapView<Windows::IInspectable, Windows::IInspectable> {};
#endif

#ifndef WINRT_GENERIC_8cb1347d_8888_5fb3_bffd_e6caf61b4f03
#define WINRT_GENERIC_8cb1347d_8888_5fb3_bffd_e6caf61b4f03
template <> struct __declspec(uuid("8cb1347d-8888-5fb3-bffd-e6caf61b4f03")) __declspec(novtable) IIterator<Windows::UI::Xaml::Input::Pointer> : impl_IIterator<Windows::UI::Xaml::Input::Pointer> {};
#endif

#ifndef WINRT_GENERIC_6cf9f859_2234_510d_860a_db328030cbcc
#define WINRT_GENERIC_6cf9f859_2234_510d_860a_db328030cbcc
template <> struct __declspec(uuid("6cf9f859-2234-510d-860a-db328030cbcc")) __declspec(novtable) IIterable<Windows::UI::Xaml::Input::Pointer> : impl_IIterable<Windows::UI::Xaml::Input::Pointer> {};
#endif

#ifndef WINRT_GENERIC_d78b9c25_3214_54c6_8405_479344309277
#define WINRT_GENERIC_d78b9c25_3214_54c6_8405_479344309277
template <> struct __declspec(uuid("d78b9c25-3214-54c6-8405-479344309277")) __declspec(novtable) IIterator<Windows::UI::Xaml::StateTriggerBase> : impl_IIterator<Windows::UI::Xaml::StateTriggerBase> {};
#endif

#ifndef WINRT_GENERIC_073325bc_8f0f_56d8_b521_6be47644c554
#define WINRT_GENERIC_073325bc_8f0f_56d8_b521_6be47644c554
template <> struct __declspec(uuid("073325bc-8f0f-56d8-b521-6be47644c554")) __declspec(novtable) IIterable<Windows::UI::Xaml::StateTriggerBase> : impl_IIterable<Windows::UI::Xaml::StateTriggerBase> {};
#endif

#ifndef WINRT_GENERIC_2bf3a979_a6dc_592b_98ee_cc7c3d9caab2
#define WINRT_GENERIC_2bf3a979_a6dc_592b_98ee_cc7c3d9caab2
template <> struct __declspec(uuid("2bf3a979-a6dc-592b-98ee-cc7c3d9caab2")) __declspec(novtable) IVectorView<Windows::UI::Xaml::StateTriggerBase> : impl_IVectorView<Windows::UI::Xaml::StateTriggerBase> {};
#endif

#ifndef WINRT_GENERIC_5ae4cb71_a8b8_506b_b31b_62db11f66257
#define WINRT_GENERIC_5ae4cb71_a8b8_506b_b31b_62db11f66257
template <> struct __declspec(uuid("5ae4cb71-a8b8-506b-b31b-62db11f66257")) __declspec(novtable) IIterator<Windows::UI::Xaml::VisualTransition> : impl_IIterator<Windows::UI::Xaml::VisualTransition> {};
#endif

#ifndef WINRT_GENERIC_017a8eb0_e942_5f25_a945_205a9470b9fc
#define WINRT_GENERIC_017a8eb0_e942_5f25_a945_205a9470b9fc
template <> struct __declspec(uuid("017a8eb0-e942-5f25-a945-205a9470b9fc")) __declspec(novtable) IIterable<Windows::UI::Xaml::VisualTransition> : impl_IIterable<Windows::UI::Xaml::VisualTransition> {};
#endif

#ifndef WINRT_GENERIC_bb3d4d2f_3406_5f29_812a_bb1e437863da
#define WINRT_GENERIC_bb3d4d2f_3406_5f29_812a_bb1e437863da
template <> struct __declspec(uuid("bb3d4d2f-3406-5f29-812a-bb1e437863da")) __declspec(novtable) IVectorView<Windows::UI::Xaml::VisualTransition> : impl_IVectorView<Windows::UI::Xaml::VisualTransition> {};
#endif

#ifndef WINRT_GENERIC_f20bd8bc_6dda_5c71_bd39_c57137c5a4ed
#define WINRT_GENERIC_f20bd8bc_6dda_5c71_bd39_c57137c5a4ed
template <> struct __declspec(uuid("f20bd8bc-6dda-5c71-bd39-c57137c5a4ed")) __declspec(novtable) IIterator<Windows::UI::Xaml::VisualState> : impl_IIterator<Windows::UI::Xaml::VisualState> {};
#endif

#ifndef WINRT_GENERIC_1fb071a3_a064_5619_a94e_23c01a4cbf3a
#define WINRT_GENERIC_1fb071a3_a064_5619_a94e_23c01a4cbf3a
template <> struct __declspec(uuid("1fb071a3-a064-5619-a94e-23c01a4cbf3a")) __declspec(novtable) IIterable<Windows::UI::Xaml::VisualState> : impl_IIterable<Windows::UI::Xa
[cell cut: 31,493,803 characters, first 4,193,927 kept]