// C++/WinRT v2.0.250303.1

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

#pragma once
#ifndef WINRT_Windows_Security_Authentication_Web_Core_H
#define WINRT_Windows_Security_Authentication_Web_Core_H
#include "winrt/base.h"
static_assert(winrt::check_version(CPPWINRT_VERSION, "2.0.250303.1"), "Mismatched C++/WinRT headers.");
#define CPPWINRT_VERSION "2.0.250303.1"
#include "winrt/Windows.Security.Authentication.Web.h"
#include "winrt/impl/Windows.Foundation.2.h"
#include "winrt/impl/Windows.Foundation.Collections.2.h"
#include "winrt/impl/Windows.Security.Credentials.2.h"
#include "winrt/impl/Windows.System.2.h"
#include "winrt/impl/Windows.Security.Authentication.Web.Core.2.h"
namespace winrt::impl
{
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IFindAllAccountsResult<D>::Accounts() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Accounts(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult>**)this;
            check_hresult(_winrt_abi_type->get_Accounts(&value));
        }
        return winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Security::Credentials::WebAccount>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IFindAllAccountsResult<D>::Status() const
    {
        winrt::Windows::Security::Authentication::Web::Core::FindAllWebAccountsStatus value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Status(reinterpret_cast<int32_t*>(&value)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult>**)this;
            check_hresult(_winrt_abi_type->get_Status(reinterpret_cast<int32_t*>(&value)));
        }
        return value;
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IFindAllAccountsResult<D>::ProviderError() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ProviderError(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult>**)this;
            check_hresult(_winrt_abi_type->get_ProviderError(&value));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebProviderError{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountEventArgs<D>::Account() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountEventArgs>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAccountEventArgs, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountEventArgs>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Account(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountEventArgs>**)this;
            check_hresult(_winrt_abi_type->get_Account(&value));
        }
        return winrt::Windows::Security::Credentials::WebAccount{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor<D>::Updated(winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Security::Authentication::Web::Core::WebAccountEventArgs> const& handler) const
    {
        winrt::event_token token{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->add_Updated(*(void**)(&handler), put_abi(token)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)this;
            check_hresult(_winrt_abi_type->add_Updated(*(void**)(&handler), put_abi(token)));
        }
        return token;
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor<D>::Updated(auto_revoke_t, winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Security::Authentication::Web::Core::WebAccountEventArgs> const& handler) const
    {
        return impl::make_event_revoker<D, Updated_revoker>(this, Updated(handler));
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor<D>::Updated(winrt::event_token const& token) const noexcept
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)&_winrt_casted_result;
            _winrt_abi_type->remove_Updated(impl::bind_in(token));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)this;
            _winrt_abi_type->remove_Updated(impl::bind_in(token));
        }
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor<D>::Removed(winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Security::Authentication::Web::Core::WebAccountEventArgs> const& handler) const
    {
        winrt::event_token token{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->add_Removed(*(void**)(&handler), put_abi(token)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)this;
            check_hresult(_winrt_abi_type->add_Removed(*(void**)(&handler), put_abi(token)));
        }
        return token;
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor<D>::Removed(auto_revoke_t, winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Security::Authentication::Web::Core::WebAccountEventArgs> const& handler) const
    {
        return impl::make_event_revoker<D, Removed_revoker>(this, Removed(handler));
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor<D>::Removed(winrt::event_token const& token) const noexcept
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)&_winrt_casted_result;
            _winrt_abi_type->remove_Removed(impl::bind_in(token));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)this;
            _winrt_abi_type->remove_Removed(impl::bind_in(token));
        }
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor<D>::DefaultSignInAccountChanged(winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Foundation::IInspectable> const& handler) const
    {
        winrt::event_token token{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->add_DefaultSignInAccountChanged(*(void**)(&handler), put_abi(token)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)this;
            check_hresult(_winrt_abi_type->add_DefaultSignInAccountChanged(*(void**)(&handler), put_abi(token)));
        }
        return token;
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor<D>::DefaultSignInAccountChanged(auto_revoke_t, winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Foundation::IInspectable> const& handler) const
    {
        return impl::make_event_revoker<D, DefaultSignInAccountChanged_revoker>(this, DefaultSignInAccountChanged(handler));
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor<D>::DefaultSignInAccountChanged(winrt::event_token const& token) const noexcept
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)&_winrt_casted_result;
            _winrt_abi_type->remove_DefaultSignInAccountChanged(impl::bind_in(token));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>**)this;
            _winrt_abi_type->remove_DefaultSignInAccountChanged(impl::bind_in(token));
        }
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor2<D>::AccountPictureUpdated(winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Security::Authentication::Web::Core::WebAccountEventArgs> const& handler) const
    {
        winrt::event_token token{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor2>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor2, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor2>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->add_AccountPictureUpdated(*(void**)(&handler), put_abi(token)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor2>**)this;
            check_hresult(_winrt_abi_type->add_AccountPictureUpdated(*(void**)(&handler), put_abi(token)));
        }
        return token;
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor2<D>::AccountPictureUpdated(auto_revoke_t, winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Security::Authentication::Web::Core::WebAccountEventArgs> const& handler) const
    {
        return impl::make_event_revoker<D, AccountPictureUpdated_revoker>(this, AccountPictureUpdated(handler));
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAccountMonitor2<D>::AccountPictureUpdated(winrt::event_token const& token) const noexcept
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor2>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor2, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor2>**)&_winrt_casted_result;
            _winrt_abi_type->remove_AccountPictureUpdated(impl::bind_in(token));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor2>**)this;
            _winrt_abi_type->remove_AccountPictureUpdated(impl::bind_in(token));
        }
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationAddAccountResponse<D>::WebAccount() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponse>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponse, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponse>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_WebAccount(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponse>**)this;
            check_hresult(_winrt_abi_type->get_WebAccount(&value));
        }
        return winrt::Windows::Security::Credentials::WebAccount{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationAddAccountResponse<D>::Properties() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponse>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponse, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponse>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Properties(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponse>**)this;
            check_hresult(_winrt_abi_type->get_Properties(&value));
        }
        return winrt::Windows::Foundation::Collections::IMap<hstring, hstring>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationAddAccountResponseFactory<D>::CreateWithAccount(winrt::Windows::Security::Credentials::WebAccount const& webAccount) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponseFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponseFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponseFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateWithAccount(*(void**)(&webAccount), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponseFactory>**)this;
            check_hresult(_winrt_abi_type->CreateWithAccount(*(void**)(&webAccount), &value));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationAddAccountResponse{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationAddAccountResult<D>::ResponseData() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ResponseData(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult>**)this;
            check_hresult(_winrt_abi_type->get_ResponseData(&value));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationAddAccountResponse{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationAddAccountResult<D>::ResponseStatus() const
    {
        winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationAddAccountStatus value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ResponseStatus(reinterpret_cast<int32_t*>(&value)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult>**)this;
            check_hresult(_winrt_abi_type->get_ResponseStatus(reinterpret_cast<int32_t*>(&value)));
        }
        return value;
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationAddAccountResult<D>::ResponseError() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ResponseError(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult>**)this;
            check_hresult(_winrt_abi_type->get_ResponseError(&value));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebProviderError{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics<D>::GetTokenSilentlyAsync(winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const& request) const
    {
        void* asyncInfo{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetTokenSilentlyAsync(*(void**)(&request), &asyncInfo));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)this;
            check_hresult(_winrt_abi_type->GetTokenSilentlyAsync(*(void**)(&request), &asyncInfo));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestResult>{ asyncInfo, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics<D>::GetTokenSilentlyAsync(winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const& request, winrt::Windows::Security::Credentials::WebAccount const& webAccount) const
    {
        void* asyncInfo{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->GetTokenSilentlyWithWebAccountAsync(*(void**)(&request), *(void**)(&webAccount), &asyncInfo));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)this;
            check_hresult(_winrt_abi_type->GetTokenSilentlyWithWebAccountAsync(*(void**)(&request), *(void**)(&webAccount), &asyncInfo));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestResult>{ asyncInfo, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics<D>::RequestTokenAsync(winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const& request) const
    {
        void* asyncInfo{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->RequestTokenAsync(*(void**)(&request), &asyncInfo));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)this;
            check_hresult(_winrt_abi_type->RequestTokenAsync(*(void**)(&request), &asyncInfo));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestResult>{ asyncInfo, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics<D>::RequestTokenAsync(winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const& request, winrt::Windows::Security::Credentials::WebAccount const& webAccount) const
    {
        void* asyncInfo{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->RequestTokenWithWebAccountAsync(*(void**)(&request), *(void**)(&webAccount), &asyncInfo));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)this;
            check_hresult(_winrt_abi_type->RequestTokenWithWebAccountAsync(*(void**)(&request), *(void**)(&webAccount), &asyncInfo));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestResult>{ asyncInfo, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics<D>::FindAccountAsync(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& webAccountId) const
    {
        void* asyncInfo{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->FindAccountAsync(*(void**)(&provider), *(void**)(&webAccountId), &asyncInfo));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)this;
            check_hresult(_winrt_abi_type->FindAccountAsync(*(void**)(&provider), *(void**)(&webAccountId), &asyncInfo));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccount>{ asyncInfo, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics<D>::FindAccountProviderAsync(param::hstring const& webAccountProviderId) const
    {
        void* asyncInfo{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->FindAccountProviderAsync(*(void**)(&webAccountProviderId), &asyncInfo));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)this;
            check_hresult(_winrt_abi_type->FindAccountProviderAsync(*(void**)(&webAccountProviderId), &asyncInfo));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>{ asyncInfo, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics<D>::FindAccountProviderAsync(param::hstring const& webAccountProviderId, param::hstring const& authority) const
    {
        void* asyncInfo{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->FindAccountProviderWithAuthorityAsync(*(void**)(&webAccountProviderId), *(void**)(&authority), &asyncInfo));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>**)this;
            check_hresult(_winrt_abi_type->FindAccountProviderWithAuthorityAsync(*(void**)(&webAccountProviderId), *(void**)(&authority), &asyncInfo));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>{ asyncInfo, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics2<D>::FindAccountProviderAsync(param::hstring const& webAccountProviderId, param::hstring const& authority, winrt::Windows::System::User const& user) const
    {
        void* asyncInfo{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics2>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics2, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics2>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->FindAccountProviderWithAuthorityForUserAsync(*(void**)(&webAccountProviderId), *(void**)(&authority), *(void**)(&user), &asyncInfo));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics2>**)this;
            check_hresult(_winrt_abi_type->FindAccountProviderWithAuthorityForUserAsync(*(void**)(&webAccountProviderId), *(void**)(&authority), *(void**)(&user), &asyncInfo));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>{ asyncInfo, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics3<D>::CreateWebAccountMonitor(param::iterable<winrt::Windows::Security::Credentials::WebAccount> const& webAccounts) const
    {
        void* result{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateWebAccountMonitor(*(void**)(&webAccounts), &result));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics3>**)this;
            check_hresult(_winrt_abi_type->CreateWebAccountMonitor(*(void**)(&webAccounts), &result));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor{ result, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics4<D>::FindAllAccountsAsync(winrt::Windows::Security::Credentials::WebAccountProvider const& provider) const
    {
        void* operation{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->FindAllAccountsAsync(*(void**)(&provider), &operation));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>**)this;
            check_hresult(_winrt_abi_type->FindAllAccountsAsync(*(void**)(&provider), &operation));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::FindAllAccountsResult>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics4<D>::FindAllAccountsAsync(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& clientId) const
    {
        void* operation{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->FindAllAccountsWithClientIdAsync(*(void**)(&provider), *(void**)(&clientId), &operation));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>**)this;
            check_hresult(_winrt_abi_type->FindAllAccountsWithClientIdAsync(*(void**)(&provider), *(void**)(&clientId), &operation));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::FindAllAccountsResult>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics4<D>::FindSystemAccountProviderAsync(param::hstring const& webAccountProviderId) const
    {
        void* operation{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->FindSystemAccountProviderAsync(*(void**)(&webAccountProviderId), &operation));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>**)this;
            check_hresult(_winrt_abi_type->FindSystemAccountProviderAsync(*(void**)(&webAccountProviderId), &operation));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics4<D>::FindSystemAccountProviderAsync(param::hstring const& webAccountProviderId, param::hstring const& authority) const
    {
        void* operation{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->FindSystemAccountProviderWithAuthorityAsync(*(void**)(&webAccountProviderId), *(void**)(&authority), &operation));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>**)this;
            check_hresult(_winrt_abi_type->FindSystemAccountProviderWithAuthorityAsync(*(void**)(&webAccountProviderId), *(void**)(&authority), &operation));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics4<D>::FindSystemAccountProviderAsync(param::hstring const& webAccountProviderId, param::hstring const& authority, winrt::Windows::System::User const& user) const
    {
        void* operation{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->FindSystemAccountProviderWithAuthorityForUserAsync(*(void**)(&webAccountProviderId), *(void**)(&authority), *(void**)(&user), &operation));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>**)this;
            check_hresult(_winrt_abi_type->FindSystemAccountProviderWithAuthorityForUserAsync(*(void**)(&webAccountProviderId), *(void**)(&authority), *(void**)(&user), &operation));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationCoreManagerStatics5<D>::AddAccountWithTransferTokenAsync(winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationTransferTokenRequest const& request) const
    {
        void* operation{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics5>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics5, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics5>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->AddAccountWithTransferTokenAsync(*(void**)(&request), &operation));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics5>**)this;
            check_hresult(_winrt_abi_type->AddAccountWithTransferTokenAsync(*(void**)(&request), &operation));
        }
        return winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationAddAccountResult>{ operation, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationTransferTokenRequest<D>::WebAccountProvider() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_WebAccountProvider(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)this;
            check_hresult(_winrt_abi_type->get_WebAccountProvider(&value));
        }
        return winrt::Windows::Security::Credentials::WebAccountProvider{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationTransferTokenRequest<D>::TransferToken() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_TransferToken(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)this;
            check_hresult(_winrt_abi_type->get_TransferToken(&value));
        }
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationTransferTokenRequest<D>::TransferToken(param::hstring const& value) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->put_TransferToken(*(void**)(&value)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)this;
            check_hresult(_winrt_abi_type->put_TransferToken(*(void**)(&value)));
        }
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationTransferTokenRequest<D>::Properties() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Properties(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)this;
            check_hresult(_winrt_abi_type->get_Properties(&value));
        }
        return winrt::Windows::Foundation::Collections::IMap<hstring, hstring>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationTransferTokenRequest<D>::CorrelationId() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_CorrelationId(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)this;
            check_hresult(_winrt_abi_type->get_CorrelationId(&value));
        }
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationTransferTokenRequest<D>::CorrelationId(param::hstring const& value) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->put_CorrelationId(*(void**)(&value)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>**)this;
            check_hresult(_winrt_abi_type->put_CorrelationId(*(void**)(&value)));
        }
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationTransferTokenRequestFactory<D>::Create(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& transferToken) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequestFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequestFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequestFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->Create(*(void**)(&provider), *(void**)(&transferToken), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequestFactory>**)this;
            check_hresult(_winrt_abi_type->Create(*(void**)(&provider), *(void**)(&transferToken), &value));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationTransferTokenRequest{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebAuthenticationTransferTokenRequestFactory<D>::CreateWithCorrelationId(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& transferToken, param::hstring const& correlationId) const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequestFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequestFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequestFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateWithCorrelationId(*(void**)(&provider), *(void**)(&transferToken), *(void**)(&correlationId), &value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequestFactory>**)this;
            check_hresult(_winrt_abi_type->CreateWithCorrelationId(*(void**)(&provider), *(void**)(&transferToken), *(void**)(&correlationId), &value));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationTransferTokenRequest{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebProviderError<D>::ErrorCode() const
    {
        uint32_t value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebProviderError>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebProviderError, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebProviderError>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ErrorCode(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebProviderError>**)this;
            check_hresult(_winrt_abi_type->get_ErrorCode(&value));
        }
        return value;
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebProviderError<D>::ErrorMessage() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebProviderError>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebProviderError, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebProviderError>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ErrorMessage(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebProviderError>**)this;
            check_hresult(_winrt_abi_type->get_ErrorMessage(&value));
        }
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebProviderError<D>::Properties() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebProviderError>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebProviderError, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebProviderError>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Properties(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebProviderError>**)this;
            check_hresult(_winrt_abi_type->get_Properties(&value));
        }
        return winrt::Windows::Foundation::Collections::IMap<hstring, hstring>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebProviderErrorFactory<D>::Create(uint32_t errorCode, param::hstring const& errorMessage) const
    {
        void* webProviderError{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebProviderErrorFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebProviderErrorFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebProviderErrorFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->Create(errorCode, *(void**)(&errorMessage), &webProviderError));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebProviderErrorFactory>**)this;
            check_hresult(_winrt_abi_type->Create(errorCode, *(void**)(&errorMessage), &webProviderError));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebProviderError{ webProviderError, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequest<D>::WebAccountProvider() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_WebAccountProvider(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>**)this;
            check_hresult(_winrt_abi_type->get_WebAccountProvider(&value));
        }
        return winrt::Windows::Security::Credentials::WebAccountProvider{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequest<D>::Scope() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Scope(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>**)this;
            check_hresult(_winrt_abi_type->get_Scope(&value));
        }
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequest<D>::ClientId() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ClientId(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>**)this;
            check_hresult(_winrt_abi_type->get_ClientId(&value));
        }
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequest<D>::PromptType() const
    {
        winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestPromptType value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_PromptType(reinterpret_cast<int32_t*>(&value)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>**)this;
            check_hresult(_winrt_abi_type->get_PromptType(reinterpret_cast<int32_t*>(&value)));
        }
        return value;
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequest<D>::Properties() const
    {
        void* requestProperties{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Properties(&requestProperties));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>**)this;
            check_hresult(_winrt_abi_type->get_Properties(&requestProperties));
        }
        return winrt::Windows::Foundation::Collections::IMap<hstring, hstring>{ requestProperties, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequest2<D>::AppProperties() const
    {
        void* requestProperties{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest2>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest2, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest2>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_AppProperties(&requestProperties));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest2>**)this;
            check_hresult(_winrt_abi_type->get_AppProperties(&requestProperties));
        }
        return winrt::Windows::Foundation::Collections::IMap<hstring, hstring>{ requestProperties, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequest3<D>::CorrelationId() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_CorrelationId(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest3>**)this;
            check_hresult(_winrt_abi_type->get_CorrelationId(&value));
        }
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequest3<D>::CorrelationId(param::hstring const& value) const
    {
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest3>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest3, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest3>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->put_CorrelationId(*(void**)(&value)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest3>**)this;
            check_hresult(_winrt_abi_type->put_CorrelationId(*(void**)(&value)));
        }
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequestFactory<D>::Create(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& scope, param::hstring const& clientId) const
    {
        void* webTokenRequest{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->Create(*(void**)(&provider), *(void**)(&scope), *(void**)(&clientId), &webTokenRequest));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>**)this;
            check_hresult(_winrt_abi_type->Create(*(void**)(&provider), *(void**)(&scope), *(void**)(&clientId), &webTokenRequest));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest{ webTokenRequest, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequestFactory<D>::CreateWithPromptType(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& scope, param::hstring const& clientId, winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestPromptType const& promptType) const
    {
        void* webTokenRequest{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateWithPromptType(*(void**)(&provider), *(void**)(&scope), *(void**)(&clientId), static_cast<int32_t>(promptType), &webTokenRequest));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>**)this;
            check_hresult(_winrt_abi_type->CreateWithPromptType(*(void**)(&provider), *(void**)(&scope), *(void**)(&clientId), static_cast<int32_t>(promptType), &webTokenRequest));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest{ webTokenRequest, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequestFactory<D>::CreateWithProvider(winrt::Windows::Security::Credentials::WebAccountProvider const& provider) const
    {
        void* webTokenRequest{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateWithProvider(*(void**)(&provider), &webTokenRequest));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>**)this;
            check_hresult(_winrt_abi_type->CreateWithProvider(*(void**)(&provider), &webTokenRequest));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest{ webTokenRequest, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequestFactory<D>::CreateWithScope(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& scope) const
    {
        void* webTokenRequest{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateWithScope(*(void**)(&provider), *(void**)(&scope), &webTokenRequest));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>**)this;
            check_hresult(_winrt_abi_type->CreateWithScope(*(void**)(&provider), *(void**)(&scope), &webTokenRequest));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest{ webTokenRequest, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequestResult<D>::ResponseData() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ResponseData(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>**)this;
            check_hresult(_winrt_abi_type->get_ResponseData(&value));
        }
        return winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Security::Authentication::Web::Core::WebTokenResponse>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequestResult<D>::ResponseStatus() const
    {
        winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestStatus value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ResponseStatus(reinterpret_cast<int32_t*>(&value)));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>**)this;
            check_hresult(_winrt_abi_type->get_ResponseStatus(reinterpret_cast<int32_t*>(&value)));
        }
        return value;
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequestResult<D>::ResponseError() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ResponseError(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>**)this;
            check_hresult(_winrt_abi_type->get_ResponseError(&value));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebProviderError{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenRequestResult<D>::InvalidateCacheAsync() const
    {
        void* asyncInfo{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->InvalidateCacheAsync(&asyncInfo));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>**)this;
            check_hresult(_winrt_abi_type->InvalidateCacheAsync(&asyncInfo));
        }
        return winrt::Windows::Foundation::IAsyncAction{ asyncInfo, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenResponse<D>::Token() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Token(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>**)this;
            check_hresult(_winrt_abi_type->get_Token(&value));
        }
        return hstring{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenResponse<D>::ProviderError() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_ProviderError(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>**)this;
            check_hresult(_winrt_abi_type->get_ProviderError(&value));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebProviderError{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenResponse<D>::WebAccount() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_WebAccount(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>**)this;
            check_hresult(_winrt_abi_type->get_WebAccount(&value));
        }
        return winrt::Windows::Security::Credentials::WebAccount{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenResponse<D>::Properties() const
    {
        void* value{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->get_Properties(&value));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>**)this;
            check_hresult(_winrt_abi_type->get_Properties(&value));
        }
        return winrt::Windows::Foundation::Collections::IMap<hstring, hstring>{ value, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenResponseFactory<D>::CreateWithToken(param::hstring const& token) const
    {
        void* webTokenResponse{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateWithToken(*(void**)(&token), &webTokenResponse));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory>**)this;
            check_hresult(_winrt_abi_type->CreateWithToken(*(void**)(&token), &webTokenResponse));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebTokenResponse{ webTokenResponse, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenResponseFactory<D>::CreateWithTokenAndAccount(param::hstring const& token, winrt::Windows::Security::Credentials::WebAccount const& webAccount) const
    {
        void* webTokenResponse{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateWithTokenAndAccount(*(void**)(&token), *(void**)(&webAccount), &webTokenResponse));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory>**)this;
            check_hresult(_winrt_abi_type->CreateWithTokenAndAccount(*(void**)(&token), *(void**)(&webAccount), &webTokenResponse));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebTokenResponse{ webTokenResponse, take_ownership_from_abi };
    }
    template <typename D> auto consume_Windows_Security_Authentication_Web_Core_IWebTokenResponseFactory<D>::CreateWithTokenAccountAndError(param::hstring const& token, winrt::Windows::Security::Credentials::WebAccount const& webAccount, winrt::Windows::Security::Authentication::Web::Core::WebProviderError const& error) const
    {
        void* webTokenResponse{};
        if constexpr (!std::is_same_v<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory>)
        {
            winrt::hresult _winrt_cast_result_code;
            auto const _winrt_casted_result = impl::try_as_with_reason<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory, D const*>(static_cast<D const*>(this), _winrt_cast_result_code);
            check_hresult(_winrt_cast_result_code);
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory>**)&_winrt_casted_result;
            check_hresult(_winrt_abi_type->CreateWithTokenAccountAndError(*(void**)(&token), *(void**)(&webAccount), *(void**)(&error), &webTokenResponse));
        }
        else
        {
            auto const _winrt_abi_type = *(abi_t<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory>**)this;
            check_hresult(_winrt_abi_type->CreateWithTokenAccountAndError(*(void**)(&token), *(void**)(&webAccount), *(void**)(&error), &webTokenResponse));
        }
        return winrt::Windows::Security::Authentication::Web::Core::WebTokenResponse{ webTokenResponse, take_ownership_from_abi };
    }
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult>
    {
        int32_t __stdcall get_Accounts(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Security::Credentials::WebAccount>>(this->shim().Accounts());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Status(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::FindAllWebAccountsStatus>(this->shim().Status());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_ProviderError(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebProviderError>(this->shim().ProviderError());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountEventArgs> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountEventArgs>
    {
        int32_t __stdcall get_Account(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Credentials::WebAccount>(this->shim().Account());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor>
    {
        int32_t __stdcall add_Updated(void* handler, winrt::event_token* token) noexcept final try
        {
            zero_abi<winrt::event_token>(token);
            typename D::abi_guard guard(this->shim());
            *token = detach_from<winrt::event_token>(this->shim().Updated(*reinterpret_cast<winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Security::Authentication::Web::Core::WebAccountEventArgs> const*>(&handler)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall remove_Updated(winrt::event_token token) noexcept final
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Updated(*reinterpret_cast<winrt::event_token const*>(&token));
            return 0;
        }
        int32_t __stdcall add_Removed(void* handler, winrt::event_token* token) noexcept final try
        {
            zero_abi<winrt::event_token>(token);
            typename D::abi_guard guard(this->shim());
            *token = detach_from<winrt::event_token>(this->shim().Removed(*reinterpret_cast<winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Security::Authentication::Web::Core::WebAccountEventArgs> const*>(&handler)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall remove_Removed(winrt::event_token token) noexcept final
        {
            typename D::abi_guard guard(this->shim());
            this->shim().Removed(*reinterpret_cast<winrt::event_token const*>(&token));
            return 0;
        }
        int32_t __stdcall add_DefaultSignInAccountChanged(void* handler, winrt::event_token* token) noexcept final try
        {
            zero_abi<winrt::event_token>(token);
            typename D::abi_guard guard(this->shim());
            *token = detach_from<winrt::event_token>(this->shim().DefaultSignInAccountChanged(*reinterpret_cast<winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Foundation::IInspectable> const*>(&handler)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall remove_DefaultSignInAccountChanged(winrt::event_token token) noexcept final
        {
            typename D::abi_guard guard(this->shim());
            this->shim().DefaultSignInAccountChanged(*reinterpret_cast<winrt::event_token const*>(&token));
            return 0;
        }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor2> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor2>
    {
        int32_t __stdcall add_AccountPictureUpdated(void* handler, winrt::event_token* token) noexcept final try
        {
            zero_abi<winrt::event_token>(token);
            typename D::abi_guard guard(this->shim());
            *token = detach_from<winrt::event_token>(this->shim().AccountPictureUpdated(*reinterpret_cast<winrt::Windows::Foundation::TypedEventHandler<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor, winrt::Windows::Security::Authentication::Web::Core::WebAccountEventArgs> const*>(&handler)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall remove_AccountPictureUpdated(winrt::event_token token) noexcept final
        {
            typename D::abi_guard guard(this->shim());
            this->shim().AccountPictureUpdated(*reinterpret_cast<winrt::event_token const*>(&token));
            return 0;
        }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponse> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponse>
    {
        int32_t __stdcall get_WebAccount(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Credentials::WebAccount>(this->shim().WebAccount());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Properties(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Collections::IMap<hstring, hstring>>(this->shim().Properties());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponseFactory> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponseFactory>
    {
        int32_t __stdcall CreateWithAccount(void* webAccount, void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationAddAccountResponse>(this->shim().CreateWithAccount(*reinterpret_cast<winrt::Windows::Security::Credentials::WebAccount const*>(&webAccount)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult>
    {
        int32_t __stdcall get_ResponseData(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationAddAccountResponse>(this->shim().ResponseData());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_ResponseStatus(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationAddAccountStatus>(this->shim().ResponseStatus());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_ResponseError(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebProviderError>(this->shim().ResponseError());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics>
    {
        int32_t __stdcall GetTokenSilentlyAsync(void* request, void** asyncInfo) noexcept final try
        {
            clear_abi(asyncInfo);
            typename D::abi_guard guard(this->shim());
            *asyncInfo = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestResult>>(this->shim().GetTokenSilentlyAsync(*reinterpret_cast<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const*>(&request)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall GetTokenSilentlyWithWebAccountAsync(void* request, void* webAccount, void** asyncInfo) noexcept final try
        {
            clear_abi(asyncInfo);
            typename D::abi_guard guard(this->shim());
            *asyncInfo = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestResult>>(this->shim().GetTokenSilentlyAsync(*reinterpret_cast<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const*>(&request), *reinterpret_cast<winrt::Windows::Security::Credentials::WebAccount const*>(&webAccount)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall RequestTokenAsync(void* request, void** asyncInfo) noexcept final try
        {
            clear_abi(asyncInfo);
            typename D::abi_guard guard(this->shim());
            *asyncInfo = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestResult>>(this->shim().RequestTokenAsync(*reinterpret_cast<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const*>(&request)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall RequestTokenWithWebAccountAsync(void* request, void* webAccount, void** asyncInfo) noexcept final try
        {
            clear_abi(asyncInfo);
            typename D::abi_guard guard(this->shim());
            *asyncInfo = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestResult>>(this->shim().RequestTokenAsync(*reinterpret_cast<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const*>(&request), *reinterpret_cast<winrt::Windows::Security::Credentials::WebAccount const*>(&webAccount)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall FindAccountAsync(void* provider, void* webAccountId, void** asyncInfo) noexcept final try
        {
            clear_abi(asyncInfo);
            typename D::abi_guard guard(this->shim());
            *asyncInfo = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccount>>(this->shim().FindAccountAsync(*reinterpret_cast<winrt::Windows::Security::Credentials::WebAccountProvider const*>(&provider), *reinterpret_cast<hstring const*>(&webAccountId)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall FindAccountProviderAsync(void* webAccountProviderId, void** asyncInfo) noexcept final try
        {
            clear_abi(asyncInfo);
            typename D::abi_guard guard(this->shim());
            *asyncInfo = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>>(this->shim().FindAccountProviderAsync(*reinterpret_cast<hstring const*>(&webAccountProviderId)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall FindAccountProviderWithAuthorityAsync(void* webAccountProviderId, void* authority, void** asyncInfo) noexcept final try
        {
            clear_abi(asyncInfo);
            typename D::abi_guard guard(this->shim());
            *asyncInfo = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>>(this->shim().FindAccountProviderAsync(*reinterpret_cast<hstring const*>(&webAccountProviderId), *reinterpret_cast<hstring const*>(&authority)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics2> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics2>
    {
        int32_t __stdcall FindAccountProviderWithAuthorityForUserAsync(void* webAccountProviderId, void* authority, void* user, void** asyncInfo) noexcept final try
        {
            clear_abi(asyncInfo);
            typename D::abi_guard guard(this->shim());
            *asyncInfo = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>>(this->shim().FindAccountProviderAsync(*reinterpret_cast<hstring const*>(&webAccountProviderId), *reinterpret_cast<hstring const*>(&authority), *reinterpret_cast<winrt::Windows::System::User const*>(&user)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics3> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics3>
    {
        int32_t __stdcall CreateWebAccountMonitor(void* webAccounts, void** result) noexcept final try
        {
            clear_abi(result);
            typename D::abi_guard guard(this->shim());
            *result = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor>(this->shim().CreateWebAccountMonitor(*reinterpret_cast<winrt::Windows::Foundation::Collections::IIterable<winrt::Windows::Security::Credentials::WebAccount> const*>(&webAccounts)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4>
    {
        int32_t __stdcall FindAllAccountsAsync(void* provider, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::FindAllAccountsResult>>(this->shim().FindAllAccountsAsync(*reinterpret_cast<winrt::Windows::Security::Credentials::WebAccountProvider const*>(&provider)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall FindAllAccountsWithClientIdAsync(void* provider, void* clientId, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::FindAllAccountsResult>>(this->shim().FindAllAccountsAsync(*reinterpret_cast<winrt::Windows::Security::Credentials::WebAccountProvider const*>(&provider), *reinterpret_cast<hstring const*>(&clientId)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall FindSystemAccountProviderAsync(void* webAccountProviderId, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>>(this->shim().FindSystemAccountProviderAsync(*reinterpret_cast<hstring const*>(&webAccountProviderId)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall FindSystemAccountProviderWithAuthorityAsync(void* webAccountProviderId, void* authority, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>>(this->shim().FindSystemAccountProviderAsync(*reinterpret_cast<hstring const*>(&webAccountProviderId), *reinterpret_cast<hstring const*>(&authority)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall FindSystemAccountProviderWithAuthorityForUserAsync(void* webAccountProviderId, void* authority, void* user, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Credentials::WebAccountProvider>>(this->shim().FindSystemAccountProviderAsync(*reinterpret_cast<hstring const*>(&webAccountProviderId), *reinterpret_cast<hstring const*>(&authority), *reinterpret_cast<winrt::Windows::System::User const*>(&user)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics5> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics5>
    {
        int32_t __stdcall AddAccountWithTransferTokenAsync(void* request, void** operation) noexcept final try
        {
            clear_abi(operation);
            typename D::abi_guard guard(this->shim());
            *operation = detach_from<winrt::Windows::Foundation::IAsyncOperation<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationAddAccountResult>>(this->shim().AddAccountWithTransferTokenAsync(*reinterpret_cast<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationTransferTokenRequest const*>(&request)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest>
    {
        int32_t __stdcall get_WebAccountProvider(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Credentials::WebAccountProvider>(this->shim().WebAccountProvider());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_TransferToken(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().TransferToken());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_TransferToken(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().TransferToken(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Properties(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Collections::IMap<hstring, hstring>>(this->shim().Properties());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_CorrelationId(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().CorrelationId());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_CorrelationId(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CorrelationId(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequestFactory> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequestFactory>
    {
        int32_t __stdcall Create(void* provider, void* transferToken, void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationTransferTokenRequest>(this->shim().Create(*reinterpret_cast<winrt::Windows::Security::Credentials::WebAccountProvider const*>(&provider), *reinterpret_cast<hstring const*>(&transferToken)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreateWithCorrelationId(void* provider, void* transferToken, void* correlationId, void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationTransferTokenRequest>(this->shim().CreateWithCorrelationId(*reinterpret_cast<winrt::Windows::Security::Credentials::WebAccountProvider const*>(&provider), *reinterpret_cast<hstring const*>(&transferToken), *reinterpret_cast<hstring const*>(&correlationId)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebProviderError> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebProviderError>
    {
        int32_t __stdcall get_ErrorCode(uint32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<uint32_t>(this->shim().ErrorCode());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_ErrorMessage(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().ErrorMessage());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Properties(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Collections::IMap<hstring, hstring>>(this->shim().Properties());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebProviderErrorFactory> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebProviderErrorFactory>
    {
        int32_t __stdcall Create(uint32_t errorCode, void* errorMessage, void** webProviderError) noexcept final try
        {
            clear_abi(webProviderError);
            typename D::abi_guard guard(this->shim());
            *webProviderError = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebProviderError>(this->shim().Create(errorCode, *reinterpret_cast<hstring const*>(&errorMessage)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest>
    {
        int32_t __stdcall get_WebAccountProvider(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Credentials::WebAccountProvider>(this->shim().WebAccountProvider());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Scope(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Scope());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_ClientId(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().ClientId());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_PromptType(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestPromptType>(this->shim().PromptType());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Properties(void** requestProperties) noexcept final try
        {
            clear_abi(requestProperties);
            typename D::abi_guard guard(this->shim());
            *requestProperties = detach_from<winrt::Windows::Foundation::Collections::IMap<hstring, hstring>>(this->shim().Properties());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest2> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest2>
    {
        int32_t __stdcall get_AppProperties(void** requestProperties) noexcept final try
        {
            clear_abi(requestProperties);
            typename D::abi_guard guard(this->shim());
            *requestProperties = detach_from<winrt::Windows::Foundation::Collections::IMap<hstring, hstring>>(this->shim().AppProperties());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest3> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest3>
    {
        int32_t __stdcall get_CorrelationId(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().CorrelationId());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall put_CorrelationId(void* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            this->shim().CorrelationId(*reinterpret_cast<hstring const*>(&value));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory>
    {
        int32_t __stdcall Create(void* provider, void* scope, void* clientId, void** webTokenRequest) noexcept final try
        {
            clear_abi(webTokenRequest);
            typename D::abi_guard guard(this->shim());
            *webTokenRequest = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest>(this->shim().Create(*reinterpret_cast<winrt::Windows::Security::Credentials::WebAccountProvider const*>(&provider), *reinterpret_cast<hstring const*>(&scope), *reinterpret_cast<hstring const*>(&clientId)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreateWithPromptType(void* provider, void* scope, void* clientId, int32_t promptType, void** webTokenRequest) noexcept final try
        {
            clear_abi(webTokenRequest);
            typename D::abi_guard guard(this->shim());
            *webTokenRequest = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest>(this->shim().CreateWithPromptType(*reinterpret_cast<winrt::Windows::Security::Credentials::WebAccountProvider const*>(&provider), *reinterpret_cast<hstring const*>(&scope), *reinterpret_cast<hstring const*>(&clientId), *reinterpret_cast<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestPromptType const*>(&promptType)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreateWithProvider(void* provider, void** webTokenRequest) noexcept final try
        {
            clear_abi(webTokenRequest);
            typename D::abi_guard guard(this->shim());
            *webTokenRequest = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest>(this->shim().CreateWithProvider(*reinterpret_cast<winrt::Windows::Security::Credentials::WebAccountProvider const*>(&provider)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreateWithScope(void* provider, void* scope, void** webTokenRequest) noexcept final try
        {
            clear_abi(webTokenRequest);
            typename D::abi_guard guard(this->shim());
            *webTokenRequest = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest>(this->shim().CreateWithScope(*reinterpret_cast<winrt::Windows::Security::Credentials::WebAccountProvider const*>(&provider), *reinterpret_cast<hstring const*>(&scope)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult>
    {
        int32_t __stdcall get_ResponseData(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Collections::IVectorView<winrt::Windows::Security::Authentication::Web::Core::WebTokenResponse>>(this->shim().ResponseData());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_ResponseStatus(int32_t* value) noexcept final try
        {
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestStatus>(this->shim().ResponseStatus());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_ResponseError(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebProviderError>(this->shim().ResponseError());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall InvalidateCacheAsync(void** asyncInfo) noexcept final try
        {
            clear_abi(asyncInfo);
            typename D::abi_guard guard(this->shim());
            *asyncInfo = detach_from<winrt::Windows::Foundation::IAsyncAction>(this->shim().InvalidateCacheAsync());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse>
    {
        int32_t __stdcall get_Token(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<hstring>(this->shim().Token());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_ProviderError(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebProviderError>(this->shim().ProviderError());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_WebAccount(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Security::Credentials::WebAccount>(this->shim().WebAccount());
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall get_Properties(void** value) noexcept final try
        {
            clear_abi(value);
            typename D::abi_guard guard(this->shim());
            *value = detach_from<winrt::Windows::Foundation::Collections::IMap<hstring, hstring>>(this->shim().Properties());
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
#ifndef WINRT_LEAN_AND_MEAN
    template <typename D>
    struct produce<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory> : produce_base<D, winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory>
    {
        int32_t __stdcall CreateWithToken(void* token, void** webTokenResponse) noexcept final try
        {
            clear_abi(webTokenResponse);
            typename D::abi_guard guard(this->shim());
            *webTokenResponse = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebTokenResponse>(this->shim().CreateWithToken(*reinterpret_cast<hstring const*>(&token)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreateWithTokenAndAccount(void* token, void* webAccount, void** webTokenResponse) noexcept final try
        {
            clear_abi(webTokenResponse);
            typename D::abi_guard guard(this->shim());
            *webTokenResponse = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebTokenResponse>(this->shim().CreateWithTokenAndAccount(*reinterpret_cast<hstring const*>(&token), *reinterpret_cast<winrt::Windows::Security::Credentials::WebAccount const*>(&webAccount)));
            return 0;
        }
        catch (...) { return to_hresult(); }
        int32_t __stdcall CreateWithTokenAccountAndError(void* token, void* webAccount, void* error, void** webTokenResponse) noexcept final try
        {
            clear_abi(webTokenResponse);
            typename D::abi_guard guard(this->shim());
            *webTokenResponse = detach_from<winrt::Windows::Security::Authentication::Web::Core::WebTokenResponse>(this->shim().CreateWithTokenAccountAndError(*reinterpret_cast<hstring const*>(&token), *reinterpret_cast<winrt::Windows::Security::Credentials::WebAccount const*>(&webAccount), *reinterpret_cast<winrt::Windows::Security::Authentication::Web::Core::WebProviderError const*>(&error)));
            return 0;
        }
        catch (...) { return to_hresult(); }
    };
#endif
}
WINRT_EXPORT namespace winrt::Windows::Security::Authentication::Web::Core
{
    inline WebAuthenticationAddAccountResponse::WebAuthenticationAddAccountResponse(winrt::Windows::Security::Credentials::WebAccount const& webAccount) :
        WebAuthenticationAddAccountResponse(impl::call_factory<WebAuthenticationAddAccountResponse, IWebAuthenticationAddAccountResponseFactory>([&](IWebAuthenticationAddAccountResponseFactory const& f) { return f.CreateWithAccount(webAccount); }))
    {
    }
    inline auto WebAuthenticationCoreManager::GetTokenSilentlyAsync(winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const& request)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics>([&](IWebAuthenticationCoreManagerStatics const& f) { return f.GetTokenSilentlyAsync(request); });
    }
    inline auto WebAuthenticationCoreManager::GetTokenSilentlyAsync(winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const& request, winrt::Windows::Security::Credentials::WebAccount const& webAccount)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics>([&](IWebAuthenticationCoreManagerStatics const& f) { return f.GetTokenSilentlyAsync(request, webAccount); });
    }
    inline auto WebAuthenticationCoreManager::RequestTokenAsync(winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const& request)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics>([&](IWebAuthenticationCoreManagerStatics const& f) { return f.RequestTokenAsync(request); });
    }
    inline auto WebAuthenticationCoreManager::RequestTokenAsync(winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest const& request, winrt::Windows::Security::Credentials::WebAccount const& webAccount)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics>([&](IWebAuthenticationCoreManagerStatics const& f) { return f.RequestTokenAsync(request, webAccount); });
    }
    inline auto WebAuthenticationCoreManager::FindAccountAsync(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& webAccountId)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics>([&](IWebAuthenticationCoreManagerStatics const& f) { return f.FindAccountAsync(provider, webAccountId); });
    }
    inline auto WebAuthenticationCoreManager::FindAccountProviderAsync(param::hstring const& webAccountProviderId)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics>([&](IWebAuthenticationCoreManagerStatics const& f) { return f.FindAccountProviderAsync(webAccountProviderId); });
    }
    inline auto WebAuthenticationCoreManager::FindAccountProviderAsync(param::hstring const& webAccountProviderId, param::hstring const& authority)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics>([&](IWebAuthenticationCoreManagerStatics const& f) { return f.FindAccountProviderAsync(webAccountProviderId, authority); });
    }
    inline auto WebAuthenticationCoreManager::FindAccountProviderAsync(param::hstring const& webAccountProviderId, param::hstring const& authority, winrt::Windows::System::User const& user)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics2>([&](IWebAuthenticationCoreManagerStatics2 const& f) { return f.FindAccountProviderAsync(webAccountProviderId, authority, user); });
    }
    inline auto WebAuthenticationCoreManager::CreateWebAccountMonitor(param::iterable<winrt::Windows::Security::Credentials::WebAccount> const& webAccounts)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics3>([&](IWebAuthenticationCoreManagerStatics3 const& f) { return f.CreateWebAccountMonitor(webAccounts); });
    }
    inline auto WebAuthenticationCoreManager::FindAllAccountsAsync(winrt::Windows::Security::Credentials::WebAccountProvider const& provider)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics4>([&](IWebAuthenticationCoreManagerStatics4 const& f) { return f.FindAllAccountsAsync(provider); });
    }
    inline auto WebAuthenticationCoreManager::FindAllAccountsAsync(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& clientId)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics4>([&](IWebAuthenticationCoreManagerStatics4 const& f) { return f.FindAllAccountsAsync(provider, clientId); });
    }
    inline auto WebAuthenticationCoreManager::FindSystemAccountProviderAsync(param::hstring const& webAccountProviderId)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics4>([&](IWebAuthenticationCoreManagerStatics4 const& f) { return f.FindSystemAccountProviderAsync(webAccountProviderId); });
    }
    inline auto WebAuthenticationCoreManager::FindSystemAccountProviderAsync(param::hstring const& webAccountProviderId, param::hstring const& authority)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics4>([&](IWebAuthenticationCoreManagerStatics4 const& f) { return f.FindSystemAccountProviderAsync(webAccountProviderId, authority); });
    }
    inline auto WebAuthenticationCoreManager::FindSystemAccountProviderAsync(param::hstring const& webAccountProviderId, param::hstring const& authority, winrt::Windows::System::User const& user)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics4>([&](IWebAuthenticationCoreManagerStatics4 const& f) { return f.FindSystemAccountProviderAsync(webAccountProviderId, authority, user); });
    }
    inline auto WebAuthenticationCoreManager::AddAccountWithTransferTokenAsync(winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationTransferTokenRequest const& request)
    {
        return impl::call_factory<WebAuthenticationCoreManager, IWebAuthenticationCoreManagerStatics5>([&](IWebAuthenticationCoreManagerStatics5 const& f) { return f.AddAccountWithTransferTokenAsync(request); });
    }
    inline WebAuthenticationTransferTokenRequest::WebAuthenticationTransferTokenRequest(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& transferToken) :
        WebAuthenticationTransferTokenRequest(impl::call_factory<WebAuthenticationTransferTokenRequest, IWebAuthenticationTransferTokenRequestFactory>([&](IWebAuthenticationTransferTokenRequestFactory const& f) { return f.Create(provider, transferToken); }))
    {
    }
    inline WebAuthenticationTransferTokenRequest::WebAuthenticationTransferTokenRequest(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& transferToken, param::hstring const& correlationId) :
        WebAuthenticationTransferTokenRequest(impl::call_factory<WebAuthenticationTransferTokenRequest, IWebAuthenticationTransferTokenRequestFactory>([&](IWebAuthenticationTransferTokenRequestFactory const& f) { return f.CreateWithCorrelationId(provider, transferToken, correlationId); }))
    {
    }
    inline WebProviderError::WebProviderError(uint32_t errorCode, param::hstring const& errorMessage) :
        WebProviderError(impl::call_factory<WebProviderError, IWebProviderErrorFactory>([&](IWebProviderErrorFactory const& f) { return f.Create(errorCode, errorMessage); }))
    {
    }
    inline WebTokenRequest::WebTokenRequest(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& scope, param::hstring const& clientId) :
        WebTokenRequest(impl::call_factory<WebTokenRequest, IWebTokenRequestFactory>([&](IWebTokenRequestFactory const& f) { return f.Create(provider, scope, clientId); }))
    {
    }
    inline WebTokenRequest::WebTokenRequest(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& scope, param::hstring const& clientId, winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestPromptType const& promptType) :
        WebTokenRequest(impl::call_factory<WebTokenRequest, IWebTokenRequestFactory>([&](IWebTokenRequestFactory const& f) { return f.CreateWithPromptType(provider, scope, clientId, promptType); }))
    {
    }
    inline WebTokenRequest::WebTokenRequest(winrt::Windows::Security::Credentials::WebAccountProvider const& provider) :
        WebTokenRequest(impl::call_factory<WebTokenRequest, IWebTokenRequestFactory>([&](IWebTokenRequestFactory const& f) { return f.CreateWithProvider(provider); }))
    {
    }
    inline WebTokenRequest::WebTokenRequest(winrt::Windows::Security::Credentials::WebAccountProvider const& provider, param::hstring const& scope) :
        WebTokenRequest(impl::call_factory<WebTokenRequest, IWebTokenRequestFactory>([&](IWebTokenRequestFactory const& f) { return f.CreateWithScope(provider, scope); }))
    {
    }
    inline WebTokenResponse::WebTokenResponse() :
        WebTokenResponse(impl::call_factory_cast<WebTokenResponse(*)(winrt::Windows::Foundation::IActivationFactory const&), WebTokenResponse>([](winrt::Windows::Foundation::IActivationFactory const& f) { return f.template ActivateInstance<WebTokenResponse>(); }))
    {
    }
    inline WebTokenResponse::WebTokenResponse(param::hstring const& token) :
        WebTokenResponse(impl::call_factory<WebTokenResponse, IWebTokenResponseFactory>([&](IWebTokenResponseFactory const& f) { return f.CreateWithToken(token); }))
    {
    }
    inline WebTokenResponse::WebTokenResponse(param::hstring const& token, winrt::Windows::Security::Credentials::WebAccount const& webAccount) :
        WebTokenResponse(impl::call_factory<WebTokenResponse, IWebTokenResponseFactory>([&](IWebTokenResponseFactory const& f) { return f.CreateWithTokenAndAccount(token, webAccount); }))
    {
    }
    inline WebTokenResponse::WebTokenResponse(param::hstring const& token, winrt::Windows::Security::Credentials::WebAccount const& webAccount, winrt::Windows::Security::Authentication::Web::Core::WebProviderError const& error) :
        WebTokenResponse(impl::call_factory<WebTokenResponse, IWebTokenResponseFactory>([&](IWebTokenResponseFactory const& f) { return f.CreateWithTokenAccountAndError(token, webAccount, error); }))
    {
    }
}
namespace std
{
#ifndef WINRT_LEAN_AND_MEAN
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IFindAllAccountsResult> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAccountEventArgs> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAccountMonitor2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponse> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResponseFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationAddAccountResult> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics4> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationCoreManagerStatics5> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequest> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebAuthenticationTransferTokenRequestFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebProviderError> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebProviderErrorFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest2> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequest3> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebTokenRequestResult> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponse> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::IWebTokenResponseFactory> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::FindAllAccountsResult> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::WebAccountEventArgs> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::WebAccountMonitor> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationAddAccountResponse> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationAddAccountResult> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationCoreManager> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::WebAuthenticationTransferTokenRequest> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::WebProviderError> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequest> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::WebTokenRequestResult> : winrt::impl::hash_base {};
    template<> struct hash<winrt::Windows::Security::Authentication::Web::Core::WebTokenResponse> : winrt::impl::hash_base {};
#endif
#ifdef __cpp_lib_format
#endif
}
#endif
