PNG  IHDR  8] PLTE S =tRNS   PNG  IHDR  8] PLTE S =tRNS   REDROOM
PHP 7.4.33
Preview: krad.h Size: 8.72 KB
//usr/include/krad.h

/* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
/*
 * Copyright 2013 Red Hat, Inc.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 *    1. Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *
 *    2. Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in
 *       the documentation and/or other materials provided with the
 *       distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

/*
 * This API is not considered as stable as the main krb5 API.
 *
 * - We may make arbitrary incompatible changes between feature releases
 *   (e.g. from 1.12 to 1.13).
 * - We will make some effort to avoid making incompatible changes for
 *   bugfix releases, but will make them if necessary.
 */

#ifndef KRAD_H_
#define KRAD_H_

#include <krb5.h>
#include <verto.h>
#include <stddef.h>
#include <stdio.h>

#define KRAD_PACKET_SIZE_MAX 4096

#define KRAD_SERVICE_TYPE_LOGIN 1
#define KRAD_SERVICE_TYPE_FRAMED 2
#define KRAD_SERVICE_TYPE_CALLBACK_LOGIN 3
#define KRAD_SERVICE_TYPE_CALLBACK_FRAMED 4
#define KRAD_SERVICE_TYPE_OUTBOUND 5
#define KRAD_SERVICE_TYPE_ADMINISTRATIVE 6
#define KRAD_SERVICE_TYPE_NAS_PROMPT 7
#define KRAD_SERVICE_TYPE_AUTHENTICATE_ONLY 8
#define KRAD_SERVICE_TYPE_CALLBACK_NAS_PROMPT 9
#define KRAD_SERVICE_TYPE_CALL_CHECK 10
#define KRAD_SERVICE_TYPE_CALLBACK_ADMINISTRATIVE 11

typedef struct krad_attrset_st krad_attrset;
typedef struct krad_packet_st krad_packet;
typedef struct krad_client_st krad_client;
typedef unsigned char krad_code;
typedef unsigned char krad_attr;

/* Called when a response is received or the request times out. */
typedef void
(*krad_cb)(krb5_error_code retval, const krad_packet *request,
           const krad_packet *response, void *data);

/*
 * Called to iterate over a set of requests.  Either the callback will be
 * called until it returns NULL, or it will be called with cancel = TRUE to
 * terminate in the middle of an iteration.
 */
typedef const krad_packet *
(*krad_packet_iter_cb)(void *data, krb5_boolean cancel);

/*
 * Code
 */

/* Convert a code name to its number. Only works for codes defined
 * by RFC 2875 or 2882. Returns 0 if the name was not found. */
krad_code
krad_code_name2num(const char *name);

/* Convert a code number to its name. Only works for attributes defined
 * by RFC 2865 or 2882. Returns NULL if the name was not found. */
const char *
krad_code_num2name(krad_code code);

/*
 * Attribute
 */

/* Convert an attribute name to its number. Only works for attributes defined
 * by RFC 2865. Returns 0 if the name was not found. */
krad_attr
krad_attr_name2num(const char *name);

/* Convert an attribute number to its name. Only works for attributes defined
 * by RFC 2865. Returns NULL if the name was not found. */
const char *
krad_attr_num2name(krad_attr type);

/*
 * Attribute set
 */

/* Create a new attribute set. */
krb5_error_code
krad_attrset_new(krb5_context ctx, krad_attrset **set);

/* Create a deep copy of an attribute set. */
krb5_error_code
krad_attrset_copy(const krad_attrset *set, krad_attrset **copy);

/* Free an attribute set. */
void
krad_attrset_free(krad_attrset *set);

/* Add an attribute to a set. */
krb5_error_code
krad_attrset_add(krad_attrset *set, krad_attr type, const krb5_data *data);

/* Add a four-octet unsigned number attribute to the given set. */
krb5_error_code
krad_attrset_add_number(krad_attrset *set, krad_attr type, krb5_ui_4 num);

/* Delete the specified attribute. */
void
krad_attrset_del(krad_attrset *set, krad_attr type, size_t indx);

/* Get the specified attribute. */
const krb5_data *
krad_attrset_get(const krad_attrset *set, krad_attr type, size_t indx);

/*
 * Packet
 */

/* Determine the bytes needed from the socket to get the whole packet.  Don't
 * cache the return value as it can change! Returns -1 on EBADMSG. */
ssize_t
krad_packet_bytes_needed(const krb5_data *buffer);

/* Free a packet. */
void
krad_packet_free(krad_packet *pkt);

/*
 * Create a new request packet.
 *
 * This function takes the attributes specified in set and converts them into a
 * radius packet. The packet will have a randomized id. If cb is not NULL, it
 * will be called passing data as the argument to iterate over a set of
 * outstanding requests. In this case, the id will be both random and unique
 * across the set of requests.
 */
krb5_error_code
krad_packet_new_request(krb5_context ctx, const char *secret, krad_code code,
                        const krad_attrset *set, krad_packet_iter_cb cb,
                        void *data, krad_packet **request);

/*
 * Create a new response packet.
 *
 * This function is similar to krad_packet_new_requst() except that it crafts a
 * packet in response to a request packet. This new packet will borrow values
 * from the request such as the id and the authenticator.
 */
krb5_error_code
krad_packet_new_response(krb5_context ctx, const char *secret, krad_code code,
                         const krad_attrset *set, const krad_packet *request,
                         krad_packet **response);

/*
 * Decode a request radius packet from krb5_data.
 *
 * The resulting decoded packet will be a request packet stored in *reqpkt.
 *
 * If cb is NULL, *duppkt will always be NULL.
 *
 * If cb is not NULL, it will be called (with the data argument) to iterate
 * over a set of requests currently being processed. In this case, if the
 * packet is a duplicate of an already received request, the original request
 * will be set in *duppkt.
 */
krb5_error_code
krad_packet_decode_request(krb5_context ctx, const char *secret,
                           const krb5_data *buffer, krad_packet_iter_cb cb,
                           void *data, const krad_packet **duppkt,
                           krad_packet **reqpkt);

/*
 * Decode a response radius packet from krb5_data.
 *
 * The resulting decoded packet will be a response packet stored in *rsppkt.
 *
 * If cb is NULL, *reqpkt will always be NULL.
 *
 * If cb is not NULL, it will be called (with the data argument) to iterate
 * over a set of requests awaiting responses. In this case, if the response
 * packet matches one of these requests, the original request will be set in
 * *reqpkt.
 */
krb5_error_code
krad_packet_decode_response(krb5_context ctx, const char *secret,
                            const krb5_data *buffer, krad_packet_iter_cb cb,
                            void *data, const krad_packet **reqpkt,
                            krad_packet **rsppkt);

/* Encode packet. */
const krb5_data *
krad_packet_encode(const krad_packet *pkt);

/* Get the code for the given packet. */
krad_code
krad_packet_get_code(const krad_packet *pkt);

/* Get the specified attribute. */
const krb5_data *
krad_packet_get_attr(const krad_packet *pkt, krad_attr type, size_t indx);

/*
 * Client
 */

/* Create a new client. */
krb5_error_code
krad_client_new(krb5_context kctx, verto_ctx *vctx, krad_client **client);

/* Free the client. */
void
krad_client_free(krad_client *client);

/*
 * Send a request to a radius server.
 *
 * The remote host may be specified by one of the following formats:
 *  - /path/to/unix.socket
 *  - IPv4
 *  - IPv4:port
 *  - IPv4:service
 *  - [IPv6]
 *  - [IPv6]:port
 *  - [IPv6]:service
 *  - hostname
 *  - hostname:port
 *  - hostname:service
 *
 * The timeout parameter (milliseconds) is the total timeout across all remote
 * hosts (when DNS returns multiple entries) and all retries.  For stream
 * sockets, the retries parameter is ignored and no retries are performed.
 *
 * The cb function will be called with the data argument when either a response
 * is received or the request times out on all possible remote hosts.
 */
krb5_error_code
krad_client_send(krad_client *rc, krad_code code, const krad_attrset *attrs,
                 const char *remote, const char *secret, int timeout,
                 size_t retries, krad_cb cb, void *data);

#endif /* KRAD_H_ */

Directory Contents

Dirs: 54 × Files: 161

Name Size Perms Modified Actions
arpa DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
asm DIR
- drwxr-xr-x 2026-06-03 15:05:14
Edit Download
- drwxr-xr-x 2026-06-03 15:05:14
Edit Download
bits DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
bsock DIR
- drwxr-xr-x 2024-10-10 12:53:39
Edit Download
c++ DIR
- drwxr-xr-x 2025-09-15 15:41:50
Edit Download
criu DIR
- drwxr-xr-x 2026-06-04 09:57:48
Edit Download
curl DIR
- drwxr-xr-x 2026-03-10 18:10:35
Edit Download
drm DIR
- drwxr-xr-x 2026-06-03 15:05:14
Edit Download
et DIR
- drwxr-xr-x 2026-03-10 18:22:09
Edit Download
finclude DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
fwctl DIR
- drwxr-xr-x 2026-06-03 15:05:14
Edit Download
gdb DIR
- drwxr-xr-x 2026-03-10 18:21:15
Edit Download
gnu DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
google DIR
- drwxr-xr-x 2026-06-03 15:11:46
Edit Download
gssapi DIR
- drwxr-xr-x 2026-06-04 09:17:34
Edit Download
gssrpc DIR
- drwxr-xr-x 2026-06-04 09:17:34
Edit Download
kadm5 DIR
- drwxr-xr-x 2026-06-04 09:17:34
Edit Download
krb5 DIR
- drwxr-xr-x 2026-06-04 09:17:34
Edit Download
libxml2 DIR
- drwxr-xr-x 2025-12-01 03:41:00
Edit Download
linux DIR
- drwxr-xr-x 2026-06-03 15:05:14
Edit Download
lzma DIR
- drwxr-xr-x 2024-10-10 13:04:07
Edit Download
misc DIR
- drwxr-xr-x 2026-06-03 15:05:14
Edit Download
mtd DIR
- drwxr-xr-x 2026-06-03 15:05:14
Edit Download
mysql DIR
- drwxr-xr-x 2024-10-10 12:44:51
Edit Download
net DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
netash DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
netatalk DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
netax25 DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
neteconet DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
netinet DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
netipx DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
netiucv DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
netpacket DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
netrom DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
netrose DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
nfs DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
nghttp2 DIR
- drwxr-xr-x 2026-06-03 15:11:01
Edit Download
offload DIR
- drwxr-xr-x 2026-04-30 11:58:46
Edit Download
openssl DIR
- drwxr-xr-x 2026-03-10 18:22:22
Edit Download
pcp DIR
- drwxr-xr-x 2026-03-10 18:18:44
Edit Download
- drwxr-xr-x 2026-06-03 15:11:46
Edit Download
protocols DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
python3.9 DIR
- drwxr-xr-x 2026-06-03 15:11:46
Edit Download
rdma DIR
- drwxr-xr-x 2026-06-03 15:05:14
Edit Download
rpc DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
sasl DIR
- drwxr-xr-x 2026-03-31 19:13:44
Edit Download
scsi DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
selinux DIR
- drwxr-xr-x 2025-10-20 12:56:30
Edit Download
sepol DIR
- drwxr-xr-x 2026-03-10 18:22:09
Edit Download
sound DIR
- drwxr-xr-x 2026-06-03 15:05:14
Edit Download
sys DIR
- drwxr-xr-x 2026-08-12 11:53:26
Edit Download
video DIR
- drwxr-xr-x 2026-06-03 15:05:14
Edit Download
xen DIR
- drwxr-xr-x 2026-06-03 15:05:14
Edit Download
4.25 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
7.56 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
1.98 KB lrw-r--r-- 2026-08-03 10:12:05
Edit Download
1.17 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
1.69 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
24.95 KB lrw-r--r-- 2026-08-03 10:12:04
Edit Download
5.91 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
4.46 KB lrw-r--r-- 2026-08-03 10:11:42
Edit Download
1.42 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
7.95 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
2.07 KB lrw-r--r-- 2021-12-30 05:54:33
Edit Download
2.21 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
931 B lrw-r--r-- 2026-05-19 19:43:42
Edit Download
10.90 KB lrw-r--r-- 2022-02-10 04:05:00
Edit Download
10.71 KB lrw-r--r-- 2026-08-03 10:11:42
Edit Download
12.32 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
8.60 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
178.26 KB lrw-r--r-- 2026-08-03 10:12:06
Edit Download
2.25 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
2.80 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
2.29 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
1.64 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
2.36 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
1.49 KB lrw-r--r-- 2026-08-03 10:12:04
Edit Download
11.17 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
1.37 KB lrw-r--r-- 2026-08-03 10:11:40
Edit Download
17.69 KB lrw-r--r-- 2026-08-03 10:11:40
Edit Download
5.65 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
6.73 KB lrw-r--r-- 2022-01-30 08:23:38
Edit Download
3.16 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
2.24 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
3.50 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
3.04 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
9.35 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
6.19 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
4.11 KB lrw-r--r-- 2026-08-03 10:11:40
Edit Download
11.14 KB lrw-r--r-- 2025-04-25 20:16:30
Edit Download
17.42 KB lrw-r--r-- 2018-01-17 19:23:18
Edit Download
2.24 KB lrw-r--r-- 2018-01-17 19:23:18
Edit Download
1.43 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
7.13 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
2.29 KB lrw-r--r-- 2026-08-03 10:11:40
Edit Download
2.84 KB lrw-r--r-- 2020-01-03 07:11:27
Edit Download
6.53 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
4.42 KB lrw-r--r-- 2026-08-03 10:12:04
Edit Download
181 B lrw-r--r-- 2023-07-10 20:58:20
Edit Download
1.81 KB lrw-r--r-- 2026-08-03 10:11:40
Edit Download
13.57 KB lrw-r--r-- 2022-02-09 20:58:30
Edit Download
4.80 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
2.77 KB lrw-r--r-- 2026-08-03 10:12:05
Edit Download
8.14 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
62.83 KB lrw-r--r-- 2026-04-21 16:53:17
Edit Download
11.52 KB lrw-r--r-- 2023-04-05 19:15:53
Edit Download
8.72 KB lrw-r--r-- 2023-07-10 20:58:20
Edit Download
402 B lrw-r--r-- 2023-07-10 20:58:20
Edit Download
17.43 KB lrw-r--r-- 2026-08-03 10:11:40
Edit Download
126 B lrw-r--r-- 2026-08-03 10:12:06
Edit Download
9.10 KB lrw-r--r-- 2023-09-26 18:28:33
Edit Download
15.12 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
1.43 KB lrw-r--r-- 2025-03-13 12:28:31
Edit Download
72.36 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
9.24 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
1.55 KB lrw-r--r-- 2025-03-13 12:28:31
Edit Download
9.23 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
3.39 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
4.68 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
20.31 KB lrw-r--r-- 2025-04-25 20:16:30
Edit Download
1.35 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
4.47 KB lrw-r--r-- 2026-08-03 10:11:42
Edit Download
569 B lrw-r--r-- 2026-05-14 12:36:49
Edit Download
5.66 KB lrw-r--r-- 2022-02-10 03:17:35
Edit Download
59.24 KB lrw-r--r-- 2024-10-16 08:03:21
Edit Download
4.83 KB lrw-r--r-- 2024-10-16 08:03:21
Edit Download
16.96 KB lrw-r--r-- 2024-10-16 08:03:21
Edit Download
5.57 KB lrw-r--r-- 2026-08-03 10:11:40
Edit Download
7.62 KB lrw-r--r-- 2026-08-03 10:12:06
Edit Download
7.50 KB lrw-r--r-- 2026-08-03 10:11:40
Edit Download
4.85 KB lrw-r--r-- 2026-05-14 12:36:49
Edit Download
25.36 KB lrw-r--r-- 2026-05-14 12:36:49
Edit Download
599 B lrw-r--r-- 2026-05-14 12:36:49
Edit Download
15.45 KB lrw-r--r-- 2023-09-26 18:28:33
Edit Download
191 B lrw-r--r-- 2023-09-26 18:28:33
Edit Download
21.01 KB lrw-r--r-- 2023-09-26 18:28:33
Edit Download
1.62 KB lrw-r--r-- 2023-09-26 17:46:00
Edit Download
1.09 KB lrw-r--r-- 2023-09-26 18:28:33
Edit Download
9.63 KB lrw-r--r-- 2020-03-17 14:28:50
Edit Download
5.77 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
47.63 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
2.38 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
956 B lrw-r--r-- 2026-08-03 10:11:45
Edit Download
3.28 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
1.92 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
4.50 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
27.79 KB lrw-r--r-- 2026-08-03 10:12:05
Edit Download
1.56 KB lrw-r--r-- 2025-04-25 20:16:30
Edit Download
1.71 KB lrw-r--r-- 2026-08-03 10:11:42
Edit Download
14.07 KB lrw-r--r-- 2026-08-03 10:12:05
Edit Download
20.81 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
964 B lrw-r--r-- 2024-05-21 17:19:11
Edit Download
2.91 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
46.15 KB lrw-r--r-- 2024-10-02 21:57:27
Edit Download
6.52 KB lrw-r--r-- 2021-08-20 16:51:28
Edit Download
22 B lrw-r--r-- 2026-08-03 10:11:45
Edit Download
1.62 KB lrw-r--r-- 2026-05-19 19:43:42
Edit Download
6.71 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
3.40 KB lrw-r--r-- 2026-08-03 10:12:05
Edit Download
11.87 KB lrw-r--r-- 2026-04-21 16:53:37
Edit Download
47.39 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
1.53 KB lrw-r--r-- 2026-08-03 10:12:06
Edit Download
6.17 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
25.30 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
1.41 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
12.10 KB lrw-r--r-- 2026-08-03 10:12:05
Edit Download
963 B lrw-r--r-- 2026-08-03 10:11:45
Edit Download
4.92 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
5.32 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
3.38 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
3.12 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
1.31 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
5.34 KB lrw-r--r-- 2026-08-03 10:12:04
Edit Download
12.73 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
37.45 KB lrw-r--r-- 2024-05-21 17:19:11
Edit Download
8.10 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
264 B lrw-r--r-- 2026-08-03 10:11:46
Edit Download
2.24 KB lrw-r--r-- 2026-08-03 10:11:40
Edit Download
8.28 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
30.67 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
2.73 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
35.46 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
19.00 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
4.64 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
25 B lrw-r--r-- 2026-08-03 10:11:46
Edit Download
5.11 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
24 B lrw-r--r-- 2026-08-03 10:11:46
Edit Download
3.70 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
214 B lrw-r--r-- 2026-08-03 10:11:46
Edit Download
3.51 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
39.24 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
7.51 KB lrw-r--r-- 2026-08-03 10:11:44
Edit Download
15.65 KB lrw-r--r-- 2026-08-03 10:12:05
Edit Download
14.50 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
2.44 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
1.96 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
1.99 KB lrw-r--r-- 2026-08-03 10:11:43
Edit Download
1.55 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
43.45 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
1.86 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
3.15 KB lrw-r--r-- 2026-08-03 10:12:06
Edit Download
4.00 KB lrw-r--r-- 2026-08-03 10:12:06
Edit Download
1.91 KB lrw-r--r-- 2026-08-03 10:11:40
Edit Download
6.48 KB lrw-r--r-- 2022-02-10 04:33:39
Edit Download
18.98 KB lrw-r--r-- 2022-02-10 04:33:39
Edit Download
22 B lrw-r--r-- 2026-08-03 10:11:45
Edit Download
31.39 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
5.42 KB lrw-r--r-- 2026-08-03 10:11:46
Edit Download
2.44 KB lrw-r--r-- 2026-08-03 10:11:45
Edit Download
15.88 KB lrw-r--r-- 2023-09-26 09:22:15
Edit Download
25.81 KB lrw-r--r-- 2023-04-04 20:13:52
Edit Download
94.00 KB lrw-r--r-- 2023-09-26 09:22:15
Edit Download
167.36 KB lrw-r--r-- 2023-04-04 20:13:52
Edit Download
4.43 KB lrw-r--r-- 2023-04-04 20:13:52
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).
 !"#$%&'(()*+,-./00123456789 t\ wIDATx ]ys  47Y ƒ -  "  Rv  < f{Ɛ $k l L > L  ~h^ 1  [  r G t& h  l F z3O Y ! p A(_g̷ E8 )S 8 c  Kb"z ~ 5 J xAL WU <  *  5 m;W a pB h ~P J 2 3 6 ҙ .Ƹ P i  4g F R L P ΪK/D  M v (a3 k J Œ4N5* SH ` SdJ z  O J Xՠ V>u ߱ BE&L b2 ?2` tX+  c CB A$ i b C ĀMB E : /  # Dx &l =q Ty  0 \p I ( L Ǎ { e 4k ;`u^ヲ eP!( d {  )T A 8 O;Ě n >;s6 !  :Nx `[S D HU ~ q›J F} a g*D 49 / pn k h (t 8NxƐF _!r չ7 ZR R׷ q/5") Ӎ NY 0 x sZ!   o  fu  ,  K"$ ? pg  㕣=  1» {h " fh7    y  } € +7  $ y " X —ą - G P u 4 m >J 5 L =V ' ^@I p ?MS xЌ XV P ! h "C NS9B8̢ ]!K  e   zA , ӏkbY  !< XQ ٿyS| *" f { w  4@[S <  # 0 ! js [m  =,~ o "ݎ DHf Wo $ g ! Vԅ t mB /y Wf V4񺍸 c+@x?  B ~u " xUN e 0 BĂ) ~J pz! 7y6]l Ԥ@ P a< O /DHC `≻  N m"$  0ObB }{ x AO FCG D R ^ "B  { WDH  UR l@ T #  +"d T ; 0 i  D}. 7 ` ' ] w rE &S i ƕiTD EL P _ u h $ Ա FG wVD G L R Zf ' .!] J /ZR oGЍs Mr Ĥ ʬ 3 Q [3 cL ` ^ p + ( F;# B 5 '  2Y f [  ϶R0e }  E 7 6M aۮ H <& n % L] E}Up x紉, Uw' Q  Ǯշo k ވۙ 0N94 VX5 xEDE l D #֤ } C o )W :  ^ s 9  bRf iX5u ཱི 4 :[  T 1. | [E 2ؽ Iy\ : o x K G 5 ylP ' uK E ftb/i[3 .g _  [3M n G, #NwQ5~  ؚ) | n =Ц"x qg gB ` 듘 ~ x w ? ? R~  _ u. &VQ K˻   H C ( TN˄+ `C dA nB׭ D 3"Z G ê ^k H_ /- ~ " R_  .8 Z_ 6@ o  xg  uP ? 3լ @7AM!  E7^ - =V L  x  g-D0  CtmW 7  O  G _ WD0 g C  w1 r d w : a | \  *" f nֳ ^ H# f L ` Z ۽hV  }S F r0Ù Bć5r] @! NL iQ]{s^=4 d  WD  "  "   M; t" 8 5 e dL| "-*st" ) SWD ?R[S e ooF  20.D ? bo =) A i o d ģ ZҰaO @E =) i D a &ܟa CϞ y6 ,<%{^x%{f8? `iw^ ?/ M * IEND B`