#pragma autorecover
#pragma classflags(64)
#pragma namespace("\\\\.\\Root")

Instance of __Namespace
{
  Name = "Policy";
};

#pragma namespace("\\\\.\\Root\\Policy")

Instance of __Win32Provider as $PolicSOM
{
  Name = "PolicSOM";
  ClsId = "{AAEAE72F-0328-4763-8ECB-23422EDE2DB5}";
  ImpersonationLevel = 1;
  PerUserInitialization = "FALSE";
  HostingModel = "NetworkServiceHost";
};

Instance of __Win32Provider as $PolicStatus
{
  Name = "PolicStatus";
  ClsId = "{69D76D1B-B12E-4913-8F48-671B90195A2B}";
  ImpersonationLevel = 1;
  PerUserInitialization = "FALSE";
  HostingModel = "NetworkServiceHost";
};

Instance of __InstanceProviderRegistration
{
  Provider = $PolicSOM;
  SupportsGet = "TRUE";
  SupportsPut = "TRUE";
  SupportsDelete = "TRUE";
  QuerySupportLevels = {"WQL:UnarySelect"};
};

Instance of __InstanceProviderRegistration
{
  Provider = $PolicStatus;
  SupportsGet = "TRUE";
  SupportsPut = "FALSE";
  SupportsDelete = "FALSE";
};

Instance of __MethodProviderRegistration
{
  Provider = $PolicSOM;
};

[Abstract,Locale(1033) : ToInstance,UUID("{D157AAFD-D42F-45cd-B30B-F67CF152C9F9}")] 
class MSFT_Rule
{
  [NOT_NULL,write] string QueryLanguage;
  [NOT_NULL,write] string TargetNameSpace;
  [NOT_NULL,write] string Query;
};

[Dynamic,Provider("PolicSOM"),Locale(1033) : ToInstance,UUID("{AE7B614F-AFE0-41ea-807E-3BD3F83CAF66}")] 
class MSFT_SomFilter
{
  [key,write,MaxLen(38)] string ID;
  [key,write] String Domain;
  [write, NOT_NULL] string Name;
  [write] String Description;
  [write,NOT_NULL] MSFT_Rule Rules[];
  [Implemented, bypass_getobject] Uint32 Evaluate();
  [Implemented,Static] Uint32 BatchEvaluate([IN] MSFT_SomFilter Ref filters[],[OUT] Uint32 results[]);
  [write] String Author;
  [write] String SourceOrganization;
  [write] DateTime ChangeDate;
  [write] DateTime CreationDate;
};

[Dynamic, Provider("PolicStatus"), Locale(1033)]
class MSFT_SomFilterStatus
{
  [key,read] String Domain;
  [read]     Boolean SchemaAvailable;
  [read]     Boolean ContainerAvailable;
};

class SomFilterPutStatus : __ExtendedStatus 
{
  [read] Uint32 RuleValidationResults[];
};

#pragma DeleteInstance("__Namespace.Name='History'", NOFAIL)

#pragma DeleteInstance("__Win32Provider.Name=\"PolicGpo\"", NOFAIL)
#pragma DeleteInstance("__InstanceProviderRegistration.provider=\"\\\\\\\\.\\\\Root\\\\Policy:__Win32Provider.Name=\\\"PolicTempl\\\"\"", NOFAIL)

#pragma DeleteInstance("__Win32Provider.Name=\"PolicRange\"", NOFAIL)
#pragma DeleteInstance("__MethodProviderRegistration.provider=\"\\\\\\\\.\\\\Root\\\\Policy:__Win32Provider.Name=\\\"PolicRange\\\"\"", NOFAIL)

#pragma DeleteInstance("__Win32Provider.Name=\"PolicTempl\"", NOFAIL)
#pragma DeleteInstance("__MethodProviderRegistration.provider=\"\\\\\\\\.\\\\Root\\\\Policy:__Win32Provider.Name=\\\"PolicTempl\\\"\"", NOFAIL)
#pragma DeleteInstance("__InstanceProviderRegistration.provider=\"\\\\\\\\.\\\\Root\\\\Policy:__Win32Provider.Name=\\\"PoliceTempl\\\"\"", NOFAIL)

#pragma DeleteInstance("__Win32Provider.Name=\"PolicType\"", NOFAIL)
#pragma DeleteInstance("__MethodProviderRegistration.provider=\"\\\\\\\\.\\\\Root\\\\Policy:__Win32Provider.Name=\\\"PolicType\\\"\"", NOFAIL)
#pragma DeleteInstance("__InstanceProviderRegistration.provider=\"\\\\\\\\.\\\\Root\\\\Policy:__Win32Provider.Name=\\\"PolicType\\\"\"", NOFAIL)


#pragma DeleteClass("MSFT_RangeParam", NOFAIL)
#pragma DeleteClass("MSFT_PolicyTemplate", NOFAIL)
#pragma DeleteClass("MSFT_PolicyType", NOFAIL)
#pragma DeleteClass("MSFT_WMIGPO", NOFAIL)