<?xml version="1.0"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
  -->
<antlib>
  <taskdef
     name="unar"
     classname="org.apache.ant.compress.taskdefs.Unar"
     />
  <taskdef
     name="uncpio"
     classname="org.apache.ant.compress.taskdefs.Uncpio"
     />
  <taskdef
     name="undump"
     classname="org.apache.ant.compress.taskdefs.Undump"
     />
  <taskdef
     name="untar"
     classname="org.apache.ant.compress.taskdefs.Untar"
     />
  <taskdef
     name="unzip"
     classname="org.apache.ant.compress.taskdefs.Unzip"
     />
  <taskdef
     name="ar"
     classname="org.apache.ant.compress.taskdefs.Ar"
     />
  <taskdef
     name="cpio"
     classname="org.apache.ant.compress.taskdefs.Cpio"
     />
  <taskdef
     name="tar"
     classname="org.apache.ant.compress.taskdefs.Tar"
     />
  <taskdef
     name="zip"
     classname="org.apache.ant.compress.taskdefs.Zip"
     />
  <taskdef
     name="bunzip2"
     classname="org.apache.ant.compress.taskdefs.BUnzip2"
     />
  <taskdef
     name="gunzip"
     classname="org.apache.ant.compress.taskdefs.GUnzip"
     />
  <taskdef
     name="unpack200"
     classname="org.apache.ant.compress.taskdefs.UnPack200"
     />
  <taskdef
     name="unxz"
     classname="org.apache.ant.compress.taskdefs.UnXZ"
     />
  <taskdef
     name="bzip2"
     classname="org.apache.ant.compress.taskdefs.BZip2"
     />
  <taskdef
     name="gzip"
     classname="org.apache.ant.compress.taskdefs.GZip"
     />
  <taskdef
     name="pack200"
     classname="org.apache.ant.compress.taskdefs.Pack200"
     />
  <taskdef
     name="pack200normalize"
     classname="org.apache.ant.compress.taskdefs.Pack200Normalize"
     />
  <taskdef
     name="xz"
     classname="org.apache.ant.compress.taskdefs.XZ"
     />

  <typedef
     name="arentry"
     classname="org.apache.ant.compress.resources.ArResource"
     />
  <typedef
     name="cpioentry"
     classname="org.apache.ant.compress.resources.CpioResource"
     />
  <typedef
     name="dumpentry"
     classname="org.apache.ant.compress.resources.DumpResource"
     />
  <typedef
     name="tarentry"
     classname="org.apache.ant.compress.resources.TarResource"
     />
  <typedef
     name="zipentry"
     classname="org.apache.ant.compress.resources.ZipResource"
     />

  <typedef
     name="arfileset"
     classname="org.apache.ant.compress.resources.ArFileSet"
     />
  <typedef
     name="cpiofileset"
     classname="org.apache.ant.compress.resources.CpioFileSet"
     />
  <typedef
     name="dumpfileset"
     classname="org.apache.ant.compress.resources.DumpFileSet"
     />
  <typedef
     name="tarfileset"
     classname="org.apache.ant.compress.resources.TarFileSet"
     />
  <typedef
     name="zipfileset"
     classname="org.apache.ant.compress.resources.ZipFileSet"
     />
  <typedef
     name="archives"
     classname="org.apache.ant.compress.resources.Archives"
     />
  <typedef
     name="bzip2resource"
     classname="org.apache.ant.compress.resources.BZip2Resource"
     />
  <typedef
     name="gzipresource"
     classname="org.apache.ant.compress.resources.GZipResource"
     />
  <typedef
     name="pack200resource"
     classname="org.apache.ant.compress.resources.Pack200Resource"
     />
  <typedef
     name="xzresource"
     classname="org.apache.ant.compress.resources.XZResource"
     />

  <componentdef
     name="hasusername"
     classname="org.apache.ant.compress.conditions.HasUserName"
     />
  <componentdef
     name="hasgroupname"
     classname="org.apache.ant.compress.conditions.HasGroupName"
     />
  <componentdef
     name="hasuserid"
     classname="org.apache.ant.compress.conditions.HasUserId"
     />
  <componentdef
     name="hasgroupid"
     classname="org.apache.ant.compress.conditions.HasGroupId"
     />
  <componentdef
     name="hasmode"
     classname="org.apache.ant.compress.conditions.HasMode"
     />

  <typedef
     name="devzero"
     classname="org.apache.ant.compress.resources.DevZeroResource"
     />
</antlib>
