<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<!-- A base template for secure frames -->
	<Frame name="SecureFrameTemplate" protected="true" virtual="true"/>
	
	<Script file="SecureTemplates.lua"/>
	<Script file="SecureStateDriver.lua"/>

	<!-- A button template for click-cast style action buttons -->
	<Button name="SecureActionButtonTemplate" inherits="SecureFrameTemplate" virtual="true">
		<Scripts>
			<OnClick>
				SecureActionButton_OnClick(self, button);
			</OnClick>
		</Scripts>
	</Button>

	<!-- A variant of SecureActionButtonTemplate used for unit buttons -->
	<Button name="SecureUnitButtonTemplate" inherits="SecureFrameTemplate" virtual="true">
		<Scripts>
			<OnClick>
				SecureUnitButton_OnClick(self, button);
			</OnClick>
		</Scripts>
	</Button>

	<!-- A frame used for managing group members -->
	<Frame name="SecureGroupHeaderTemplate" inherits="SecureFrameTemplate" hidden="true" virtual="true">
		<Scripts>
			<OnLoad>
				SecureGroupHeader_OnLoad(self);
			</OnLoad>
			<OnEvent>
				SecureGroupHeader_OnEvent(self, event, ...);
			</OnEvent>
			<OnShow>
				SecureGroupHeader_Update(self);
			</OnShow>
			<OnAttributeChanged>
				SecureGroupHeader_OnAttributeChanged(self, name, value);
			</OnAttributeChanged>
		</Scripts>
	</Frame>

	<!-- A frame used for managing party members -->
	<Frame name="SecurePartyHeaderTemplate" inherits="SecureGroupHeaderTemplate" hidden="true" virtual="true">
		<Attributes>
			<Attribute name="showParty" type="boolean" value="true"/>
		</Attributes>
	</Frame>

	<!-- A frame used for managing raid members -->
	<Frame name="SecureRaidGroupHeaderTemplate" inherits="SecureGroupHeaderTemplate" hidden="true" virtual="true">
		<Attributes>
			<Attribute name="showRaid" type="boolean" value="true"/>
		</Attributes>
	</Frame>

	<!-- A frame used for managing group pets -->
	<Frame name="SecureGroupPetHeaderTemplate" inherits="SecureFrameTemplate" hidden="true" virtual="true">
		<Scripts>
			<OnLoad>
				SecureGroupPetHeader_OnLoad(self);
			</OnLoad>
			<OnEvent>
				SecureGroupPetHeader_OnEvent(self, event, ...);
			</OnEvent>
			<OnShow>
				SecureGroupPetHeader_Update(self);
			</OnShow>
			<OnAttributeChanged>
				SecureGroupPetHeader_OnAttributeChanged(self, name, value);
			</OnAttributeChanged>
		</Scripts>
	</Frame>

	<!-- A frame used for managing party pets -->
	<Frame name="SecurePartyPetHeaderTemplate" inherits="SecureGroupPetHeaderTemplate" hidden="true" virtual="true">
		<Attributes>
			<Attribute name="showParty" type="boolean" value="true"/>
		</Attributes>
	</Frame>

	<!-- A frame used for managing raid pets -->
	<Frame name="SecureRaidPetHeaderTemplate" inherits="SecureGroupPetHeaderTemplate" hidden="true" virtual="true">
		<Attributes>
			<Attribute name="showRaid" type="boolean" value="true"/>
		</Attributes>
	</Frame>
</Ui>
