7¤0ì]07¨W0ÓdffÊÍÌÌŒÃØc[Ò±’6.Z5j«Á®¥OfÁ™\ hÛUY~£± �t�€šã  ‡Å¢ñp,‡ÍÀ@•'O%‘$Ä(ŠÂ ‚†A„„�±Ò�   Äuø�dÈ                   LITTLE_ENDIAN 1
#undef  IS_BIG_ENDIAN
#else
#undefas AF_INET6 */
#endif

#ifdef __powerpc64__

#ifde by not only Linux but also other glibc systems
 *WithArgFN  func,
    void                *arg
);

as well as causing the
** entire process to stop.
) PR_SetFDCacheSize(PRIntn low, PRIntn high);

/*
Create extra virtual processor threads. Generally id) PR_DisableClockInterrupts(void);

/*
** Enable user threads has dropped
 * to zero.  When the prerform a graceful shutdown of NSPR.  PR_Cleanup() iority by using PR_SetPriority(), though
** at thi*
** Initialize the runtime. Attach a thread objece that NSPR has no cooperating dependencies.
*/

N
** of the library in question. That string will b>.<minor version>[.<patch level>] [<Beta>]"
*/
#de********************IDENTITY AND VERSIONING*******FILE *fp);

PR_END_EXTERN_C

#endif /* plhash_h___lue);

PR_EXTERN(void)
PL_HashTableRawRemove(PLHas

/* General-purpose C string hash function. */
PRTable *ht);

/* Higher level access methods */
PR_umber of table contractions */
#endif
};

/*
 * Crrator    valueCompare;   /* value comparison funct      *value;         /* ptr to opaque value */
};NHASH     4       /* just unhash the current entry_CALLBACK *PLHashComparator)(const void *v1, constefine PL_HASH_BITS 32  /* Number of bits in PLHash  name -- the name the shared-memory segment
**
**ed by shm is closed
**
** RETURNS: PRStatus
**
*/
NPUTS:
**   shm -- The handle returned from PR_Opeis mapped, or NULL.
**   NULL is returned on errorfine PR_SHM_CREATE 0x1  /* create if not exist */
segment.
**   flags -- Options for creating the shith the error set to
**   PR_FILE_NOT_FOUND_ERROR.create is (PR_SHM_EXCL | PR_SHM_CREATE) and the
**e
**   system. Set permissions and or access contron some
**   platforms may be smaller than your ree
**   mapped onto system paging space and be disce namespace. On Windows, the name is significant,  a
**   call to  PR_CloseSharedMemory() the PRShar sure to detach it when done.
**
**   PR_DetachShay
**   feature. For each named shared memory, as ds. To ensure that it works everywhere,
**   some ps multiple processes to access one or more common    PR_RWLock_Unlock
** DESCRIPTION:
**  Release a .
** OUTPUTS:     void
** RETURN:      None
******:
**  Apply a read lock (non-exclusive) on a RWLocI(PRRWLock*) PR_NewRWLock(PRUint32 lock_rank, conse reader writer lock, PRRWLock, is an opaque objec* Description: API to basic reader-writer lock funTHREAD_IN_MONITOR
** If the current thread is in |itor's condition variable. If a thread
** is waitie
** notify) or when the "ticks" timeout elapses.
URE if the
** calling thread has not entered the monitor is no longer in use. There must be no threa new monitor. Monitors are re-entrant locks with aT, this file should be declspec export.
 */

PR_ENING CONVENTION FOR struct
 *
 * all components shoonPoint which
 * is of type versionEntryPointType.previous packing */
#ifdef _WIN32
#pragma pack(pop      beta;           /* true if this is a beta coure is in use.
     * At this time, only version 2 naming conventions outlined further below.  The f_ASSERT_ARG avoids compiler warning: unused variabed(FORCE_PR_ASSERT)

#define PR_ASSERT(_expr) \
  e,level) 0
#define PR_LOG(module,level,args)

#endPR_LOG_TEST(_module,_level) \
    ((_module)->levethe log. "fmt" is a PR_snprintf format type. All
*new log module.
*/
NSPR_API(PRLogModuleInfo*) PR_Nr each module that uses logging.
**    "name" is tdule for ideas on
** what to log where.
**
*/

typleLevel. <args> is a printf() style of argument liial value: "WinDebug"
** (case sensitive). This vaPR_LOG_FILE specifies the log file to use
** unlesfy the numeric value of PR_LOG_ERROR.
**
** Speciainitialization.
**
** At execution time, you must service from a client program, you should create ae or part from code previously in Netscape's NSS
*es generate lots of noise, but
**   care is advisenerated size may be less than the size
**   requesoise() is at best, extremely difficult to
** predi**
**
** lth. 29-Oct-1999.
*/

#ifndef prrng_h___
*   The amount of system RAM, or 0 on failure.
**
tion:
** PR_GetNumberOfProcessors() extracts the nt least
** SYS_INFO_BUFFER_LENGTH bytes in length.rmation available via PR_GetSystemInfo(...) */
typparator.
**  Pathnames are then assumed to be of tddr);

PR_END_EXTERN_C

#endif /* prlink_h___ */
/t if successful, null otherwise.
**
** This increme runtime under the name
** "name". The symbols prvoid*) PR_FindSymbolAndLibrary(const char *name,
 libraries. Given the
** name of a procedure, returnter to
** a function, and not a pointer to void. ogram (the ".exe");
** use PR_LoadStaticLibrary toiously loaded library. If the library was a staticY   0x1  /* equivalent to RTLD_LAZY on Unix */
#destruct FSSpec *fsspec;
            PRUint32 index;ar *pathname;

        /* if type is PR_LibSpec_Maragment
** by name, a Mac code fragment by index, fy a file. PRLibSpec allows NSPR clients
** to use;

/*
** Given a library "name" try to load the liibraryName(const char *dir, const char *lib);

/*
 and a library name "lib" construct a full
** pathcaller can do whatever is
** convenient with the at32)
PR_FormatTimeUSEnglish(char *buf, PRUint32 bu   PRBool default_to_gmt,
    PRTime *result);

/*PR_ImplodeTime to transform it into
 * a PRTime (m9
 *   Mon Jan 16 16:12 +0130 1989
 *   6 May 1992RE
 * if the time/date string can't be parsed.
 *
aylight saving time rules (for testing only)
 */
NSPR.  Users
 *     should treat them as "read-onlyshould not be
 * manipulated:
 *   - tm_month and d);

/* Reverse operation of PR_ExplodeTime */
NSPtation is machine dependent.
 * Cf. time_t time(ti    to GMT before applying the DST rules.
 */

typime.  Most of the DST rules are expressed in localconsist of two steps:
 *       - Figure out the timeters tm_params;  /* time parameters used by conv    /* days past tm_mon (1-31, note that it
      m_mon;
 *       - we use absolute year, AD, not thll the information is available to reconstruct GMT tp_dst_offset;     /* contribution of DST in seco     readable form.
 *
 *     Notes on porting: PRne PR_USEC_PER_SEC     1000000L
#define PR_NSEC_PE----------
 */

#ifndef prtime_h___
#define prtimelasts);

/*
 * Things not (yet?) included: strspn/e value
 * of *lasts is ignored.  PL_strtok_r retukens, separated by one or more characters
 * from It returns null if either string is
 * null.  It r string is null.  It
 * returhar *little, PRUint32 n);

/*
 * PL_strnrstr
 *
 *g is null.
 */

PR_EXTERN(char *)
PL_strrstr(constthe first n characters) of any
 * character (not i is null.
 */

PR_EXTERN(char *)
PL_strprbrk(constcharacter
 * (not including the terminating null crrchr(const char *s, char c);

/*
 * PL_strnchr
 *ns null if the character is not found, or if the
 L_strchr
 *
 * Returns a pointer to the first instr non-existance (pointer is null) of the
 * stringstring comes after the second.  The
 * NSPR implem the lexical sorting order of the two strings indins null; otherwise, the destination argument is rergument, up to
 * the maximum size specified, to tUint32 max);

/*
 * PL_strcat
 *
 * Appends a copyrgument string, up to the maximum specified.  If t malloc'd extent of memory containing a duplicate
h a source "abcdefg" and a max of 5, the
 * destinffer, up to and including
 * the trailing '\0' or  buffer.  It does not (can not) verify that the deif no terminating '\0' is found, the maximum will atform consistency,
 *  2) complete the API on plae NSPR portable library or string-
 * handling funStatus)      PR_DestroyStack(PRStack *stack);

PR_:
**    A pointer to the stack element removed fro LIFO linked list
** INPUTS:
**    stack_name:  a TOMIC_INCREMENT(val) PR_AtomicIncrement(val)
#defi_INCREMENT(val) __sync_add_and_fetch(val, 1)
#defiINOR__ >= 1)) && \
      ((defined(__APPLE__) && \ATOMIC_ADD(ptr, val) \
        (_InterlockedExchantrin.h>

#ifdef _MSC_VER
#pragma intrinsic(_Interlompiler intrinsics.
**
** IMPORTANT NOTE TO NSPR Mto be set
**    newval: The newvalue to assign to    val:  a pointer to the value to increment
** RE     PR Atomic operations
*/

#ifndef pratom_h___
nt64);
NSPR_API(PRUint16) PR_htons(PRUint16);
NSPRNCTIONS: PR_ntohs, PR_ntohl, PR_ntohll, PR_htons, ned by a successful
**                      call tON: PR_GetCanonNameFromAddrInfo()
**  Extracts the              of the enumerator ('enumPtr'). The eINPUTS:
**  void *enumPtr       Index pointer of t The handle resulting from a successful call to
**           occurs, then NULL will be returned.
***     inspect the PRNetAddr values stored in this oby name. Equivalent to getaddrinfo(host, NULL, ...ESS. This structure
**                      is alle to return result.
**                      This bol name */
    char **p_aliases;   /* alias list *HostEnt *PRProtoEnt
**                      This sPR_GetProtoByName()
** Lookup a protocol entry basnt16                The 'port' field of 'addr'.
**rToIPv6(PRUint32 v4addr, PRIPv6Addr *v6addr);

/***  PRIPv6Addr *v6addr      The converted IPv6 addrAddrValue          The type of network address
**
tatus) PR_SetNetAddr(
    PRNetAddrValue val, PRUiUint16 af         The address family (either PR_AFLoopback,  /* assign logical INADDR_LOOPBACK  */
 rValue
{
    PR_IpAddrNull,      /* do NOT overwrif the network address. This can only specify the
*ex, const PRHostEnt *hostEnt, PRUint16 port, PRNet*address  A pointer to an address structure that wover a PRHostEnt structure acquired from
**  PR_GeGetHostByAddr(
    const PRNetAddr *hostaddr, charUF_SIZE.
** OUTPUTS:
**  PRHostEnt *hostentry
**  PR_AI_ADDRCONFIG  0x20
#define PR_AI_NOCANONNAME 0 PR_AI_ALL         0x08
#define PR_AI_V4MAPPED         for and the types of addresses that are retur *buf, PRIntn bufsize, PRHostEnt *hostentry);

/**            the function returns PR_SUCCESS. This stname      Character string defining the host namE sizeof(struct protoent_data)
#define PR_MIN_NETD6 h_length;   /* length of address */
#else
    PRthat WINSOCK.H defines h_addrtype and h_length as /. */

#ifndef prnetdb_h___
#define prnetdb_h___

bytes read from the client or -1 on failure.  The ly be valid if the function return does not indica of the PRNetAddr structures.  If 0, no data will on, also known as the rendezvous socket.
**    voi  PRInt32     tlen;           /* trailer len      a from file_offset to  */
    /* end-of-file.     ation failed.
**    If an error occurs while sendilag is passed, the
**    socket is closed after su  PR_SendFile sends data from a file (sendData->fdNSMITFILE_CLOSE_
**    SOCKET flag is ignored. TheFileFlags       flags
**        If the flags indicon-NULL, the headers will be sent across
**    the**********
 */

NSPR_API(PRInt32) PR_SendTo(
    Pn will block until all bytes are
 *    sent, a tim*fd, void *buf, PRInt32 amount, PRIntn flags,
    address of the sending peer. It may be NULL.
 *   s from socket which may
 *     or may not be connesfully processed.
 *     This number must always e       Time limit for completion of the send operaUNCTION: PR_Send
 * DESCRIPTION:
 *    Send a specf bytes actually received.
 *         0 means the _Recv
 * DESCRIPTION:
 *    Receive a specified nu*/
} PRShutdownHow;

NSPR_API(PRStatus)    PR_Shutbe disallowed
 *           PR_SHUTDOWN_BOTH - FurtTION:
 *    Shut down part of a full-duplex connec listen for new connections.
 *     PRIntn backlogress to which the socket will be bound.
 * O_Accept(
    PRFileDesc *fd, PRNetAddr *addr, PRIn*       communication space. It may be NULL.
 * REs not completed yet.
 *     - Other errors: the no and in_flags must contain PR_POLL_WRITE and PR_POctStatus on the
 *     PRPollDesc structure to dett has failed with this
 *       error code.
 */

Nns PR_FAILURE, call PR_GetError():
 *     - PR_IN_Poll() returns, one calls PR_ConnectContinue() on tContinue
 * DESCRIPTION:
 *     Continue a nonblonect timeout.  In particular, if you specify
 *   o the PRFileDesc created for the newly opened TCP S:
 *     PRIntn af
 *       Address family
 * OUT UDP socket of the specified address family.
 * IN a NULL pointer if the creation of a new TCP socke OUTPUTS:
 *     None
 * RETURN: PRFileDesc*
 *   Status
 *        If successful, will return a statoved. All the path components
 *        must alreaatus) PR_MkDir(const char *name, PRIntn mode);

/*tn mode
 *        See 'mode' definiton in PR_Open(

NSPR_API(PRStatus) PR_CloseDir(PRDir *dir);

#ifRDirEntryUTF16*) PR_ReadDirUTF16(PRDirUTF16 *dir, SPR_API(PRDirEntry*) PR_ReadDir(PRDir *dir, PRDirFR_SKIP_DOT_DOT  Skip the directory entry ".." thatSPR_API(PRDir*) PR_OpenDir(const char *name);

#if*     dynamically allocated and a pointer to it is0_SUPPORT)
#define PR_DirName(dirEntry)    (dirEnt
 *     PR_SUCCESS is returned if the requested ac    Sync any buffered data for a fd to its backingmpletion, PR_Available returns the number of
 *   et remains
 *     unchanged, and the returned valuR  Sets the file pointer to its current location
 th the 'whence' parameter to set the file pointer.R_ACCESS_EXISTS = 1,
    PR_ACCESS_WRITE_OK = 2,
 sted access is permitted.
 *     Otherwise, PR_FAIN:
 *     Determine accessibility of a file.
 * INUNCTION: PR_Rename
 * DESCRIPTION:
 *     Rename a   PR_GetFileInfo returns PR_SUCCESS if file inforfo64UTF16(const PRUnichar *fn, PRFileInfo64 *info)h name. This is
 *     applicable only to NSFileDe4 size;        /* Size, in bytes, of file's contenORY = 2,
    PR_FILE_OTHER = 3
} PRFileType;

stru:
 *     Delete a file from the filesystem. The opine PR_MAX_IOVECTOR_SIZE 16   /* 'iov_size' must bsize
 *         Number of elements in the iov arraet.  The data is organized in a PRIOVec array. Theon that the operation failed. The reason
 *     fo
 *     invoking this function blocks until all thFECTS:
 *     data is written into the buffer poinn error. No more than 'amount' bytes will be transTS:
 * RESTRICTIONS:
 *     None.
 * MEMORY:
 *   */
#define PR_IXOTH 00001  /* execute/search permine PR_IROTH 00004  /* read permission, others */
#PR_OpenFile has the same prototype as PR_Open but **   00200   Write by owner.
**   00100   Execute ATE_FILE  0x08
#define PR_APPEND       0x10
#defin file is
 *         created when PR_CREATE_FILE ise prior to each write.
 *      PR_TRUNCATE      If file status flags.
 *         It is a bitwise OR   Open a file for reading, writing, or both.
 * INsc *fd_stack, PRDescIdentity id, PRFileDesc *layero the stack
 * just above the layer with the indic**
 */
NSPR_API(PRFileDesc*) PR_CreateIOLayer(PRFistack, which has
 * the layer 'fd' as the topmost  the methods table
 * provided. The runtime will nR_GetDefaultIOMethods: Accessing the default methodentity) PR_GetUniqueIdentity(const char *layer_na    rv = PR_PushIOLayer(stack, PR_GetLayersIdentitayer
 * that one recongizes and therefore predict ndardError           /* standard error */
} PRSpecrgument is valid, PR_GetSpecialFD returns a file d*             PR_StandardInput: standard input
 * ith header/trailer*/
    PRConnectcontinueFN conne PRAcceptreadFN acceptread;      /* Accept and rea PRRecvfromFN recvfrom;          /* Solicit (net) ess with the fd    */
    PRListenFN listen;      FN available64;    /*          ditto, 64 bit      nt16 out_flags);
typedef PRIntn (PR_CALLBACK *PRResc *networkSocket, PRSendFileData *sendData,
    Pc *fd, PRInt16 in_flags, PRInt16 *out_flags);
type  PRFileDesc *fd, void *buf, PRInt32 amount,
    PPRInt32 iov_size,
    PRIntervalTime timeout);
typOffset32 offset, PRSeekWhence how);
typedef PROffsmount);
typedef PRInt32 (PR_CALLBACK *PRAvailableFcriptor. It is the responsibility of a layer implePR_SEEK_CUR = 1,
    PR_SEEK_END = 2
} PRSeekWhencby the write vector method to describe the areas
*   /* multicast interface address */
    } value;
                 * platforms that support it */
   PRSocketOptionData
{
    PRSockOption option;
    fragment flag */
    PR_SockOpt_Last
} PRSockOpti     /* don't delay send to coalesce packets */
  Linger,          /* linger on close if data presen descriptors can have predefined options set after  /* set of interfaces for a scope */
    } ipv6;
Uint16 family;                /* address family (06_addr      _S6_un._S6_u8
#define pr_s6_addr16    e PR_AF_INET6_SDP 102

#ifndef PR_AF_UNSPEC
#definT (unsigned long)0xffffffff

#else /* WIN32 */

#dPR_AF_LOCAL
** IP addresses: PR_INADDR_ANY, PR_INA be closed after the file
** is transmitted.
***** PRFileDesc {
    const PRIOMethods *methods;     e to that layer. All each layer
** knows about its  PRDirUTF16;
typedef struct PRDirEntryUTF16  PRDi
/*
 * File:     prio.h
 *
 * Description:    PR idif /* defined(PLGETOPT_H_) */

/* plgetopt.h */

single character names by giving the longOption intion string, or will
 *   be NULL if option does n)
 *   option or a positional parameter.
 * For a that was parsed,
 *   or zero.
 * When opt->option' then the next argument from argv is taken as theLOptState;

/*
 * PL_CreateOptState
 *
 * The arguvalueRequired; /* If option name not followed by 'l PLOptionInternal;

typedef enum
{
    PL_OPT_OK,extern void pr_static_assert(int arg[(condition) ?e assert. "condition" must be a constant expressiol C++ extern block delimiters.
*/
#ifdef NSPR_BEGID_NORETURN __attribute__((analyzer_noreturn))
#endic analyzers, like scan-build from clang, can use com/docs/books/vmspec/index.html.)
*/
#ifdef _WIN6efine __PRUNICHAR__
#ifdef WIN32
typedef wchar_t P but minimum and consistant overhead matters.
****nd parameter types. Use PR_FALSE and PR_TRUE
**   ointer difference. Variables of this type are suitnt32 PROffset32;
typedef PRInt64 PROffset64;

/***A type for representing the size of objects.
******      never valid for fields of a structure.
****INT64_MIN (PRInt64){0xffffffff, 0xffffffff}
#defin  PRInt64;
typedef unsigned __int64 PRUint64;
#defL_INIT macro defined in prlong.h has
**      to bes topday). If PRInt64 and PRUint64
**      are defiables of type PRUint64 or PRInt64. Different hardT32(x)  x ## L
#define PR_UINT32(x) x ## UL
#else

typedef unsigned int PRUint32;
typedef int PRInt3 PR_INT16_MIN
 *              PR_UINT16_MAX
 * DESm and minimum values of a PRInt8 or PRUint8.
*****f signed char PRInt8;
#endif
#else
#error No suitaed char', it results in a type mismatch.
** On sucbits each. There is no type that
**      is equivaailable. This strange requirement is gone in
** C1ifferent strategy: simply define the 64-bit
** int This allows sloppy
** code to use PRInt{N} and in*      Commonly used macros for operations on comp        PR_BITMASK
** DESCRIPTION:
** Bit masking __cplusplus
#define PR_BEGIN_EXTERN_C       extern behave syntactically more like functions when calstatic __x

#endif

#if defined(_NSPR_BUILD_)
#def\
    (__GNUC__ == 3 && __GNUC_MINOR__ >= 3)
#defispec(dllexport) __type

#define PR_CALLBACK
#definCALLBACK_DECL
#define PR_STATIC_CALLBACK(__x) statXTERN( void ) DoWhatIMean( void );
**   in dowhim.*      Define a macro for declaring procedures rethere
** for all C files.
**/

#ifndef prtypes_h___up for deficiencies that we have found
** in ANSI **
** Notify the condition specified 'cvar'.
**
**ime expires than that declared in
** 'timeout' theP_NakedWait, PRP_NakedNotify, PRP_NakedBroadcast);_LOCK (PRLock*)0xdce1dce1

/*
** Test and acquire       intent that this be a fully supported API.
 PR_PostSemaphore(PRSem *sem);

/*
 * PR_CloseSemape PR_SEM_EXCL   0x2  /* fail if already exists */
e third and fourth
 * arguments are ignored.
 */

function in this API.
 */

#ifndef pripcsem_h___
# by specifying its name.
 *
 * Our goal is to suppLOCKS)
#define PR_UNLOCK_ORDERED_LOCK(lock) PR_UnlrderedLock() unlocks the lock referenced
** by locPUTS: The lock is held or the function asserts.
**ed by lock.
**
** INPUTS: lock: pointDestroyOrderedLock() -- Destroy an Ordered Lock
** debugging purposes.
**
** OUTPUTS: returned
**
**hread-safe and SMP safe.
**
** See Also: prlock.h
ompiled with the
** facility enabled to achieve th lock ordering detection is compile-time enabled oorTable(void);
#define ERROR_TABLE_BASE_nspr (-600ibrary is not loaded */
#define PR_LIBRARY_NOT_LOA   (-5934L)

/* Operation has already been initiatration is still in progress (probably a non-blocki943L)

/* Directory is full.  No additional filena        (-5948L)

/* Cannot delete a directory tha(-5950L)

/* Cannot perform directory operation on(-5958L)

/* Write would result in file larger thauffer provided */
#define PR_BUFFER_OVERFLOW_ERROR_BOUND_ERROR         (-5967L)

/* Access Denied */ is full */
#define PR_PROC_DESC_TABLE_FULL_ERROR  not found in any of the loaded dynamic libraries nreachable */
#define PR_NETWORK_UNREACHABLE_ERROR supported */
#define PR_ADDRESS_NOT_SUPPORTED_ERRer thread */
#define PR_PENDING_INTERRUPT_ERROR      (-5994L)

/* Operation interrupted by anothe        (-6000L)

/* Invalid file descriptor */
#d
PR_ShutdownThreadPool(PRThreadPool *tpool);

/* jtpool, PRJobIoDesc *iod,
                   PRJobFRBool joinable);

/* queue a job, when a socket isueue a job */
NSPR_API(PRJob *)
PR_QueueJob(PRThre      THIS API IS A PRELIMINARY VERSION IN NSPR 4.e PR_FREEIF(_ptr) if (_ptr) PR_DELETE(_ptr)

PR_EN*   PR_DELETE() unallocates an object previosly aled memory to all 0x00.
** INPUTS:  _struct: a datafine PR_CALLOC(_size) (PR_Calloc(1, (_size)))

/**e heap as a _size
**   untyped item.
** INPUTS:  _ a data type
** OUTPUTS: pointer to _struct
** RETR_MALLOC()
** DESCRIPTION:
**   PR_NEW() allocatesloc, or PR_Realloc
** must be freed by PR_Free.
*/oc, free, calloc, realloc so they are already
** tstring
);

PR_END_EXTERN_C
#endif /* prshma_h___ *identifying string
**
** Description:
** PR_Import*   buf -- a buffer of length PR_FILEMAP_STRING_BUect exported from
** its parent process via PR_Cre**   PRFileMap *
**
** Returns:
**   PRStatus
**
*me to contain the anonymous file.
**   size -- The*
** On Unix platforms, PR_OpenAnonFileMap() uses (7/1999); this is
** to accomodate servers which a** Client:
**   ... started by server via his own AttrSetInheritableFileMap( attr, fm, shmname );
**ode below shows the use of a file-mapped
** sharedess(). In the
** second protocol, the parent procetem is
** visible to other processes for only the emory that is accessable only by parent and child vides an anonymous shared memory based on NSPR's P#endif

/* Don't call this function directly. */
Nead owns |lock|, this assertion is guaranteed to
*    PR_Unlock
** DESCRIPTION:
**  Unlock a lock.  troyLock
** DESCRIPTION:
**  Destroys a given opaqinter to a newly created opaque lock object.
** IN of the
 *     API.  All routines operate on a poihread synchronization.  Locks
** are lightweight r <windows.h> inclusion at customer's request, whicefined(WIN32)

/*
 * Do not include any system hea3, the header <arpa/inet.h> refers to struct
 * etintended to be included by NSPR public header
 *  macros and
 *       functions.  It simply uses thees:
 *     - A cross-platform, "get-everything" song */
#define PL_ArenaCountRelease(ap, mark)      naCountRetract(PLArenaPool *pool, char *mark);

PRid) PL_ClearArenaPool(PLArenaPool *pool, PRInt32 pUint32 incr);

PR_EXTERN(void) PL_ArenaRelease(PLA*
** Free the arenas in pool and finish using it anters plus any
** necessary padding for alignment.m gross size per arena of size bytes.  The net sizAMETER
#define PL_COUNT_ARENA(pool,op) ((pool)->st(a), PL_FREE_PATTERN, (a)->limit - (PRUword)(a)); imit - (a)->avail); \
        memset((void*)(a)->a     p = NULL; \
        } else if (_a->avail == (    _p = (PRUword)PL_ArenaAllocate(pool, _nb); \
 _MACRO \
        PLArena *_a = (pool)->current; \
y define
 * PL_ARENA_CONST_ALIGN_MASK to the align\
    __asan_unpoison_memory_region((addr), (size)AddressSanitizerManualPoisoning
 */

PL_ASAN_VISIB header. Do NOT
 * define or test this macro in yoKE_MEM_DEFINED - Mark memory as accessible, with c        /* alignment mask (power-of-2 - 1) */
#ifdena in pool list */
    PLArena     *current;     A_ALLOCATE() calls */
    PRUint32      nreclaims;address, follows this header */
    PRUword     liefine plarena_h___
/*
 * Lifetime-based fast allocid) PR_W16SetExceptionContext(void *context);

PR_
** Get the exception context for Win16 MFC applic
NSPR_API(int)     PR_MD_fprintf(FILE *fPtr, conste_t size );
NSPR_API(void*)   PR_MD_calloc( size_tallBackPutenv( const char *assoc );

/*
** Hackerychar *fmt,
    const struct tm *p );
void * PR_CALt     (PR_CALLBACK *auxOutput)(const char *outputSite     */
);

NSPR_API(PRInt32)
_PL_W16StdioWriteations.
**
** See also: w16io.c, w16stdio.c
*/
typfunction
** PR_MD_RegisterW16StdioCallbacks() is c*
** To make sure that PR_fprintf(), and related fTERN_C
/*
** Windows stdio special case.
** To get _lo_d.lo = _absval; \
    LL_ADD(l, l, _lo_d); \
ine LL_D2L(l, d) { \
    int _negative; \
    doub        { double _d; LL_L2D(_d, l); (f) = (PRFloat \
}

#define LL_USHR(r, a, b) { \
    if (b) { \
nt64 _a; \
        _a = a; \
    if ((b) < 32) { \    (r) = (a); \
    } \
}

/* a is an PRInt32, b  \
    LL_NEG(_b, b); \
    } else { \
    _b = b;(void) ll_udivmod(PRUint64 *qp, PRUint64 *rp, PRUi     _y3 = _a1 * _b1; \
     _y1 += _hi16(_y0);   ).lo = _a.lo + _b.lo; \
    (r).hi = _a.hi + _b.hiR(r, a, b)        ((r).lo = (a).lo | (b).lo, \
           ((PRInt32)(a).hi op (PRInt32)(b).hi))
#defNT   LL_MaxInt()
#define LL_MININT   LL_MinInt()
#duce both a quotient and a remainder given an unsiRInt32)(l))
#define LL_L2UI(ui, l)        ((ui) =        Convert to signed 32 bit
**  LL_L2UI       _SHL            Shift left [0..64] bits
**  LL_SHR))
#define LL_SUB(r, a, b)     ((r) = (a) - (b))

       ((r) = (r) | (a))
#define LL_NOT(r, a)     **  LL_XOR            Logical exclusion
**  LL_OR2ve
**  LL_CMP            Compare two values
******rtable access to the 64 bit
**      math facilitie   0LL
#define LL_MAXUINT  18446744073709551615ULLLL_MININT   (-LL_MAXINT - 1L)
#define LL_ZERO     arious interesting constants and static variable
*bit numerics
**
** Long-long (64-bit signed intege the above
** construct.
*/

#if defined(_MSC_VER)mpilers convert
** this to a rotate instruction, bg2) += 2, (j_) >>= 2;   \
    if ((j_) >> 1)      1); \
  PR_END_MACRO
#else
#define PR_FLOOR_LOG2(_g2) += 8, (j_) >>= 8;   \
    if ((j_) >> 4)      else
#define PR_CEILING_LOG2(_log2,_n)   \
  PR_BEL << ((_bit) & (PR_BITS_PER_LONG-1))))

/*
** Comp_TEST_BIT(_map,_bit) \
    ((_map)[(_bit)>>PR_BITS2(val)
# define pr_bitscan_clz32(val)  __prBitScan_BitScanForward,_BitScanReverse)
__forceinline starivate);

PR_END_EXTERN_C

#endif /* prerror_h___ kup' and `newtable' contain pointers to
**  the plable with NSPR.  Must be done exactly once per
** t char * const *) PR_ErrorLanguages(void);


/****ns the RFC 1766 language tags for the language
** st char *) PR_ErrorToString(PRErrorCode code,
    uested language.  May return the message
**  in the.  Does not need to be thread
 *    safe.
 */
typ function PRErrorCallbackNewTableFn type is a loca    A function of PRErrorCallbackLookupFn type is allbackTablePrivate --
 *
 *    A data structure u PR_LANGUAGE_EN 1 /* English, explicitly negotiatealways "i-default" the language you get without
 *n may
** provide a localization plugin, allowing sr code numbers to names and default English descriems that can pass integral values between
** them lly,
** the high order 24 bits are an identifier ore preliminary in the 3.1 release of nspr and are tice appear in supporting
documentation, and that etErrorText(char *text);


/*
Copyright (C) 1987, ific code that desires the underlying os error.
*/ The text value specified may be NULL. If it is notion of
** the error. Also, if available, the plat function may not interoperate as
**   expected wied array of null-terminated strings,
**   like theironment so that it can be
** modified without cha of the form name=value. Where
**   name is the natforms may have platform-specific privilege elevatc.) must not be used with
**   NSPR's similar funcent. That is: The string should
**   not be on therameter is
**   of the form "name=" may un-set theterpret the return of a pointer to null-string to
uent call to getenv() returns NULL. On
**   other  would be
**   consistently implemented everywhereion:
** PR_GetEnv() is modeled on Unix getenv().
*MACRO

#define PR_INIT_STATIC_CLIST(_l) \
    {(_lcircular list "_l" is empty, zero if the
** circul** Remove the element "_e" from it's circular listne PR_APPEND_LINK(_e,_l) PR_INSERT_BEFORE(_e,_l)

    PRCList *prev;
};

/*
** Insert element "_e" iclude "prtypes.h"

typedef struct PRCListStr PRCLi       variable number of arguments, each of them t, int, long,
**       and double.
**     - PR_sscby its arguments according to the format control
*r *fmt, va_list ap);
NSPR_API(char*) PR_vsmprintf(
NSPR_API(char*) PR_sprintf_append(char *last, con) PR_smprintf_free(char *mem);

/*
** "append" spr
/*
** sprintf into a PR_MALLOC'd buffer. Return abit versions of above
**  %s - string
**  %c - chaERN_C


#endif /* !defined(prinrval_h) */

/* prin_IntervalToMilliseconds(PRIntervalTime ticks);
NSPoMilliseconds
**              PR_IntervalToMicroseS:
**  Conversion may cause overflow, which is notnd for PR_IntervalNow's clock.
**  The value will re chosen
**  such that they are appropriate for tNSPR's free running interval timer. That timer
** IMEOUT passed as input to PR_Connect is
**  interpange (in ticks / second) of the
**  platform depen** DESCRIPTION:
**  These two constants define thedless
** of host processing requirements and also read);

PR_END_EXTERN_C

#endif /* prthread_h___ *rror and will result
** in a PR_FAILURE error retuthread. If no such request
** is pending, this opePI(void*) PR_GetThreadPrivate(PRUintn tpdIndex);

iously registered
** destructor function and a nonth the index for all threads
** is NULL, and upon ly get access to its own thread-specific-data.
**
-thread-private data table.
** The index is visiblsible in a debugger
** and accessible via a call tege, such as root access, is required to change thlly and others will terminate with an error PR_FAI
/*
** Wait for thread termination:
**     "threadPRThread*) PR_CreateThread(PRThreadType type,
    ator to do
** something, enter a lock before createad to create
**     "start(arg)" will be invoked THREAD,
    PR_SYSTEM_THREAD
} PRThreadType;

type joinable.
** It allows other threads to wait for *
** Threads also have a "scope flag" which controg attributes of "GLOBAL" threads.
** However, a seI for NSPR threads. On some architectures (Mac OS  PRIntn *sign, char **rve, char *buf, PRSize bufsiIf rve is not null, *rve is set to point to the en by se. If no number can be formed, se is set to sPRStatus) PR_KillProcess(PRProcess *process);

PR_
    const char *path,
    char *const *argv,
    ith
** the supplied arguments and environment.
**
) PR_SetStdioRedirect(
    PRProcessAttr *attr,
   */

#ifndef prproces_h___
#define prproces_h___

list, with the monitor's cache-key passed in addretor cache.
*/
NSPR_API(PRStatus) PR_CNotify(void *tor(void *address);

/*
** Like PR_ExitMonitor excto use than uncached monitors.
*/
#include "prmon.___
#define prcmon_h___

/*
** Interface to cachedis indeterminant. The lock that protects
** the co* The particular reason can be extracted with PR_Galler has not locked the lock associated
** with tt will attempt to reacquire
** the lock that it he
** The thread that waits on a condition is blocke This may fail if memory is tight or if some opera
#endif /* defined(PLERROR_H) */

/* plerror.h */
 to "syserr" prepending 'msg' if not NULL.
*/
PR_ER_API(PRCounterHandle)
PR_FindNextCounterRname(
  ONS:
**  A concurrent PR_CreateCounter() or PR_Des or NULL.
**  qhandle: PRCounterHandle of a previove the next RName counter
** handle iterator
**
**dNextCounterQname() function call; other
** operathandle previosly
** retreived QName handle, then t to be replaced.
**
**  value: the new value of th) -- Replace the content of counter
** with value.  PRCounterHandle handle,
    PRUint32 value
);


ndle),(value))
#else
#define PR_SUBTRACT_FROM_COUN-
** FUNCTION: PR_SubtractFromCounter() -- A valueNCTION: PR_AddToCounter() -- Add a value to a counnterHandle of the coutner to be
** decremented.
**CREMENT_COUNTER(handle) PR_IncrementCounter(handleandle((handle),(qName),(rName),(description))
#elscopies of the names
** used when the counters wereFROM_NAME(handle,qName,rName)\
    (handle) = PR_GName() retreives a
** counter's handle from the coandle: the PRCounterHandle of the counter to be dest char *rName,
    const char *description
);

/*he maximum length
** of qName is defined by PRCOUN** The macro form takes as its first argument the 
** PR_INIT_COUNTER_HANDLE() sets the value of a PCOUNTER_NAME_MAX 31
#define PRCOUNTER_DESC_MAX 255erformance impact in optimized
** builds. The macr the entire counter database
** may not be viewed g the Counter API. Creating a
** counter locks a loriginally created.
** Similarly, a counter's namenter
** will wrap. No exception is recognized or rounter Feature provides a means to "count
** somet    /* where to write output */
    PRInt32       hen frequency of calls to the
** function, seriousber of trace entries to be copied into buffer.
**
ies from the Trace
** Facility. Up to count trace ACE)
#define PR_RECORD_TRACE_ENTRIES()\
    PR_Rec other
** variables that some trace records can beStopRecording
** option. This suggests that PR_Rec() is called from an application
** thread, the fuine PR_FIND_NEXT_TRACE_RNAME(next,rhandle,qhandle)or to traverse the RName handles in the Trace datandNextTraceRname() retreives the first or next traONS:
**  Iterating thru the trace handles via FindION: PR_FindNextTraceQname() -- Retrieive a QName TRACE)
#define PR_GET_TRACE_NAME_FROM_HANDLE(handls the existing qName,
** rName, and description foame,rName)
#endif

NSPR_API(PRTraceHandle)
PR_GetTromName() -- Retrieve an existing
** handle by namn().
**
** OUTPUTS:
**  dependent on command.
**
*lue             /* command value or NULL */
);


/aceOption(
    PRTraceOption command,  /* One of te the trace handle lock is held,
** calls to PR_Cra suspended state, the call has no
** effect.
**
*rding causes PR_RecordTraceEntries() to return
** cility may be
** changed.
**
** INPUTS:
**  commanTraceOption() -- Control the Trace Facility
**
** s trace handle */
    PRUint32    userData0,      ine PR_TRACE(handle,ud0,ud1,ud2,ud3,ud4,ud5,ud6,udle, the table wraps.
**
** PR_Trace() for a specife PR_DESTROY_TRACE(handle)\
    PR_DestroyTrace((h*  PR_DestroyTrace() removes the referenced trace 
**  rName is limited to 31 characters.
**  descri_CreateTrace() registers the QName, RName and descANDLE( myHandle, NULL );
**
*/
#if defined (DEBUG)ockHandles,
    PRTraceStopRecording
} PRTrac PRTraceSuspendRecording,
    PRTraceResumeRecordihandle
** ... Don't even think about looking in hedesigners should be aware of the effects of
** debes may be realized at link
** time.
**
** For any ime, the Trace Facility is
** compiled as part of enable and disable tracing based on specific user
rguments to be traced. The "Trace" function
** comde that
** includes it will still work.
**/
#incluDWORD_LOG2
#define WORDS_PER_DWORD_LOG2	PR_WORDS_PF_INT64		PR_ALIGN_OF_INT64
#define ALIGN_OF_FLOAT	_FLOAT		PR_BITS_PER_FLOAT
#define BITS_PER_DOUBLE	_DOUBLE
#define BYTES_PER_WORD		PR_BYTES_PER_WORD
F_INT64 == 8
#define HAVE_ALIGNED_LONGLONGS
#endifTS_PER_INT     32
#define PR_BITS_PER_INT64   32
#ned(__microblaze__) && defined(__BIG_ENDIAN__)
#dee PR_BYTES_PER_DWORD_LOG2  3

#elif defined(__niosBYTES_PER_DWORD_LOG2 3

#elif defined(__arc__)

#ddef  IS_BIG_ENDIAN
#define IS_LITTLE_ENDIAN 1
#defTES_PER_DWORD_LOG2  3

#elif defined(__or1k__)

#uTES_PER_DWORD_LOG2  3

#elif defined(__m32r__)

#u_BYTES_PER_DWORD_LOG2  3

#elif defined(__sh__)

#(__s390__)

#dES_PER_DWORD_LOG2  3

#elif defined(__s390x__)

#dYTES_PER_DWORD_LOG2 3

#elif defined(__hppa__)

#u#error "Unknown Aarch64 endianness."
#endif
#definef  IS_BIG_ENDIAN
#else
#error "Unknown ARM endianPR_BYTES_PER_DWORD_LOG2  3

#else /* _ABI64 */

#d endianness."
#endif

#if _MIPS_SIM == _ABI64

#de <sgidefs.h>
#else
#include <asm/sgidefs.h>
#endifTES_PER_DWORD_LOG2  3

#elif defined(__i386__)

#d	IS_LITTLE_ENDIAN
#define	IS_BIG_D_LOG2  3

#elif defined(__sparc__)

#undef	IS_LITined(__sparc__) && defined (__arch64__)

#undef	ISLIGN_OF_SHORT   2
#define PR_ALIGN_OF_INT     2
#dORD_LOG2 3

#endif

#elif defined(__mc68000__)

#u 2
#define PR_BYTES_PER_DWORD_LOG2  3

#else

#def#elif defined(__x86_64__)

#ifdef __ILP32__

#defiES_PER_DWORD_LOG2  3

#elif defined(__alpha)

#defefined(__powerpc__)

#ifdef __LITTLE_ENDIAN__
#def_AF_INET6 10  /* same as AF_INET6 */
#endif

#ifdeine nspr_cpucfg___

#ifndef XP_UNIX
#define XP_UNI/3
 * to avoid PRUint32 overflow.  Alternatively, ize (which may be calculated: (srclen * 3)/4
 * whf the
 * "srclen" parameter is not zero, it specifity to free the result when it is allocated.  A nu"dest" parameter is not
 * null, it is assumed to */

#ifndef _plbase64_h
#define _plbase64_h

#inclcsem.h"
#include "prlink.h"
#include "prlock.h"
#ipr_h___
#define nspr_h___

#include "pratom.h"
#infrom the
**      enumeration.
**
**      An enumeraitGroup is a thread safe enumerator over a wait gce
**      used as an argument becomes invalid.
**     intermediate state of enumerations.
** ERRORSrocess. It may be be the default wait group (NULL)

/*
** FUNCTION:    PR_CreateMWaitEnumerator
** Doup will be treated as if the each had been the ta remains valid until it is explicitly destroyed
**he same wait group.
**
**  INPUT
**      size     GROUP_EMPTY_ERROR
*/
NSPR_API(PRRecvWait*) PR_Cancobjects prior to calling PR_DestroyWaitGroup().
**). Each
**      successive call will return a poingroup' argument is not recognized as a valid groupter to the wait receive object that is to be
**         available thread waiting on the group will b    The 'group' is not known by the runtime.
**     The outcome of the wait operation may still fail**      file descriptors that have been added via ileDesc(PRWaitGroup *group, PRRecvWait *desc);

/*ion.
**      desc        A reference to a valid PR**
**  INPUTS
**      group       A reference to a the
**      pseudo-stateless enumerator. The enum where to store first segment of input data */
    memory
**      in the caller's address space wherPRMWaitClientData;

/*
** STRUCTURE:   PRRecvWait
His is a descriptor for an interval of memory. It 
} PRMWStatus;

/*
** STRUCTURE:   PRMemoryDescripe amount of time allowed for by the object's
**   sed to indicate the completion status of
**      ader to semantically
**      tie a collection of fi*************** about the stability of this ****** */

#if defined(_PRMWAIT_H)
#else
#define _PRMWAIus) PR_CallOnceWithArg(
    PRCallOnceType      *owill cause a core file,
** call to the debugger oro is for performance,
** any other value probably 

/*
** Block Interrupts
**      Blocks the timer   Enables timer signals used for pre-emptive schednly if it is
 * the primordial thread, until the n, PRIntn argc, char **argv, PRUintn maxPTDs);

/*
** The priority of the main (or primordial) thread not the only mechanism, provides a method to get _API(PRBool) PR_VersionCheck(const char *importedVompared against an
** equivalent string that represed to determine the likelihood that the version y/*
** NSPR's name, this should persist until at leemented using PL_HashTableEnumerateEntries. */
PR_ht, PLHashEntry **hep, PLHashNumber keyHash,
     e *ht, PLHashEnumerator f, void *arg);

/* GeneralRN(void *)
PL_HashTableLookup(PLHashTable *ht, conps built on top of malloc().
 */
PR_EXTERN(PLHashT
    const PLHashAllocOps *allocOps;     /* alloca linkage */
    PLHashNumber        keyHash;      LBACK *allocEntry)(void *pool, const void *key);
 define HT_ENUMERATE_NEXT       0       /* continueshEntry  PLHashEntry;
typedef struct PLHashTable  
NSPR_API( PRStatus )
PR_DeleteSharedMemory(
    cses the shared-memory described by
**   shm.
**
**dr -- The address at which the memory was attachedMemory *shm,
    PRIntn  flags
);
/* Define values*/

/*
** FUNCTION: PR_AttachSharedMemory()
**
** Error() and PR_GetOSError();
**
*/
NSPR_API( PRSha memory does
**   not exist, NULL is returned withgment with name.
**
**   When parameter create is  security measures are provided.
**
** Example:
** limits on both the number and size of
**   sharedo assumptions about the persistence of data in thesults.
**
** Files:
**   The name passed to PR_Ope  PRSharedMemory object is required within a procehe memory segment to an address in
**   the applic PR_OpenSharedMemory() call, a protocol for using on the native services offered
**   by most platfoshared-memory interface. NSPR Named Shared Memory k. Unlocking an unlocked lock has undefined resultPR_API(void) PR_RWLock_Wlock(PRRWLock *lock);

/**WLock
** INPUTS:      PRRWLock *lock - Lock to be f resource constraints, NULL
**   is returned.
**
UNCTION:    PR_NewRWLock
** DESCRIPTION:
**  Retur NSPR.
**
**/

#ifndef prrwlock_h___
#define prrwlONITOR(/* PRMonitor* */ mon) \
    PR_AssertCurrention are scheduled to reenter the
** monitor.
*/
Nill be resumed when the monitor is
** notified (asthe decremented
** entry count is zero, the monitoitor(PRMonitor *mon);

/*
** Enter the lock associ is low.
*/
NSPR_API(PRMonitor*) PR_NewMonitor(voiption_libfoo_so { fill it in };
 * on NT, this fil
 * PR_IMPLEMENT(const PRVersionDescription *) libription*) libVersionPoint(void)
 *   {
 *       re*/
} PRVersionDescription;

/* on NT, restore the * Patch level of this component */

    PRBool    struct {
    /*
     * The first field defines whit expose
 * a structure and a function. The struct#define PR_NOT_REACHED(reasonStr)

#endif /* definPR_LOG_DEFINE(_name)    NULL
#endif /* PR_LOGGING (FORCE_PR_LOG) */

#ifndef NO_NSPR_10_SUPPORT

#ifucture
**    "level" is the desired logging level
buffer_size" is zero then the
** logging becomes " *name;
    PRLogModuleLevel level;
    struct PRL_WARN = PR_LOG_WARNING,   /* warning messages */
 ill be
** written to the file "logfile.txt".
**
**   PR_LOG( myLm, PR_LOG_ALWAYS, ("Log this! %d\n", put log messages in your programs, use the PR_LOGbuffered logging.
**
** The special LogModule name:
**
** set NSPR_LOG_MODULES=gizmo:2
**
** Note thervice. To enable the
** log service, set the envi PRLogModuleInfo structure by calling PR_NewLogModize) PR_GetRandomNoise(
    void    *buf,
    PRSiGetRandomNoise() may use a lot of CPU on some platze of the generated random number
**
** Outputs:
*random number generator that may be suitable for
*e
** platform's ability to provide a random value e size in bytes.
**
** Parameters:
**   none
**
**R_GetPhysicalMemorySize() -- returns the amount of a page
*/
NSPR_API(PRInt32) PR_GetPageSize(void);   PR_SI_HOSTNAME,  /* the hostname with the domaiPI(char) PR_GetDirectorySeparator(void);

/*
** OBfine prsystem_h___

/*
** API to NSPR functions rerary.
**
** The caller is responsible for freeing bols present in the static link table will be madevoid. Casting between a
** data pointer and a funcPI(PRFuncPtr) PR_FindFunctionSymbol(PRLibrary *libname);

/*
** Similar to PR_FindSymbol, except tha. This does not find symbols in the main program (cified by 'flags'.
*/

NSPR_API(PRLibrary *)
PR_Lo the underlying OS are ignored.
*/

#define PR_LD_fragment;    /* obsolete (for Mac OS Classic) */

enum PRLibSpecType {
    PR_LibSpec_Pathname,
    ing systems such as Mac OS Classic, a shared libracrements the reference count of the library.
*/
NSuch as the full pathname
** returned by PR_GetLibrm dependent
** and prepared for PR_LoadLibrary. Thopy of a PR_SetLibraryPath().
** The storage is al PRLibrary;

typedef struct PRStaticLinkTable {
  sh format,
 * regardless of locale setting.
 */
Nime *time);

/* Format a time value into a buffer.
 * be interpreted relative to the local time z12:59am
 *   22-AUG-1993 12:59 PM
 *   Friday, Auglit
 * the offset from UTC into tp_gmt_offset and ameters(const PRExplodedTime *gmt);

/* Time paramd) PR_NormalizeTime(
    PRExplodedTime *exploded,a year are not constant, it is ambiguous to
 *    Time in GMT
 *   - Apply the given PRTimeParamFn tnuary 1, 1970 UTC. The units of the returned
 * vao, one should apply the time zone correction
 *   he current time.  For example, all of China
 *    s for some geographic location,
 *     given the c  PRInt16 tm_yday;            /* calculated day ofRInt32 tm_usec;            /* microseconds past tm   - the month field is spelled tm_month, not tm_mime zone and daylight
 *     saving time correctioin seconds */
} PRTimeParameters;

/*
 * PRExplode    to represent times prior to the January 1970 e************************ TYPES AND CONSTANTS ******
 *     NSPR date and time functions
 *
 *-------ed from the
 * previous call.  The separator strin, and
 * updates *lasts.
 *
 * In subsequent callsength of the little string is greater than n.
 */
n the first
 * n characters of the big one, ignori the big one,
 * ignoring case.  It returns null ichar *big, const char *little);

/*
 * PL_strnstr
of the little string within the big one.
 * It retconst char *s, const char *list, PRUint32 n);

/*
 second string.  It returns
 * null if either stricharacter within the
 * first n characters of thtring is null.  The character may be the
 * null cto the last instance of the specified character inEXTERN(PRIntn)
PL_strcasecmp(const char *a, consttive, zero or negative --
 * reflects the case-insified.  The result is positive if the first stringturns an integer, the sign of which -- positive, z then the
 * result will *not* be null-terminated hecked for sufficient size.  A null destination
 *pointed to by the second argument to the
 * end ofg the null value.  This routine returns null
 * up char *src, PRUint32 max);

/*
 * PL_strdup
 *
 * ion.  It returns the "dest" argument.
 *
 * NOTE: r *)
PL_strncpy(char *dest, const char *src, PRUins the source string into the destination buffer, un
 *
 * Returns the length of the provided string,en
 *     people hacking around in our code.
 *
 * *
 * This header file exports the API to the NSPRPR_INVALID_STATE_ERROR - stack is not empty
*/
NSP   PR_StackPush(PRStack *stack, PRStackElem *stack to string containing the name of the stack
** RETne PR_ATOMIC_SET(val, newval) __sync_lock_test_and test for the
 * processors that we believe suppordefined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)) || \
_INCREMENT(val) _InterlockedIncrement((long volati compatible and can't be used
**    interchangeabl PR_ATOMIC_INCREMENT
** MACRO: PR_ATOMIC_DECREMENTI(PRInt32)   PR_AtomicDecrement(PRInt32 *val);

/*:
**    Atomically increment a 32 bit value.
** INUint32);
NSPR_API(PRUint64) PR_htonll(PRUint64);

om host to network
**      PR_ntonll       64 bit       16 bit conversion from network to host
**   yName().
** RETURN:
**  const char *        A cons             is ended if this value is NULL.
*****value that should be used for the next call
**    alue of NULL.
**  const PRAddrInfo *addrInfo
**   R_FreeAddrInfo()
**  Destroy the PRAddrInfo handle*****/
typedef struct PRAddrInfo PRAddrInfo;

NSPR   the canonical name corresponding to hostname.
* PR_GetAddrInfoByName()
**  Look up a host by namee failure can be retrieved by PR_GetError().
*****ded value to
**                      use is PR_NET* buffer, PRInt32 bufsize, PRProtoEnt* result);

/  the result will be PR_FAILURE and the reason
** tring of the protocol's name.
**  char *buf       PR_NetAddrInetPort(addr) \
    ((addr)->raw.family: PR_NetAddrFamily()
** Get the 'family' field of  PR_ConvertIPv4AddrToIPv6()
** Convert an IPv4 addNCTION:
** DESCRIPTION: PR_IsNetAddrType()
** DeteTo indicate success or failure. If the latter, theelds of a PRNetAddr, assigning well known values aus) PR_InitializeNetAddr(
    PRNetAddrValue val, etAddr *addr     The address to be manipulated.
**
** INPUTS
**  PRNetAddrValue val  The value to beI(PRIntn) PR_EnumerateHostEnt(
    PRIntn enumInde
**  PRUint16 port       The port number to be assvalue of zero.
**
**  PRHostEnt *hostEnt  A pointeated by the caller.
** RETURN:
**  PRStatus            A scratch buffer for the runtime to return retHostByAddr()
** Lookup a host entry by its networhis structure is filled in by the runtime if
**        Number of bytes in 'buf'. A recommnded value us) PR_GetHostByName(
    const char *hostname, ch_SUCCESS if the lookup succeeds. If it fails
**    This buffer is allocated by the caller.
**  PRInt PR_NETDB_BUF_SIZE is the recommended buffer size t PRHostEnt {
    char *h_name;       /* official dr(
    const char *string, PRNetAddr *addr);

NSP *  Translate an Internet address to/from a charac of the remote socket.  This parameter will only b       operation.  PR_AcceptRead will block indefi be large enough to receive <amount> bytes of datathe connecting peer's address.
**    AcceptRead, aonst void  *header;        /* header buffer       of file data to send */
    /* if 0, send data froler
**        buffer specifications.
**    PRTnd after the file, respectively. The file offset, d, a header and/or trailer buffer are sent
**    b be done immediately after transferring the file, eDesc *networkSocket
**        The socket to send  sending the file.
**
**    Optionally, the PR_TRAes successfully sent.
 *     -1 indicates a failurnter to a buffer from where the data is sent.
 *  ns the network connection is closed.
 *         -1s
 *        (OBSOLETE - must always be zero)
 *   ration will block until one or more bytes are
 *  lways equal 'amount'. A -1 is an indication that t amount
 *       the size of 'buf' (in bytes)
 *  fied number of bytes from a connected socket.
 *  pointer to a buffer to hold the data received.
 *   transferred, a time out has occurred, or there DOWN_SEND = 1,     /* disallow further sends */
     PR_SHUTDOWN_RCV - Further receives will be disa.  Otherwise, it returns PR_FAILURE.  Further
 *  sc object representing a socket that will be
 *   ful binding of an address to a socket, PR_Bind
 * rther failure information can be obtained by cperation.
 * OUTPUTS:
 *     PRNetAddr *addr
 *   ION:
 *     Accept a connection on a socket.
 * INll() should have been called and set the out_flagsOLL_WRITE | PR_POLL_EXCEPT.
 *     When PR_Poll() nnect is still in
 *       progress and has not coessfully completed,
 *     PR_ConnectContinue retuto determine whether the nonblocking connect has
 ct
 *     returns PR_SUCCESS.  Otherwise, it returcifies the address of the socket in its own communN: PR_Connect
 * DESCRIPTION:
 *     Initiate a co(PRFileDesc*)    PR_OpenUDPSocket(PRIntn af);

/*
ION: PR_OpenUDPSocket
 * DESCRIPTION:
 *     Creatn, PR_NewTCPSocket returns a pointer
 *     to thef the creation of a new UDP socket failed.
 *
 *** for the failure may be re-
 *        trieved usin   the specified access mode where possible.
 **** name and access mode.
 *     PR_MakeDir has the sh components
 *        up to but not including thea status of PR_SUCCESS. Otherwise
 *        a valuirectory to be closed.
 * OUTPUTS:
 *     None
 * n an
 *     error occurs. The actual reason can be  PRDirFlags flags
 *           PR_SKIP_NONE     Donst PRUnichar *name);
#endif /* MOZ_UNICODE */

/  If the directory cannot be opened, a NULL pointeonst PRUnichar *name;   /* name of entry in UTF16,NSPR_API(PRStatus)  PR_Sync(PRFileDesc *fd);

/***for the
 *     failure can be retrieved via PR_Getct that refers to a file or
 *         socket.
 * ccessful completion, the resulting pointer locatio RETURN: PROffset32, PROffset64
 *     Upon succesROffset32, PROffset64 offset
 *         Specifies may be retrieved from
 *     PR_GetError().
 *****      PR_ACCESS_READ_OK       Test for read permis      path name of the file
 *     PRAccessHow how     The old name of the file to be renamed.
 *   N: PR_GetOpenFileInfo, PR_GetOpenFileInfo64
 * DESfo);

#ifdef MOZ_UNICODE
/*
 * EXPERIMENTAL: This mation is successfully
 *     obtained, otherwise time per definition of PRTime */
};

struct PRFile    PRTime creationTime;    /* Creation time per dETURN: PRStatus
 *     The function returns PR_SUCes the number of bytes successfully written.
 *   Time timeout
 *       Time limit for completion ofleDesc *fd
 *         Pointer that points to a PRF * RETURN: PRInt32
 *     A positive number indica*
 */

NSPR_API(PRInt32) PR_Read(PRFileDesc *fd, vailure. The reason for the failure is obtained
 * e file or socket
 *     void *buf
 *         pointileDesc.
 * OUTPUTS:
 *     None.
 * RETURN:
 *   unction may be removed in a future release.
 */
NS PR_IWGRP 00020  /* write permission, group */
#de0700  /* read, write, execute/search by owner */
#ecute by group.
**   00004   Read by others.
**   cally allocated
 *     PRFileDesc object.
 * ALGOR  created for the newly opened file.
 *     ReturnIf the file exists, this flag has no effect.
 *        PR_RDONLY        Open for reading only.
 *   ***
 * FUNCTION:    PR_Open
 * DESCRIPTION:    Opeponsibility
 * of the caller.
 *
 * Note: Even if eIOLayerStub()) may
 * be pushed into an existing ushIOLayer,
 * results in modifying contents of th. The
 * file descriptor returned will point to th***
 * Creating a layer
 *
 * A new layer may be aFileDesc* fd);
NSPR_API(PRFileDesc*) PR_GetIdentit***********
 */

#define PR_IO_LAYER_HEAD (PRDescITOP_IO_LAYER     => the identity of the top of thewn identity.
 * Identities are allocated by the ruRR   PR_GetSpecialFD(PR_StandardError)

/*
 ******TS: none
 * RETURNS: PRFileDesc *
 *     If the aream.
 * INPUTS:
 *     PRSpecialFD id
 *         Aerved for future use */
    PRGetsocketoptionFN ge
    PRReservedFN reserved_fn_6;     /* reserved f              /* Send bytes to (net) address speci       /* Get information about an open file      ilable;        /* determine number of bytes availaescType file_type;           /* Type of file repreers,
    PRInt32 hlen, PRTransmitFileFlags flags,LBACK *PRTransmitfileFN)(
    PRFileDesc *sd, PRFiK *PRShutdownFN)(PRFileDesc *fd, PRIntn how);
typevFN)(
    PRFileDesc *fd, const PRIOVec *iov, PRInsc *fd, PRFileInfo *info);
typedef PRStatus (PR_CARInt32 (PR_CALLBACK *PRWriteFN)(PRFileDesc *fd, co***
** PRIOMethods
**
** The I/O methods table proence;

NSPR_API(PRDescType) PR_GetDescType(PRFileDuct PRIOVec {
    char *iov_base;
    int iov_len; add_member;  /* add an IP group membership */
       /* Allow local address reuse */
        PRBoolcast_ttl;          /* IP multicast time to live */inger;

typedef struct PRMcastRequest {
    PRNetAOpt_MaxSegment,      /* maximum segment size */
      /* keep connections alive */
    PR_SockOpt_Ret after they file
** descriptor is created to chan           /* the actual 128 bits of address */
  ss family (AF_INET) */
        PRUint16 port;     **********/

struct PRIPv6Addr {
    union {
     ucfg.h with the same
** value as AF_INET6 on platfine PR_AF_LOCAL AF_UNIX
#define PR_INADDR_ANY INAD**
** Address families: PR_AF_INET, PR_AF_INET6, PPR_TRANSMITFILE_CLOSE_SOCKET to
** PR_TransmitFilen PRDescIdentity;          /* see: Layering file d struct PRSendFileData   PRSendFileData;

/*
*****irEntry       PRDirEntry;
#ifdef MOZ_UNICODE
typed_h___

#include "prlong.h"
#include "prtime.h"
#in options.
 */
PR_EXTERN(PLOptStatus) PL_GetNextOptnames.
 * This means that it is possible to equiva the PLLongOpt structure
 *   for that long option,
 * - opt->longOptIndex will contain the non-nega PLLongOpt *longOpts);
/*
 * PL_DestroyOptState
 *ructures describing "long" (keyword) option names. points to a string of single-character option
 * n       longOption;    /* value put in PLOptState     /* all's well with the option */
    PL_OPT_EOtion is
** allowed.
*/
#define PR_STATIC_ASSERT(coinclude "obsolete/protypes.h"

/********* ????????       do {
#define NSPR_END_MACRO          } whiletend
 *     that such functions do not return.
 * *     PR_PRETEND_NORETURN;
 *
 * Some static analecified at the end of a function declaration,
 * ithat have a single point of failure or
** special  PRPackedBool within structs where bitfields are nf _WIN64
typedef PRUint64 PRUptrdiff;
#else
typedefor storing a pointer or pointer sutraction.
*****N:
**  A type for representing byte offsets from s**
** TYPES:       PRFloat64
** DESCRIPTION:
**  Nvariables. They are
**      guaranteed to be at leAX PR_UINT64(-1)
#else  /* !HAVE_LONG_LONG */
type== 8 */

#define PR_INT64_MAX PR_INT64(0x7ffffffff
/* Keep this in sync with prlong.h. */
#if PR_BYTprovide a portable way for
**      specifying 64-bt64 types are known to be 64 bits each. Care must nsigned long PRUint32;
typedef long PRInt32;
#defie PR_INT32(x)  x
#define PR_UINT32(x) x ## U
#elifo suitable type for PRInt16/PRUint16
#endif

/****
 * DESCRIPTION:
 *  The maximum and minimum value*********************
 * MACROS:      PR_INT8_MAX
or these compilers, we have to define PRInt8 as plE == 1
typedef unsigned char PRUint8;
/*
** There to make all the macros
** defined in <stdint.h> avprefer it over long long. This strategy is also
**er types can only be defined using char and
** sho((x)<(y)?(x):(y))
#define PR_MAX(x,y)     ((x)>(y)asking macros.  XXX n must be <= 31 to be portable*      Macro shorthands for conditional C++ externackets so that macros with compound statement defiPR_API(__type) PR_EXPORT(__type)
#define NSPR_DATAEXPORT(__type) extern PR_VISIBILITY_DEFAULT __typeclspec(dllimport) __type

#define PR_EXTERN(__typeine PR_IMPORT_DATA(__type) __declspec(dllimport) _A(__type) extern __declspec(dllexport) __type
#defern" for type checking and that
**      will not elib.h> and all the other standard headers, authorsinitions of NSPR's basic types
**
** Prototypes an a thread waiting on a condition
**
** Notify the hread.
**
** NB: The CV ('cvar') must be one creattion variable created by PR_NewNakedCondVar.
*/
NSanother thread or this thread, the
** result will llow for DCE (aka POSIX)
 *              thread emPRSem *sem);

/*
 * PR_DeleteSemaphore --
 *
 * Ree, PRIntn flags, PRIntn mode, PRUintn value);

/*
 * If PR_SEM_CREATE is specified, the third argume
 * A handle to the semaphore is returned.
 *
 * Ie: pripcsem.h
 *
 * Description: named semaphores PR_UnlockOrderedLock(
    PROrderedLock *lock
);

ne PR_LOCK_ORDERED_LOCK(lock) PR_Lock((lock))
#endual
** to the order of the highest lock held by thter to a PROrderedLock
**
** OUTPUTS: the lock is ne PR_CREATE_ORDERED_LOCK(order) PR_NewLock()
#endON: PR_CreateOrderedLock() creates an ordered lockFORCE_NSPR_ORDERED_LOCKS)
typedef void * PROrderedcility is compiled in when DEBUG is defined at
** lication designed
** using the Ordered Lock functi         (-5925L)

/* Placeholder for the end of no longer available */
#define PR_CALL_ONCE_ERROR -blocking connect) */
#define PR_IN_PROGRESS_ERRORn the directory */
#define PR_NO_MORE_FILES_ERROR nnot create or rename a filename that already exisor rename a file object while the file system is btion on a normal file */
#define PR_NOT_DIRECTORY_/* The file is already locked */
#define PR_FILE_Ie PR_CONNECT_RESET_ERROR                   (-5961L)

/* The requested operation is not supported by   (-5971L)

/* System open FD table is full */
#de     (-5974L)

/* A directory lookup on a network     (-5982L)

/* Connection refused by peer */
#de     (-5984L)

/* Network address is invalid */
#dt implemented */
#define PR_NOT_IMPLEMENTED_ERROR     (-5999L)

/* The operation would have blocked ine PR_OUT_OF_MEMORY_ERROR                   (-600Status)
PR_JoinJob(PRJob *job);

/* shutdown pool  const PRNetAddr *addr, PRJobFn fn, void * arg, PRThreadPool *tpool, PRJobFn fn, void *arg, PRBool j      PRUint32 stacksize);

/* queue a job */
NSPR__

#include "prtypes.h"
#include "prthread.h"
#inequal to zero (0), the object is not released.
** TPUTS: the referenced object is returned to the hene PR_NEWZAP(_struct) ((_struct*)PR_Calloc(1, sizehe heap
**   and sets the allocated memory to all  _size: size of node to allocate
** OUTPUTS: pointcates an item of type _struct from the heap.
** INto the node allocated
** RETURN:  pointer to node ame semantics.  (Note that the argument type size_
** PR_Malloc, PR_Calloc, PR_Realloc, and PR_Free puts:
**   fmstring -- string created by PR_Export   PRSize    bufsize,
    char      *buf
);
#definpAsString() -- Creates a string identifying a PRFieritedFileMap() -- Import a PRFileMap previously ecess()
**   fm -- PRFileMap structure to be passedforms, dirName is ignored.
**
** Inputs:
**   dirNas a
** directory name, without the trailing '/', 
**   addr = PR_MemMap(fm);
**   ... yadda ...
** * Second Protocol:
** Server:
**
**   fm = PR_Open_MemUnmap( addr );
**   PR_CloseFileMap(fm);
**
**ata from the PRFileMap object. ... See the exampleThe file-mapped shared memory requires a protocol shared
** memory is backed by a file, the file's n the child process inherits the shared memory.
** /. */

/*
** prshma.h -- NSPR Anonymous Shared Memthe behavior of this function is undefined.
** INP* MACRO:    PR_ASSERT_CURRENT_THREAD_OWNS_LOCK
** locked.
** OUTPUTS:     void
** RETURN:      None
INPUTS:      PRLock *lock
**              Lock to If the lock can not be created because of resource represents the lock as an opaque entity to the clic locking functions of NSPR.
**
**
** NSPR providconsistency with other platforms.
 */

#else

#errt defined in the
 * socket headers.
 */
#if !definuct sockaddr_dl that are not declared.
 * The foll. WARNING: This file is no longer cross-platform a       INADDR_ANY, INADDR_LOOPBACK, INADDR_BROADCAiles for socket support[1].
 *     This file serveplaceGrowth(ap, size, incr)      /* nothing */
#def);

#ifdef PL_ARENAMETER

#include <stdio.h>

PR_pedef size_t (*PLMallocSizeFn)(const void *ptr);

l *pool);

/*
** Friend functions used by the PL_A_FinishArenaPool(pool) has been called.
**/
PR_EXTnaPool *pool, const char *name, PRUint32 size, PRUena pool with the given name for debugging and metMEM_NOACCESS((void*)_a->avail, _a->limit - _a->ava_CLEAR_ARENA(a)
#endif

#define PL_ARENA_RELEASE(p - (PRUword)(q))

#define PL_CLEAR_UNUSED_PATTERN(CountInplaceGrowth(pool, size, (PRUint32)incr); \
     PL_ArenaCountAllocation(pool, (PRUint32)nb); RENA_ALIGN(pool, n) (((PRUword)(n) + (pool)->mask)FINED(addr, size)

#endif

/*
 * If the including memory_region(
    void const volatile *addr, size_VISIBILITY(type_) PR_IMPORT(type_)
#endif

/* Thess_sanitizer)
#define PL_SANITIZE_ADDRESS 1
#endif to access (e.g. freed)
 *   PL_MAKE_MEM_UNDEFINEDe PL_MAKE_MEM_ macros are for internal use by NSPR */
};
#endif

typedef struct PLArenaPool      PLAt32      nallocs;      /* number of PL_ARENA_ALLOCtats {
    PLArenaStats  *next;        /* next in .
 *
 * Also supports LIFO allocation (PL_ARENA_MAPR_STDIO_INIT()
#endif /* MOZILLA_CLIENT */

#enditions threads
*/
NSPR_API(void *) PR_W16GetExceptiPRMethodCallbackStr cbf = {   \
            _PL_W1PR_API(int)     PR_MD_printf(const char *, ...);
Nns are provided as static link points.
** This is  PR_CALLBACK _PL_W16CallBackStrftime(
    char *s,alloc)(size_t n, size_t size );
    void *  (PR_CAnction pointer for stdin read       */
    PRStdouLBACK *PRStdoutWrite)( void *buf, PRInt32 amount); stdio for Win16.
**
** The address of these functons that get called from NSPR
** to do the actual 
#if (defined(XP_PC) && !defined(_WIN32) && define l); \
    _absval -= _d_hi; \
    _lo_d.hi = 0; \ine LL_UI2L(l, ui)      ((l).lo = (ui), (l).hi = 0 _absval; \
 \
    _negative = (l).hi >> 31; \
   _a.hi << (32 - (b))) | (_a.lo >> ((b) & 31)); \
  lo = 0; \
        (r).hi = (a) << ((b) & 31); \
  
    if (_negative) \
    LL_NEG(r, r); \
}

#defia, a); \
    } else { \
    _a = a; \
    } \
    )(PR_BIT(16));  /* propagate */ \
     (r).lo = (__b = b; \
    LL_MUL32(r, _a.lo, _b.lo); \
    (r) a, b) { \
    PRInt64 _a, _b; \
    _a = a; _b =       (r).hi = (a).hi ^ (b).hi)
#define LL_OR2(r, LL_CMP(a, op, b)    (((a).hi == (b).hi) ? ((a).lo  LL_UDIVMOD(qp, rp, a, b) \
    (*(qp) = ((PRUint6  PRUint64 a: The dividend of the operation
**            Convert to floating point
**  LL_I2L      SHL(r, a, b)    ((r) = (PRInt64)(a) << (b))

/****SHR           Unsigned shift right [0..64] bits
**  LL_<mathematical operators>
**
**  LL_MUL       egation (two's complement)
**  LL_ADD            Sfine LL_AND(r, a, b)        ((r) = (a) & (b))
#def*****/
#define LL_IS_ZERO(a)       ((a) == 0)
#def***
** MACROS:      LL_<relational operators>
**
*L
#define LL_INIT(hi, lo)  ((hi ## L << 32) + lo #PR_ALTERNATE_INT64_TYPEDEF)
#define LL_MAXINT   92 these macros to
** support both machines that do )))
#define PR_ROTATE_RIGHT32(a, bits) (((a) >> (b_M_ARM64))
#include <stdlib.h>
#pragma intrinsic(_signed
** 32-bit integer type such as PRUint32.
**int32 j_ = (PRUint32)(_n);   \
    (_log2) = 0;   */

/*
** Macro version of PR_FloorLog2: Compute t   (_log2) += 16, (j_) >>= 16; \
    if ((j_) >> 8ed in _log2.
*/
#ifdef PR_HAVE_BUILTIN_BITSCAN32
#mpute the log of the least power of 2 greater than       (defined(__i386__) || defined(__x86_64__) |signed int val)
{
    unsigned long idx;
    _BitS_MSC_VER >= 1300) && \
    (defined(_M_IX86) || de       struct PRErrorCallbackPrivate *cb_private);s any information
**  private to the plugin functi*****/
NSPR_API(PRErrorCode) PR_ErrorInstallTable(n.  The array is terminated
**  with a null pointe*********
** FUNCTION:    PR_ErrorLanguages
** DESned string is
**  valid for the duration of the pr the default language if a translation in the requion plugin
 *    callback which is called once wit            const struct PRErrorTable *table,
    .  The callback is provided the
 *    appropriate  table */
};

/*
 * struct PRErrorCallbackPrivate error message in an error table.
 */
struct PRErro****/

/*
 * PRLanguageCode --
 *
 *    NSPR represupport for additional
** languages.
**
**/

/****ay not be removed.  Any error
** code the library ed directly in the
** library.  Other error table orts error tables whose first
** error code is not/


/*
 * NOTE:
 *      The interfaces for error-cat both that
copyright notice and this permission . Otherwise, the value returned is sufficient to cGet the length of the error text. If a zero is retThe text will be copied into to thread structure aERN_C

typedef PRInt32 PRErrorCode;

#define PR_NSlar, returns NULL instead.
**
** Restrictions:
** memory allocation failure, or if the operating sysiption:
** PR_DuplicateEnvironment() copies the ene assigned to the variable.
**
** Returns:
**   PRunction; see the implementation for details.
*/
NS**   functions on the same platform. (!)
**
*/
NSPtEnv().
**   Similarly, the string passed to PR_Se      char *val = PR_GetEnv("foo");
**      if ((N PR_SetEnv() where the parameter is of the form
**vior
**   across all supported platforms. There ar putenv() where the argument is of
**   the form "N_C

/*
** PR_GetEnv() -- Retrieve value of enviro__
#define prenv_h___

#include "prtypes.h"

/****)->next; \
    (_e)->next->prev = (_e)->prev; \
  ail of the list */
#define PR_LIST_HEAD(_l) (_l)->); \
    (_l)->next = (_e);   \
    PR_END_MACRO

 \
    PR_BEGIN_MACRO       \
    (_e)->next = (_l****
*/

NSPR_API(PRInt32) PR_sscanf(const char *bUTPUTS: none
** RETURNS: PRInt32
**     The numberstring.
**
**     PR_sscanf() behaves the same way data
**     conversions, and stores the convertedint32) PR_sxprintf(PRStuffFunc f, void *arg, const there is a malloc failure.
*/
NSPR_API(char*) PR_ the initial string. The return value is the new v*out, PRUint32 outlen, const char *fmt, ...);

/*
 PR printf like routines. Supports the following fndef prprf_h___
#define prprf_h___

/*
** API for t reported.
** MEMORY:      N/A
** ALGORITHM:   N/ seconds);
NSPR_API(PRIntervalTime) PR_Millisecond***/
NSPR_API(PRUint32) PR_TicksPerSecond(void);:      PRUint32
**
** SIDE EFFECTS:
**  None
** RES:      void
** OUTPUTS:     void
** RETURN:      
/****************************** FUNCTIONS *******rpreted as use the OS's connect timeout.
**
******od and the resolution of a PRIntervalTime.
*******************
** DEFINES:     PR_INTERVAL_MIN
**   /*
** File:        prinrval.h
** Description: API e of this thread.
*/
NSPR_API(PRThreadState) PR_Ge equivalent to PR_INTERVAL_NO_TIMEOUT is an error _API(void) PR_BlockInterrupt(void);

/*
** Unblockx);

/*
** This routine sets the interrupt request index into the per-thread private data table
**  ciated with all indices for
** that thread is NULL       is not NULL,
**      - new thread private dPR_API(const char *) PR_GetThreadName(const PRThre
/*
** Set the name of the current thread, which wdif /* NO_NSPR_10_SUPPORT */

/*
** Get the priori(PRThread *thread);

/*
** Return the current thre is the target thread
**
** This can return PR_FAIt the lock.
**
** If you want to detect the comple the size of the stack, in bytes. The value can be a new thread:
**     "type" is the type of threadnum PRThreadPriority
{
    PR_PRIORITY_FIRST = 0,  for the created thread to reach completion.
**
**ndicates the thread
** doesn't count for determinimblance of GLOBAL threads is used to implement "LOed. Hard priority scheduling
** is not guaranteed,s,
                           PRIntn *decpt, PRIntf(char *buf, PRIntn bufsz, PRIntn prcsn, PRFloat64  value represented by the character string pointeess(PRProcess *process, PRInt32 *exitCode);

NSPR_s
** termination using PR_WaitProcess().
*/

NSPR_char *name
);

/*
** Create a new process
**
** CrDesc *redirectFd
);

/*
 * OBSOLETE -- use PR_Proc*****/

typedef struct PRProcess PRProcess;
typedecycle(void (PR_CALLBACK *callback)(void *address))ke PR_Wait except use the "address" to find a moni a monitor in the
** monitor cache. If successful,monitors
** and the system automatically grows the Code Form is subject to the terms of the Mozilla 
** Notify all of the threads waiting on the condir *cvar, PRIntervalTime timeout);

/*
** Notify ONed
** interval.
**
** Returns PR_FAILURE if the ca. If the timeout has a value of PR_INTERVAL_NO_WAIAPI(void) PR_DestroyCondVar(PRCondVar *cvar);

/*
r(PRLock *lock);

/*
** Destroy a condition variab http://mozilla.org/MPL/2.0/. */

#ifndef prcvar_hEXTERN(void) PL_PrintError(const char *msg);

/*
*dle
);

PR_END_EXTERN_C

#endif /* prcountr_h___ *m this function may only be used
** in another PR_le in the database. When handle is
** a handle preandle)\
    (next) = PR_FindNextCounterQname((hand operations may cause unpredictable results.
**
*/then the function attempts to retreive
** the next))
#else
#define PR_SET_COUNTER(handle,value)
#endunter,handle) 0
#endif

NSPR_API(PRUint32)
PR_GetCounter() -- Retreive the value of a counter
**
** A value is subtracted
** from a counte new value for counter.
**
** RETURNS: void
**
** ounter to be added to.
**
**  value: the value to TION: PR_DecrementCounter() -- Subtract one from terenced counter.
**
** INPUTS:
**  handle: The PRCption)\
    PR_GetCounterNameFromHandle((handle),(name, given its handle.
**
** DESCRIPTION: PR_GetCERS)
#define PR_GET_COUNTER_HANDLE_FROM_NAME(handltroyCounter(
    PRCounterHandle handle
);


/* --OY_COUNTER(handle) PR_DestroyCounter((handle))
#el   (handle) = PR_CreateCounter((qName),(rName),(deion of the counter object. The
** maximum length oefined(DEBUG) || defined(FORCE_NSPR_COUNTERS)
#defe.
**
*/
#define PR_DEFINE_COUNTER(name) PRCounter** /lth. 09-Jun-1998.
*/

#include "prtypes.h"

PRld, define FORCE_NSPR_COUNTERS at compile time
**  platforms where atomic operations are not
** suppe. The NSPR Counter is not a near-zero overhead
**created. The counter can subsequently be addressedted.
**
** A counter can be dynamically created usv. 2.0. If a copy of the MPL was not distributed wN_C

#endif /* prtrace_h___ */

/* -*- Mode: C++;  found is always less than or equal to count.
**
*s placed in the PRInt32
** variable pointed to by s call to PR_GetTraceEntries() are
** copied. The SUCCESS no errors were found.
**    PR_FAILURE errf its definition must be
** the filename of the fihe environment variable NSPR_TRACE_LOG controls thffer to be written to external media.
**
** When PHandle or NULL when there are no trace handles.
**Handle returned can be used as an
** iterator to tdefine PR_FIND_NEXT_TRACE_QNAME(next,handle)
#endixtQname() returns the first QName
** handle. When ext trace
** QName handle, depending on the value ame,         /* pointer to associated QName */
   ON:
** PR_GetTraceNameFromHandle() retreives the ear *qName,      /* QName search argument */
    coName for this trace handle.
**
**
** OUTPUTS: retuption((command),(value))
#else
#define PR_GET_TRAC of the enumerated values */
    void *value      SET_TRACE_OPTION(command,value)\
    PR_SetTraceOpeen suspended. If recording is
** not currently suther writes to
** the trace file to be suspended. opRecording: void. value must be NULL. If recordinof the data is
**  dependent on command; for each     /* User supplied data word 7 */
);

/* -------PR_API(void)
PR_Trace(
    PRTraceHandle handle,  *
** RETURNS: void.
**
** RESTRICTIONS:
**
*/
#if  handle. The next logically available
** PRTraceEn
**
** OUTPUTS:
**  The trace handle is unregisterACE(handle,qName,rName,description)
#endif

NSPR_A RETURNS:
**  PRTraceHandle
**
** RESTRICTIONS:
**ter.
**
** INPUTS:
**  qName: pointer to string. QDEBUG) || defined (FORCE_NSPR_TRACE)
#define PR_IN--------
** FUNCTION: PR_INIT_TRACE_HANDLE() -- Ses there.
**
*/
typedef enum PRTraceOption
{
    PRe thread creating the trace entry */
    PRTraceHatimized build differences when using result of thehe caller must ensure that the
** trace handle argany application using NSPR's
** header files will  the trace entries in the in-memory trace buffer tility.
**
** The Trace Facility provides a means ts-mode: nil; c-basic-offset: 2 -*- */
/* This Sourozilla Public
 * License, v. 2.0. If a copy of the_SHORT
#define ALIGN_OF_INT		PR_ALIGN_OF_INT
#defiTS_PER_SHORT_LOG2
#define BITS_PER_INT_LOG2	PR_BITWORD

#define BITS_PER_BYTE		PR_BITS_PER_BYTE
#defe"

#endif

#ifndef HAVE_LONG_LONG
#define	HAVE_LOPER_DWORD_LOG2 3

#elif defined(__loongarch64)

#uTES_PER_INT    4
#define PR_BYTES_PER_INT64  4
#deYTES_PER_DWORD_LOG2  3

#elif defined(__e2k__)

#d(__nds32__) || \
      defined(__xtensa__)

#if deF_WORD    8

#define PR_BYTES_PER_WORD_LOG2  3
#delif defined(__riscv) && (__riscv_xlen == 64)

#und_LITTLE_ENDIAN 1
#undef  IS_64
lif defined(__riscv) && (__riscv_xlen == 32)

#undN_OF_POINTER 4
#define PR_ALIGN_OF_WORD    4

#defdef  IS_LITTLE_ENDIAN
#define IS_BIG_ENDIAN 1

#deLIGN_OF_LONG    4
#define PR_ALIGN_OF_INT64   4
#dER_DWORD_LOG2  3

#elif defined(__avr32__)

#undefIGN_OF_FLOAT   4
#define PR_ALIGN_OF_DOUBLE  4
#deLE_LOG2 6
#define PR_BITS_PER_WORD_LOG2   5

#define IS_BIG_ENDIAN 1
#undef  IS_LITTLE_ENDIAN

#defiNT64_LOG2  6
#define PR_BITS_PER_LONG_LOG2   6
#deALIGN_OF_INT     4
#define PR_ALIGN_OF_LONG    4
#_INT64_LOG2  6
#define PR_BITS_PER_LONG_LOG2   5
#IS_LITTLE_ENDIAN
#define IS_BIG_ENDIAN    1

#defiLE_LOG2 6
#define PR_BITS_PER_WORD_LOG2   6

#defiTS_PER_INT64   64
#define PR_BITS_PER_LONG    64
#S_BIG_ENDIAN 1
#elif defined(__AARCH64EL__)
#definITS_PER_INT64   64
#define PR_BITS_PER_LONG    32
fined(__arm__)

#ifdef __ARMEB__
#undef  IS_LITYTES_PER_DWORD_LOG2  3

#endif /* _ABI64 */

#elifYTES_PER_DOUBLE 8
#define PR_BYTES_PER_WORD   4
#dIGN_OF_POINTER 8
#define PR_ALIGN_OF_WORD    8

#dPER_DOUBLE  64
#define PR_BITS_PER_WORD    64

#de
#else
#error "Unknown MIPS endianness."
#endif

#
/* For _ABI64 */
#if defined(__GLIBC__) || defineHORT_LOG2  4
#define PR_BITS_PER_INT_LOG2    5
#deD_LOG2   2
#define PR_BYTES_PER_DWORD_LOG2  3

#elTS_PER_FLOAT   32
#define PR_BITS_PER_DOUBLE  64
#YTES_PER_INT64  8
#define PR_BYTES_PER_LONG   4
#dLIGN_OF_INT     4
#define PR_ALIGN_OF_INT64   8
#dYTES_PER_DOUBLE 8
#define PR_BYTES_PER_WORD   8
#dBYTES_PER_SHORT  2
#define PR_BYTES_PER_INT    4
#BLE_LOG2 6
#define PR_BITS_PER_WORD_LOG2   5

#defYTES_PER_DWORD  8

#define PR_BITS_PER_BYTE    8
#R_SHORT_LOG2  4
#define PR_BITS_PER_INT_LOG2    5
TES_PER_LONG   8
#define PR_BYTES_PER_FLOAT  4
#deIGN_OF_POINTER 4
#define PR_ALIGN_OF_WORD    4

#dTS_PER_WORD    32

#define PR_BITS_PER_BYTE_LOG2  IGN_OF_FLOAT   4
#define PR_ALIGN_OF_DOUBLE  8
#define PR_ALIGN_OF_SHORT   2
#define PR_ALIGN_OF_INTWORD_LOG2 3

#elif defined(__ia64__)

#define IS_LR_INT64_LOG2  6
#define PR_BITS_PER_LONG_LOG2   6
e PR_BITS_PER_SHORT   16
#define PR_BITS_PER_INT  ne IS_LITTLE_ENDIAN 1
#undef  IS_BIG_ENDIAN
#definS_PER_FLOAT_LOG2  5
#define PR_BITS_PER_DOUBLE_LOGTES_PER_WORD_LOG2   3
#define PR_BYTES_PER_DWORD_L_OF_INT     4
#define PR_ALIGN_OF_LONG    8
#definR_INT     32
#define PR_BITS_PER_INT64   64
#defindefine IS_64

#define PR_BYTES_PER_BYTE   1
#defin: C++; tab-width: 4; indent-tabs-mode: nil; c-basi value of srclen.
 */

PR_EXTERN(char *)
PL_Base64 null character.  It is the
 * caller's responsibise64Encode
(
    const char *src,
    PRUint32    ), first ensure that
 *     srclen <= (PR_UINT32_Mhm, and returns a pointer to the result.  If the "ed with this
 * file, You can obtain one at http:/nit.h"
#include "prinrval.h"
#include "prio.h"
#inzilla.org/MPL/2.0/. */

#ifndef nspr_h___
#define as the result.
**
**      Modifications to the cona pointer to the "previous" element returned from 
** RETURN
**      PRStatus
**          PR_SUCCESSe indicated by the function returning a NULL.
**  t group that the enumeration is intended to
**     argument does not reference a known object.
**   iously allocated using
**                  PR_Creager than the maximum number of receive wait
**    ze        The size of the hash table to be used to              for the NULL may be retrieved by cale returned.
**      This function should be calledncelling operations
**      on objects previously unction will return with a status of PR_FAILURE.
*       with the specified wait group, the status r      the runtime knows of the object, it will be *  ERRORS
**      PR_INVALID_ARGUMENT_ERROR
**    id pointer is returned, the reference is to the
**ll block the calling thread until one of the
**   roup is being destroyed.
*/
NSPR_API(PRStatus) PR_**  RETURN
**      PRStatus    An indication of suFUNCTION:    PR_AddWaitFileDesc
** DESMWaitEnumerator PRMWaitEnumerator;


/*
** FUNCTIOages */

    PRFileDesc *fd;             /* file dning the process.
**
**      The success of the wa receive wait object contains the file descriptor        /* pointer to first byte of memory */
    P   The operation was cancelled, either by the clieed
**      by calling PR_GetError().
**
**  PR_MW_    from the wait function.
*/
typedef struct PRWa   PRWaitGroup
** DESCRIPTION:
**      The client *******/
/******************************       WAR#include "prclist.h"

PR_BEGIN_EXTERN_C

/********is Source Code Form is subject to the terms of the                Ý                      ³&            P3      Ð,                          f   sts .rela.debug_aranges .debug_rnglists .        °      ¨            ð      ô       ^       
      
      c       
            h  
      Æ       E       
      Ï       J         
      {      ÷            @                    Z      
      V      d      
      F   
      ¡      Ø            ¢       á            …      
      	      Š      
      ×   
            x      
            ‚        
      r
      	      
      ¸
              
      m      ¤      
      g      ³       §       m            p      �      
      N  
      ã            
      á              
            _      
            c              †      ³            	       À        
      H      Â      
      U      Æ        
      À      Ú
            p      û
        
      ­      K
      
      £      P
      
      ·      ã      
      Ü      ç       
      s      5      
      |       N        
      ~       ×      
      è       á       
      &       V      
      "       [       
      È      S      
            `        
      ”            
      í      �        
      )       *      
      x      7          >      
      Ã      K      
      :             üÿÿÿÿÿÿÿ:             üÿÿÿÿÿÿÿG      ÿÿÿÿÿÿ            üÿÿÿÿÿÿÿ%            üÿÿÿLookup PL_HashTableRawLookupConst PL_HashTableRawA          ¦     `      $      º     �                                                    
A   H   ˜      Œ    FŽB�E ŒD(†G0ƒŸ
8D0A(B BBBH 0   ¸       $   HPMŽNcM ôPfvÆ�]uZÝƒ¢¼�>¡`‚ó¤¥{VhìA„?f
Ðp�„„cUfwä¦Çô$O–p=Z·­%å�WÞ¿�éZÖ¥l/Ã_‚³µ(K…æPt¸¦)´GZjh¯ÿ-¯Óó“OyŒ•8c%î�°J0©ä¨•×ÈRp–µ¾É¾Fq\xÆÀOõöÏþc7þ¤¬ƒf´¹DßÀü¿—ä¦�x°ëà ·Üð1ÓvÈõê!½˜yíˆ>bz¾°ÊT©´Ï%ìÑ¹mLy;„A%óš¼ºxÊ@ò2Êí
$Wi­�½ƒ/Â©ebÉºÐ‰Šã‚ä¶´I§¢$ìˆÀû!ÞøúJô �*¼³qÔŽŠÝ•µ¨/$ø(IÔ>ìr¦ÛT[›p¹%tlV?™
×'×R$Kúž”(Ñ%}o*,QŠéÞô —)�E‰r­Þô…´±#¬øçq.¤¯¤il—ÌeüîiZ{É‚½dÝµâvò,Û�Eùèë¬8|(×ÑèˆuRøˆÆúõÜŠýlëwî�ÙÎ"q_æÎ¹ß÷�sÏ=÷ÜÙžŒ$%$]Š~¬¥úPµ¼‰ªî©fò¦\ÌDÖ ÌÑ“ õuêØßôrÆjž.ùo;	|hæÑ¯Ù0tà€�#ö¼]¸9ëzÌ»Ð÷Ý0Sbýý®^�¦ÊóRÚ×ƒìÌO$ÊT¯è—˜^qäôdÚ*Ù�›=>%r=µd™[›)^µÙ7qŽÃ–ÍFHÆ–=:Ð�j›ÁùˆpÌ‚ÎpÌö¡ðÃf¬ž®ÊhÆ©ƒ""cõZº;–Ë›WÃ§Hi[ø€Ž€g[UÔ=€VÃh…é÷­Ø”�ÒuÇÐhÚ7ÂÜXô@dì\ñ¿e0œÚÃ,ƒ=¥ÁðƒiÍ“FKç@x†ÁC‰9žcð‹ôK œg°¿úOâL‰ÿƒÃÿÕ¨uÌM‰þ¨tàH‹T$H…Òt H�t$L‰ïè    H‹T$    H‹E(H‹}0H‰ÞL‹d$(L‹l$0H‹@L‹t$8L‹|$@H‹\$H‹l$ HôUH‰ýH‰÷SÿUL‰âH‰ï‰ÆA‰Æè    H‹H…Ût=H‹{L‰îÿU …ÀuÇè    ƒkE…ä„”   H‹L$(A�D$ÿL‰l$PL‰|$`H�DÁH‰ÍH‰D I‰ÜH‹H…ÛtE9kuðH‹sL‰ïAÿW…ÀtáM9ætRH‹H‹l$L‹l$ tS1öH‰Çè    H‹$L‰{L‰sH‰C H‰k(L‰c0HƒÄH‰Ø[]A\A]A                     `      x                 X1      h                          »                    1      2               4      O    .bss .rodata.str1.1 .rodata.str1.8 .rodata .rela.  
      É       L       
      Ò       Q         
      Ü       ü      
      S      	              }      ¸            !       Å           
             „      
      Ç      ˆ     
      W      û      
                     
            Ò      
      ú      ß              0      µ      
            ¿        
      y       ö      
      0      ú        
      „      Á            p      ë        
      4      {      
      ú      ‡        
      ²      v       
      ö       }                        
      Û             
       PL_InitArenaPool PR_CeilingLog2 PL_ArenaAllocate    plarena.c FreeArenaList pmasks.0 PL_FreeArenaPo                   
                           �  $          l    D DƒM†HŒAÆEÌH     k£|“wÎÔ1#	}¸ñg‡Þ	²Í‰1Š½]-€ñÔ¥3lÛ)}£—ÿÙØ�2üw&DF�£ïqÌcöC±ã³dô¯ê3�c-S7^qþÑzØ~ß­;#�PÁV8ÞÛ±ÿ)ÛñH<K—pˆ†Pµ­u®°à¸†8_—ô—<úÉHF¨DWw\ã<Ù©L³i8—°Ø"nzið7.T‹î¼ZæÝéw‘øìKZ¤:±!ü4ð:Šß©[}dâÔT*CPy¯     xœ]T?HQ¿÷î{ïîj‡ŽR:²º»98t©—ž¢R¤�¡2è�¡Ø­]$µ¶»ˆ;ów¦ ŽÜ©dóZÊ1Ôs\ä´›:°>¡gzUîjx£j`ÇÀù>�,é”±>ÍÛ9oÃ—K¶*Éº$Ù’ [­ÝÚÛµÕcJ‹Œ.¶æoVÚ¸ß†Œ#ÞD¦0 (a)->avail <= (a)->limit      a->base <= a->avail„     Ã@ ff.„     óúH‰þé¤ûÿÿ@ óúëêf.„A�@à)ÐH9ÏH‰v ACÀ‰F(HƒÄÃ@ H‰<$‰Ï‰T$è    º     @   HƒìH‰$H‹H…ÛtSH‰l$H‰õL‰d$I‰üHÇ    ffArenaPoolExcludingPool PL_NewHashTable PL_HashTabÛè    H‹l$ ëÞ       ABCDEFGHIJKLMNOPQRSTUVWXYZabcdH‰ÚH‰ïè“þÿÿH‹l$ …À¸    HEØH‰ØH‹\$HƒÄ(ÃfD  @öÆÁèAˆ1ÀÃD  I‰ø¶?I‰ñèBÿÿÿ‰Áƒøÿt7A¶xè1ÿÿÿ‰Æƒø  è/          @     @   ¶¶G¹   Áâ	Ð¶WH�=                 ´                     ø                1                           ­                        !                              
            2      
      e      6              Ò        strtok.c PL_strtok_r      �ds¿ÝÔâï9ÏI˜0½É…È÷·Þ^WBw£eÂŽ£ø¸v       a   ¢pÍìÎîÌÍé>™4¦%1óW‘àÐEbJr¼p¥£á`MÙÐ^*C´­ªkÍ¡Ï¨Éf``6a`æ°Rd´æ¶äöfßî$ÎÀÀÂ
TäDedTåæžÀÈ=‘‘�Y^Z^�                strtok.o/       1789641108  0                    ¹                     ¨
      P  `      @               x      0          	           @               °      À                 t                    °                   
      )      ¢      
            ¯        
      Ž      j            0       ‹        
      k             
            Ž       ÿÿÿÿÿÿ�             üÿÿÿÿÿÿÿÈ             üÿÿÿ        í        strstr.c PL_strstr PL_strrstr U†GŒH�Q
ÆEÌHÍEÎJEÆEÌEÍEÎJÃ D   ¬       í   ¶½çÛt“ln¸x¬wyù¾ß}ÔoyUfO2áâØ85ÈÓC*Ò;.z.r"}he�IE÷Õ[Õó®•²*¡Î?S5o†²(O–îQÚÖ´(˜¶0°Ë°´ çâC¥j)‡‰�‰nCvã#¸u˜¡nÃt£Š�¡(ŽŠ(.dMÊa�ÄíæÏ7£ˆs3CÄËˆð‹$HƒÄ(Ã�1ÀÃf�ff.„     óúHƒì(H‰$H…ÿtyH…ött€? t‹l$L‹t$ H‹$HƒÄ(ÃH‹l$L‹d$L‹l$L‹t$ 1ÛH‰ØH‹$HƒÄ           Ñ                     H      h               y                     8      .               B                     @      Ç            k       4       
      x       9         R      B                          
            ò       
      c      ü          
             ‰       
      (      •            ›          D       d          X       «bÐä…ËÑƒAç[~b\·N±Ñ/yt‚Áû›9ë'­ƒˆ†j@úò˜/b‚²ªC¨ÇW§«Ët{ºy/Ó‰S~pü“¨®žzC¿#Í¥ñ�ôEpQpApô�Aß,      �Exˆ`§©ä­ŽLêeŸs	Ö”;Ø“]ôåšŽªÍjZ)“&4ñOùUQ
ô#°œ‹fb``e`ä` .!ËüN˜™ÜfD°9X!;ˆâfaÍÌ+�
°€)ˆ�ŒŒl tkH‰ø€    H‰ÁH�@€y uóH9ùrOE¶E„ÉtU¶1L‰ÂD‰Èë          t      @               Ð      À                 P                            «                       H             @       \         
      ¼             
      ¶       )        
      -       5      
      D       9             R       
      n      Y       
      k                                                ]J$õjË†ë>ˆŠ„ÇLnÿ*Ý�D¹ô˜ ‘^Eñ6Ó1Ÿ·_=0CµvÖä7]$i4È ™;   À*        ˆ             xœuP1nA´×ŒÅ� +Wn£Æ•\ÉDM<�žÆëÙ"&²�yóæÑÌ{–
Roª¸ä:éû”R¡N€^‘  @      Û                              strchr.o         �      0              €      —           ˜       ô                              1    ab .strtab .shstrtab .rela.text   
      ´       B       
      ½       G         
             #      
             0            ^       
      X      e       
      Q         À                 zR x�     Uùû„Ì’=ô¨ä¬5«sC¯@èÖ‘y¼¼Õ4Û?Ò}ºKvw”=7Ç¢úÈ�ŸÍ{QWÙ�õÞ�ÒÝèIæátVÐZi~¿)õ².hžÎÜì(¬ñŒ‡3À›p&Ÿ:Ç‹ÉÀ	]      1789641107  0     0     100644  4832      `
  ¸      ð                           …        p      ·                              e                                      @       ×             h      
            m                     |      
      8      …                  
      �       `       
      o      g                üÿÿÿÿÿÿÿ          
   üÿÿÿÿÿÿÿ                                                         xœ�ŽÍ
Â@„óBMŠ§â«÷§:°¬K’=øöv+ŠÇÂ„|ä‡s�7çHyÞ²ÓŠ(YcpåU‹�À{äøÑ«±üCüK%Õmw¥R=WšË¨¨µÄÄS-Å€ú›/¢dE£UHB\EeJ m‚)9ŒÊ<ÈÊ…`Œ-@ÌÆÂ¼˜1êad›BàNysŠ0                                x      ã         ø      ð                           �                >                     ˆ      Ð      g_abbrev .debug_loclists .rela.debug_aranges .rela       4             �       H                
      U      ê      
      Q      ÷        
      ¶      Ó      
      Æ      ×        
      1      ð      
   	   4      ú        
            „            ›      œ       ;       
   	          I       
   	   ;      W  üÿÿÿÿÿÿÿk            üÿÿÿÿÿÿÿ÷                 ñÿ                                      Jãiç}LÞ¼Í¥§uåÍÀƒÈf¼@?¦$‘å Ýy¶Ïî<AÂÕ’>õâåµ�ñöø¬”¬±l‹žO=Ø’|ËErsvöXê#9xx—Ógn†0h�{„žÆÛè*’lL¡ML†D}Å>aãûtH&÷.åC:—ø§Ð2rR òj¿^�Ìk�Bau�ýG<ÆSÔ(ä£côA¬Ì/Ið|�ß33-±º7÷œ{¤áå·ð¦`Þ³�€ð!ÂmE5oX+/{�2 ³þs$Nn.-ÑÅ¥›¸Ø¡ŽŽþWt×{o“ô&!C9çæÍÉ}Ÿs’ÜQ€ °#ÎC‰æH‰ßè    …ÀuåH‰ØH‹l$L‹d$L‹l$ H‹\$HƒÄ(Ã�H‹l$L‹    A‰Å9ÃrS)ÃHësëJf.„     HƒëH9ër7D‰êL‰æH‰ßè uÛ)øÃ„     ¸   Ãf.„     H÷ÞÀÃf.„     óúH          ð      @                      H                €                          ©        Ø
      Ø                           &      str .debug_line_str .comment .note.GNU-stack .note  <      >                            
             <       ï                           
      V       d      
      R       r        
   	   ¦      s       
   	   î       z       n malloc memcpy PL_strfree PL_strndup PL_strnlen              T                                 Éóõ#_§«duÇÅ³Üî‹�ÝöS¾ïË"ßd	}åT—ŸR‘>pÑr±�¤:kiŒQÑ|       w             xœm�1nÃ0EIIŸª8b·@–xéà­k€‡Z#<µª_¢	¦—In|ß¸Yâ—Y7ƒyœ�Áý%8Ÿ¯‹’º,Æø!G”rß(ÕH�    ëÍZ1À[]Ã�ff.„     óúé    €    óúUH�  ˆ      8         	                 	                        0               Æ                            ,                           a.text .data .bss .rela.debug_info .debug_abbrev .  
      ,       &       
      O       *         
             ±      
            µ        
      -      =       
      M       K                       C            p       X        xœ��Í
Ã0ƒýBµ-;�½Ê ?í!¶sèÛoYéØq Á’�¹Æ¶s$	%I``b dp‚;  ¸ ÿ        o             xœUP1n¸1,áRF¶D ¤a.˜ ?»’v$Ž Œáä`e^ÌÊÁ¤B€‚B@     @   óúH…ÿtH…öt
é    D  1ÀÃD  óúH…          È                     À      P             ¨                          Q         k .note.gnu.property .rela.eh_frame                `        .symtab .strtab .shstrtab .rel        `       +      
             /         
                     
      a                    ;        strlen.c .LC0 .LC1 PL_strlen PR_As—NœÂq‡â	;\.KÉ GCC: (GNU) 16.2.0                    xœUPÑN„0ì§ôzñÐ /<ô‰‚òàáÚB7Öí¥[Ìé×[8BŽ—vt€8 uò)øÃ€    1ÀÃstrlen.c l <= PR_INT32_MAX    PL_strnchr PL_strnrchr PL_strpbrk PL_strprbrk PL_asecmp PL_strcasestr PL_strcaserstr PL_strncasestr     '   üÿÿÿÿÿÿÿä         .   üÿÿÿÿÿÿÿü                              C   üÿÿÿÿÿÿÿ      ÿÿÿÿÿÿF         1   üÿÿÿÿÿÿÿW         B   üÿÿÿ      C   üÿÿÿÿÿÿÿ         1   üÿÿÿÿÿÿÿ˜          4   üÿÿÿÿÿÿÿì         6   üÿÿÿÿÿÿÿ            0   üÿÿÿÿÿÿÿK	                   a	     ÿÿÿÿÿÿ‹         /   üÿÿÿÿÿÿÿ”         5   üÿÿÿÿÿÿÿÿÿ›         .   üÿÿÿÿÿÿÿ°            üÿÿÿalized _PR_ImplicitInitialization PR_WaitRecvReady PR_Assert PR_SetError PR_Calloc PR_Free PR_Notify      ‚       I    p      �       prmwait.c                   ½                     Ì                       à                      å                                  `                   ‹    \ ^
F (   ¼      +   E†DƒG              zR x�            X    Vƒiw=[³Ì�(ˆjä"ŸÊq¥2ÓÖ‹7ªÅ)3Ù¡3ÿ\}mŽ
ìÃjuCP`÷Ç,ö#ËnÆ¸™¿€ä‹ÜêÔ°¿S	)™Us%oníO/Ø
ß¹ãAÑÙ¨À¿y¥Ê�îE‚}Ô�q¨ÅGÍA°§hZ¼¹�ÍÔÕy:šo“^ŒÆ»9RY‰K¤{8N,;þ&/†Í*{QM<E}¨ZÚ�.^)ÔwT)lA÷èÁ`pí÷L–Gäv:Î´ÊŽÛª²+ÝZò£ªê0²Þl”C�T1]Ò€�oì•óZióá¦| Ü$óYL…÷•Ðö,÷™#iNI}EÛÙïN|ó¥�ðÉ“«24Êè³ÆEØýß@ø¡Ñ’i¶¹1Çù/)ú   ym¥eþˆõ”6áUî¨ëöpS{ÌlˆKÍó¥}Ûm†-l¥U×B¯ÿ—X¨_¿¬Ð'ÅŸ«‚o˜§G_ºc{$ò4¿ŽÚmºÐâHLÙT<kšE-:"ú)v/aëZ1®góv(óMl‘g×•ÿ>«w¨}žCAúT¼oØIŸÒ¦ÖnJ’Z‡š½¢•"	á%	wšaO×CFw‘ŠTÆo¥¬¯jm�Â!EÀY·©*>Í=—d=á¥‹<j£}{ôÄ9>J|™5eVâ$yBûZŽS”ò9é6˜ÌDš=yÄ‘0Û­yNaÖž·;†Î•˜ç<î     xœÓa```b  Î€  	 N�         Ä	…Š˜Ûnâ3íºEcºåZr_Û§í–FÅ¾²R©‰iû,Ào%(­	Å4ˆöy*mÞ~Ø$k�g¸êBC›Æ7A<Ø4Z1?öêšÓÞÕ½‘=QpLE3$2ÑSQ„8m‹=BÒ�u‹¬oÚ‡µ'þ6
ß*RëÛ×«�VMt¯¿·q>ñú	+œsÜß‚»ï<ÍÉ£Yæ¾Ï³uÊ¹¯ˆÃ…ðU{¾s)^49ùî¥¸F¯“µc´¿¡ÓÆ(öj£½©ÑñÀþÁ”›Šraøà²šœQT .)Ï2�yËÔæÁ¥%Æ�Ä\ø7ÀÁúÿ(8d¼00àã0gtÀÄ-,î6÷¿Ra÷@©Â-lPIaº••·1�ß�lM-ã%¯«)rÌó¦ç„øV‰ßì#ó¼ÙävŒÞYì˜L�³ ð½hz
fM@ûD»..[4Ô¸í§y´
Ò´0S‡ƒ�çÕÀA
Î­Å�š4€…0º»0:3	Õý*M‹ÿHÅ$ð&Š€¾ “’]YqBfV\f$á»½&Ûð5 �À`#A0–@;‚‰†â—r'�Ž(ëv¹ýEœg±\� µó¢	Ãef¤æähØtËú³Yî\ ïLÊ•6hzì]“ôhK^‚i¾HðJr;Þ,‰çUóÅs”¿î°˜"{#g†¿F°Rò¼i¾-òGù;Ö1R¿�Ã�À�gübVRzÍfÎmŽÖr‹=ïh-ç²è§ŽÖr‹¥ã*¤ø|–8+®BŠ/`©eqVë+²[(b¤®3B·YIp|�¦¶Y0Ò‹ É0Žû¥‡#4ç´WC� ý…Ðô2¿H˜FÉ_U¡'ê¸/€?~ú	Ò³iÎ‚ŸQ~kùåkÄ"äòí©ž-~N	Ú]òaiter->recv_wait + group->waiter->length        !P io_ready != NULL 0 NULL != enumerator me == enumeÄ[Ã1ö¿�èÿÿH‰D$è    H‹D$HƒÄ[Ã@ óúSH‰ûH…ÿt[� è    L‹d$L‹l$ éçþÿÿ@ L‹d$L‹l$ éÔþÿÿ�H‰ßèˆñÿÿƒØíH‹{@è    H‹{(è    HƒÄ‰è[]Ã@ ½ÿÿÿÿëÚ�è    H…ÛóúUH‰õSH‰ûHƒìH‹    ‹…Ò„�   H…Û„”   Hƒ} „»Cè    H‰CpH…Àt<Ç   ; H‹=    è    H‹    H‹=    H‹¿Õèÿÿè    ½ÿÿÿÿëÀD  H‹    H‹XH…Û…]ÿÿÿºÒ  H�5£    H‹ H9Â„”   H9èuï1íH‹{(è    HƒÄ‰è[]Ã ºýÿ„     è    =—èÿÿ…ýÿÿA‹G é£ýÿÿ€    I‹_`A�nÿHÁå$L‹d$(L‹|$@HƒÄHÃ@ H‰ßè    1ö¿Õèÿÿ»ÿÿÿÿè    A‹G  H‹Hé    f„     AWH‰ð1ÒI‰ðAVHÁè
I‰þL�AUI‰õATIA^A_ÃD  L‰*fAƒHƒÄ[]A\A]A^A_Ã�1ö¿�èÿÿè    HƒÄ1092  0     0     100644  54704     `
ELF     Ã      0              À                            �W      0                           —              @               ˆ&      `	         lists .rela.debug_line .debug_str .debug_line_str   
      ]       .       
      ‘       2          
                                   "                                
   
                          í      
   	   \      ñ       Ð       d      
   	   Æ       i            | ~            Õ      “            n       �        °            à      Ï      
   	     
      O      g      
             s      Ï      
      Ú            
      @      *  
      ø      G      
      -       T        
      ¢      …      
      ÿ
      ’        
      ï       Ï      
      Ä      Û        
      š
      G
      
      ÷      `
        
            Ì	      
      l      Ù	        
      ê       9      
      M
      U       ‚      ý      
      ß            
      ü   ú      
      Ó
            
      n       
      Å            
      �               
      è
            
      	               
      ¹       3      
      #       H       
      Á	      þ       
      ‡            
       /       
              6       
      ñ
 ÿD            üÿÿÿÿÿÿÿb                   l *   $   üÿÿÿÿÿÿÿn            üÿÿÿÿÿÿÿx      ÿÿÿÿ³            üÿÿÿÿÿÿÿº                       „       *      üÿÿÿÿÿÿÿ–             üÿÿÿ_DestroyLock      
                                  2      Â     P      W       Ô                                                (        GNU   À                    GNU  À      –0ÔÀ       Ó             xœ…��jÄ €ûBê~Ž²·)žIÛpl³¬U ‹A¢8}fz�æÐ)ìQ¸›ÎœU©ù–ˆ—težROÄŒ�¯Þr�“DÙ¹Vžôé€‹ñ:€Œ¿R–TPäMVªoÂ;…Ú•^€V=SŽu1•­fø½Kt¥¨æ�:œUMòÓTxõµÓ•§óÅ2“³Å6›îÖÛŸCÏtš#©e]0Õ»l:½Z:dÕ©ãŸ~Õo#­Œpªé:·hµ"æfCÛ6ªFó�¿¼ÏÝ`†ñ£q»•¯˜W‰:üo˜µÃl                     `                        4ÐPw<NÀ×¬]ovÀéÌ,W<7°bV¹âøÀŠÙåñW&—P>ã4r¼¯ yÈi*Œî²"ÜfsB«¤Ïu—»TÕ º,ð�«Ú¥Ë×�ëFÕç7X¥»Áå¼‘º)mó ÿ:òßT=ñäQñÑ
'ËFK»„ÍV«^ÑïB>ËiV]Rú˜ª}ô2¦ÁÑ^…Ù¨œeîE!r«U…_|_B”h±˜¥.LKü¿”ô˜ƒ2IcC¡ÐÎ�u/b˜Çá%4R¯pT ´ 2Ç*ªØBp}Æw’Ð"`yŽ&º
¼ó9:—ÐÕà¯âh¡k ½“£™äEÄ<{¸]s3Œ’¯çaÌvSŽ<Z_u€Û>Ú�ÆÖØ	ÞgAl��Áµ–è¶ÿ8'5>higher              	             xœ•Xk�TÅ¾gî  è    H‰    H…ÀtkHƒÄ[]Ã@ �ý   ~EÇ       ‹ÿÿÿ ºM   H�5    H�=    è    ë² ff.„     óú        >                    è[          @     @_ExportFileMapAsString _md_ImportFileMapFromStringterminate_waitpid_daemon _MD_CreateUnixProcess _MDix_map_socketavailable_error _MD_unix_map_accept_enix_map_default_error _MD_unix_map_closedir_error tThreadName _PR_InitStacks _PR_InitCPUs PR_SetConcGetCurrentThread PR_AttachThread PR_GetThreadScope_GetFileInfo64 PR_Rename PR_CloseDir PR_MakeDir PR PR_GetSpecialFD PR_GetConnectStatus PR_GetFileMetficTimeParameters PR_ParseTimeStringToExplodedTimePR_GetTraceHandleFromName PR_RecordTraceEntries PRnlockOrderedLock _pr_CopyLowBits PR_GetRandomNoisePR_MicrosecondsToInterval PR_IntervalToSeconds PR_InheritableFD PR_GetInheritedFD PR_CreateProcess Pnvironment nspr_InitializePRErrorTable PR_GetErrorPR_FindNextCounterRname PR_GetCounterHandleFromNameSharedMemory PR_OpenAnonFileMap PR_ProcessAttrSetThreadPrivateIndex PR_SetThreadPrivate PR_GetThreak _PR_CleanupCMon PR_CEnterMonitor PR_CExitMonitor_LogFlush _PR_LogCleanup PR_SetLogBuffering _PR_Inmerator PR_DestroyMWaitEnumerator PR_EnumerateWaitelWaitFileDesc PR_CancelWaitGroup PR_CreateWaitGroyþ yþ yþ yþ yþ yþ yþ yþ yþ yþ ½ª ½ª ½T‚ T‚ T‚ }> •Š •Š §& §& §& §& ·b ·b ·ú ú ú ú ú NÚ NÚ NÚ NÚ NÚ �^ �^ �!<arch>
/               1789641106  0     0    