4769 Want implementation of uuid command
| Split | Close |
| Expand all | |
| Collapse all | |
--- old/usr/src/man/man1/Makefile +++ new/usr/src/man/man1/Makefile
1 1 #
2 2 # This file and its contents are supplied under the terms of the
3 3 # Common Development and Distribution License ("CDDL"), version 1.0.
4 4 # You may only use this file in accordance with the terms of version
5 5 # 1.0 of the CDDL.
6 6 #
7 7 # A full copy of the text of the CDDL should have accompanied this
8 8 # source. A copy of the CDDL is also available via the Internet
9 9 # at http://www.illumos.org/license/CDDL.
10 10 #
11 11
12 12 #
13 13 # Copyright 2011, Richard Lowe
14 14 # Copyright 2015 Nexenta Systems, Inc. All rights reserved.
15 15 # Copyright 2014 Garrett D'Amore <garrett@damore.org>
16 16 #
17 17
18 18 include $(SRC)/Makefile.master
19 19
20 20 MANSECT= 1
21 21
22 22 MANFILES= acctcom.1 \
23 23 adb.1 \
24 24 addbib.1 \
25 25 alias.1 \
26 26 allocate.1 \
27 27 amt.1 \
28 28 appcert.1 \
29 29 apptrace.1 \
30 30 apropos.1 \
31 31 ar.1 \
32 32 arch.1 \
33 33 asa.1 \
34 34 at.1 \
35 35 atq.1 \
36 36 atrm.1 \
37 37 audioconvert.1 \
38 38 audioctl.1 \
39 39 audioplay.1 \
40 40 audiorecord.1 \
41 41 audiotest.1 \
42 42 auths.1 \
43 43 awk.1 \
44 44 banner.1 \
45 45 basename.1 \
46 46 bc.1 \
47 47 bdiff.1 \
48 48 break.1 \
49 49 builtin.1 \
50 50 cal.1 \
51 51 calendar.1 \
52 52 cancel.1 \
53 53 cat.1 \
54 54 cd.1 \
55 55 cdrw.1 \
56 56 checknr.1 \
57 57 chgrp.1 \
58 58 chkey.1 \
59 59 chmod.1 \
60 60 chown.1 \
61 61 ckdate.1 \
62 62 ckgid.1 \
63 63 ckint.1 \
64 64 ckitem.1 \
65 65 ckkeywd.1 \
66 66 ckpath.1 \
67 67 ckrange.1 \
68 68 ckstr.1 \
69 69 cksum.1 \
70 70 cktime.1 \
71 71 ckuid.1 \
72 72 ckyorn.1 \
73 73 clear.1 \
74 74 cmp.1 \
75 75 col.1 \
76 76 comm.1 \
77 77 command.1 \
78 78 compress.1 \
79 79 cp.1 \
80 80 cpio.1 \
81 81 cputrack.1 \
82 82 crle.1 \
83 83 crontab.1 \
84 84 crypt.1 \
85 85 csh.1 \
86 86 csplit.1 \
87 87 ctags.1 \
88 88 ctrun.1 \
89 89 ctstat.1 \
90 90 ctwatch.1 \
91 91 cut.1 \
92 92 date.1 \
93 93 dc.1 \
94 94 deallocate.1 \
95 95 deroff.1 \
96 96 dhcpinfo.1 \
97 97 diff.1 \
98 98 diff3.1 \
99 99 diffmk.1 \
100 100 digest.1 \
101 101 dircmp.1 \
102 102 dis.1 \
103 103 disown.1 \
104 104 dispgid.1 \
105 105 dispuid.1 \
106 106 dos2unix.1 \
107 107 download.1 \
108 108 dpost.1 \
109 109 du.1 \
110 110 dump.1 \
111 111 dumpcs.1 \
112 112 echo.1 \
113 113 ed.1 \
114 114 egrep.1 \
115 115 eject.1 \
116 116 elfdump.1 \
117 117 elfedit.1 \
118 118 elfsign.1 \
119 119 elfwrap.1 \
120 120 enable.1 \
121 121 encrypt.1 \
122 122 enhance.1 \
123 123 env.1 \
124 124 eqn.1 \
125 125 exec.1 \
126 126 exit.1 \
127 127 expand.1 \
128 128 expr.1 \
129 129 exstr.1 \
130 130 factor.1 \
131 131 fdformat.1 \
132 132 fgrep.1 \
133 133 file.1 \
134 134 filesync.1 \
135 135 find.1 \
136 136 finger.1 \
137 137 fmt.1 \
138 138 fmtmsg.1 \
139 139 fold.1 \
140 140 ftp.1 \
141 141 gcore.1 \
142 142 gencat.1 \
143 143 genmsg.1 \
144 144 getconf.1 \
145 145 getfacl.1 \
146 146 getlabel.1 \
147 147 getopt.1 \
148 148 getoptcvt.1 \
149 149 getopts.1 \
150 150 gettext.1 \
151 151 gettxt.1 \
152 152 getzonepath.1 \
153 153 glob.1 \
154 154 gprof.1 \
155 155 grep.1 \
156 156 groups.1 \
157 157 hash.1 \
158 158 head.1 \
159 159 history.1 \
160 160 hostid.1 \
161 161 hostname.1 \
162 162 iconv.1 \
163 163 indxbib.1 \
164 164 Intro.1 \
165 165 ipcrm.1 \
166 166 ipcs.1 \
167 167 isainfo.1 \
168 168 isalist.1 \
169 169 jobs.1 \
170 170 join.1 \
171 171 kbd.1 \
172 172 kdestroy.1 \
173 173 keylogin.1 \
174 174 keylogout.1 \
175 175 kill.1 \
176 176 kinit.1 \
177 177 klist.1 \
178 178 kmdb.1 \
179 179 kmfcfg.1 \
180 180 kpasswd.1 \
181 181 krb5-config.1 \
182 182 ksh93.1 \
183 183 ktutil.1 \
184 184 kvmstat.1 \
185 185 lari.1 \
186 186 last.1 \
187 187 lastcomm.1 \
188 188 ld.1 \
189 189 ldap.1 \
190 190 ldapdelete.1 \
191 191 ldaplist.1 \
192 192 ldapmodify.1 \
193 193 ldapmodrdn.1 \
194 194 ldapsearch.1 \
195 195 ldd.1 \
196 196 ld.so.1.1 \
197 197 let.1 \
198 198 lex.1 \
199 199 lgrpinfo.1 \
200 200 limit.1 \
201 201 line.1 \
202 202 list_devices.1 \
203 203 listusers.1 \
204 204 ln.1 \
205 205 loadkeys.1 \
206 206 locale.1 \
207 207 localedef.1 \
208 208 logger.1 \
209 209 login.1 \
210 210 logname.1 \
211 211 logout.1 \
212 212 look.1 \
213 213 lookbib.1 \
214 214 lorder.1 \
215 215 lp.1 \
216 216 lpstat.1 \
217 217 ls.1 \
218 218 m4.1 \
219 219 mac.1 \
220 220 mach.1 \
221 221 madv.so.1.1 \
222 222 mail.1 \
223 223 mailcompat.1 \
224 224 mailq.1 \
225 225 mailstats.1 \
226 226 mailx.1 \
227 227 make.1 \
228 228 makekey.1 \
229 229 man.1 \
230 230 mandoc.1 \
231 231 mconnect.1 \
232 232 mcs.1 \
233 233 mdb.1 \
234 234 mesg.1 \
235 235 mkdir.1 \
236 236 mkmsgs.1 \
237 237 mktemp.1 \
238 238 moe.1 \
239 239 more.1 \
240 240 mpss.so.1.1 \
241 241 msgcc.1 \
242 242 msgcpp.1 \
243 243 msgcvt.1 \
244 244 msgfmt.1 \
245 245 msggen.1 \
246 246 msgget.1 \
247 247 mt.1 \
248 248 mv.1 \
249 249 nawk.1 \
250 250 nc.1 \
251 251 nca.1 \
252 252 ncab2clf.1 \
253 253 ncakmod.1 \
254 254 newform.1 \
255 255 newgrp.1 \
256 256 news.1 \
257 257 newtask.1 \
258 258 nice.1 \
259 259 nl.1 \
260 260 nm.1 \
261 261 nohup.1 \
262 262 nroff.1 \
263 263 od.1 \
264 264 on.1 \
265 265 optisa.1 \
266 266 pack.1 \
267 267 pagesize.1 \
268 268 pargs.1 \
269 269 passwd.1 \
270 270 paste.1 \
271 271 pathchk.1 \
272 272 pax.1 \
273 273 pfexec.1 \
274 274 pg.1 \
275 275 pgrep.1 \
276 276 pkginfo.1 \
277 277 pkgmk.1 \
278 278 pkgparam.1 \
279 279 pkgproto.1 \
280 280 pkgtrans.1 \
281 281 pktool.1 \
282 282 plabel.1 \
283 283 plgrp.1 \
284 284 plimit.1 \
285 285 pmadvise.1 \
286 286 pmap.1 \
287 287 postio.1 \
288 288 postprint.1 \
289 289 postreverse.1 \
290 290 ppgsz.1 \
291 291 ppriv.1 \
292 292 pr.1 \
293 293 praliases.1 \
294 294 prctl.1 \
295 295 preap.1 \
296 296 prex.1 \
297 297 print.1 \
298 298 printf.1 \
299 299 priocntl.1 \
300 300 proc.1 \
301 301 prof.1 \
302 302 profiles.1 \
303 303 projects.1 \
304 304 ps.1 \
305 305 ptree.1 \
306 306 pvs.1 \
307 307 pwd.1 \
308 308 ranlib.1 \
309 309 rcapstat.1 \
310 310 rcp.1 \
311 311 rdist.1 \
312 312 read.1 \
313 313 readonly.1 \
314 314 refer.1 \
315 315 regcmp.1 \
316 316 renice.1 \
317 317 rev.1 \
318 318 rlogin.1 \
319 319 rm.1 \
320 320 rmformat.1 \
321 321 rmmount.1 \
322 322 roffbib.1 \
323 323 roles.1 \
324 324 rpcgen.1 \
325 325 rsh.1 \
326 326 runat.1 \
327 327 rup.1 \
328 328 ruptime.1 \
329 329 rusers.1 \
330 330 rwho.1 \
331 331 sar.1 \
332 332 scp.1 \
333 333 script.1 \
334 334 sdiff.1 \
335 335 sed.1 \
336 336 set.1 \
337 337 setfacl.1 \
338 338 setlabel.1 \
339 339 setpgrp.1 \
340 340 sftp.1 \
341 341 shcomp.1 \
342 342 shell_builtins.1 \
343 343 shift.1 \
344 344 size.1 \
345 345 sleep.1 \
346 346 smbutil.1 \
347 347 soelim.1 \
348 348 sort.1 \
349 349 sortbib.1 \
350 350 sotruss.1 \
351 351 spell.1 \
352 352 split.1 \
353 353 srchtxt.1 \
354 354 ssh.1 \
355 355 ssh-add.1 \
356 356 ssh-agent.1 \
357 357 ssh-http-proxy-connect.1 \
358 358 ssh-keygen.1 \
359 359 ssh-keyscan.1 \
360 360 ssh-socks5-proxy-connect.1 \
361 361 strchg.1 \
362 362 strings.1 \
363 363 strip.1 \
364 364 stty.1 \
365 365 sum.1 \
366 366 suspend.1 \
367 367 svcprop.1 \
368 368 svcs.1 \
369 369 symorder.1 \
370 370 sysV-make.1 \
371 371 sys-suspend.1 \
372 372 tabs.1 \
373 373 tail.1 \
374 374 talk.1 \
375 375 tar.1 \
376 376 tbl.1 \
377 377 tcopy.1 \
378 378 tee.1 \
379 379 telnet.1 \
380 380 test.1 \
381 381 tftp.1 \
382 382 time.1 \
383 383 times.1 \
384 384 timex.1 \
385 385 tip.1 \
386 386 tnfdump.1 \
387 387 tnfxtract.1 \
388 388 touch.1 \
389 389 tput.1 \
390 390 tr.1 \
391 391 trap.1 \
392 392 troff.1 \
393 393 true.1 \
394 394 truss.1 \
395 395 tsort.1 \
396 396 tty.1 \
| ↓ open down ↓ | 396 lines elided | ↑ open up ↑ |
397 397 type.1 \ 398 398 typeset.1 \ 399 399 ul.1 \ 400 400 umask.1 \ 401 401 uname.1 \ 402 402 unifdef.1 \ 403 403 uniq.1 \ 404 404 units.1 \ 405 405 unix2dos.1 \ 406 406 uptime.1 \ 407 - vacation.1 \ 407 + uuidgen.1 \ 408 + vacation.1 \ 408 409 vgrind.1 \ 409 410 volcheck.1 \ 410 411 volrmmount.1 \ 411 412 w.1 \ 412 413 wait.1 \ 413 414 wc.1 \ 414 415 which.1 \ 415 416 who.1 \ 416 417 whocalls.1 \ 417 418 whois.1 \
418 419 write.1 \ 419 420 xargs.1 \ 420 421 xgettext.1 \ 421 422 xstr.1 \ 422 423 yacc.1 \ 423 424 yes.1 \ 424 425 ypcat.1 \ 425 426 ypmatch.1 \ 426 427 yppasswd.1 \ 427 428 ypwhich.1 \ 428 429 zlogin.1 \ 429 430 zonename.1 430 431 431 432 MANLINKS= batch.1 \ 432 433 bg.1 \ 433 434 case.1 \ 434 435 chdir.1 \ 435 436 checkeq.1 \ 436 437 continue.1 \ 437 438 decrypt.1 \ 438 439 dirname.1 \ 439 440 dirs.1 \ 440 441 disable.1 \ 441 442 dmake.1 \ 442 443 dumpkeys.1 \ 443 444 edit.1 \ 444 445 errange.1 \ 445 446 errdate.1 \ 446 447 errgid.1 \ 447 448 errint.1 \ 448 449 erritem.1 \ 449 450 errpath.1 \ 450 451 errstr.1 \ 451 452 errtime.1 \ 452 453 erruid.1 \ 453 454 erryorn.1 \ 454 455 eval.1 \ 455 456 export.1 \ 456 457 false.1 \ 457 458 fc.1 \ 458 459 fg.1 \ 459 460 for.1 \ 460 461 foreach.1 \ 461 462 function.1 \ 462 463 goto.1 \ 463 464 hashcheck.1 \ 464 465 hashmake.1 \ 465 466 hashstat.1 \ 466 467 helpdate.1 \ 467 468 helpgid.1 \ 468 469 helpint.1 \ 469 470 helpitem.1 \ 470 471 helppath.1 \ 471 472 helprange.1 \ 472 473 helpstr.1 \ 473 474 helptime.1 \ 474 475 helpuid.1 \ 475 476 helpyorn.1 \ 476 477 hist.1 \ 477 478 if.1 \ 478 479 intro.1 \ 479 480 jsh.1 \ 480 481 ksh.1 \ 481 482 ldapadd.1 \ 482 483 neqn.1 \ 483 484 notify.1 \ 484 485 onintr.1 \ 485 486 page.1 \ 486 487 pcat.1 \ 487 488 pcred.1 \ 488 489 pfcsh.1 \ 489 490 pfiles.1 \ 490 491 pfksh.1 \ 491 492 pflags.1 \ 492 493 pfsh.1 \ 493 494 pkill.1 \ 494 495 pldd.1 \ 495 496 popd.1 \ 496 497 prun.1 \ 497 498 psig.1 \ 498 499 pstack.1 \ 499 500 pstop.1 \ 500 501 ptime.1 \ 501 502 pushd.1 \ 502 503 pwait.1 \ 503 504 pwdx.1 \ 504 505 red.1 \ 505 506 rehash.1 \ 506 507 remote_shell.1 \ 507 508 remsh.1 \ 508 509 repeat.1 \ 509 510 return.1 \ 510 511 rksh.1 \ 511 512 rksh93.1 \ 512 513 rmail.1 \ 513 514 rmdir.1 \ 514 515 rmumount.1 \ 515 516 select.1 \ 516 517 setenv.1 \ 517 518 settime.1 \ 518 519 sh.1 \ 519 520 snca.1 \ 520 521 source.1 \ 521 522 spellin.1 \ 522 523 stop.1 \ 523 524 strconf.1 \ 524 525 switch.1 \ 525 526 ulimit.1 \ 526 527 unalias.1 \ 527 528 uncompress.1 \ 528 529 unexpand.1 \ 529 530 unhash.1 \ 530 531 unlimit.1 \ 531 532 unpack.1 \ 532 533 unset.1 \ 533 534 unsetenv.1 \ 534 535 until.1 \ 535 536 valdate.1 \ 536 537 valgid.1 \ 537 538 valint.1 \ 538 539 valpath.1 \ 539 540 valrange.1 \ 540 541 valstr.1 \ 541 542 valtime.1 \ 542 543 valuid.1 \ 543 544 valyorn.1 \ 544 545 vedit.1 \ 545 546 whatis.1 \ 546 547 whence.1 \ 547 548 while.1 \ 548 549 zcat.1 549 550 550 551 intro.1 := LINKSRC = Intro.1 551 552 552 553 whatis.1 := LINKSRC = apropos.1 553 554 554 555 unalias.1 := LINKSRC = alias.1 555 556 556 557 batch.1 := LINKSRC = at.1 557 558 558 559 dirname.1 := LINKSRC = basename.1 559 560 560 561 continue.1 := LINKSRC = break.1 561 562 562 563 chdir.1 := LINKSRC = cd.1 563 564 dirs.1 := LINKSRC = cd.1 564 565 popd.1 := LINKSRC = cd.1 565 566 pushd.1 := LINKSRC = cd.1 566 567 567 568 errdate.1 := LINKSRC = ckdate.1 568 569 helpdate.1 := LINKSRC = ckdate.1 569 570 valdate.1 := LINKSRC = ckdate.1 570 571 571 572 errgid.1 := LINKSRC = ckgid.1 572 573 helpgid.1 := LINKSRC = ckgid.1 573 574 valgid.1 := LINKSRC = ckgid.1 574 575 575 576 errint.1 := LINKSRC = ckint.1 576 577 helpint.1 := LINKSRC = ckint.1 577 578 valint.1 := LINKSRC = ckint.1 578 579 579 580 erritem.1 := LINKSRC = ckitem.1 580 581 helpitem.1 := LINKSRC = ckitem.1 581 582 582 583 errpath.1 := LINKSRC = ckpath.1 583 584 helppath.1 := LINKSRC = ckpath.1 584 585 valpath.1 := LINKSRC = ckpath.1 585 586 586 587 errange.1 := LINKSRC = ckrange.1 587 588 helprange.1 := LINKSRC = ckrange.1 588 589 valrange.1 := LINKSRC = ckrange.1 589 590 590 591 errstr.1 := LINKSRC = ckstr.1 591 592 helpstr.1 := LINKSRC = ckstr.1 592 593 valstr.1 := LINKSRC = ckstr.1 593 594 594 595 errtime.1 := LINKSRC = cktime.1 595 596 helptime.1 := LINKSRC = cktime.1 596 597 valtime.1 := LINKSRC = cktime.1 597 598 598 599 erruid.1 := LINKSRC = ckuid.1 599 600 helpuid.1 := LINKSRC = ckuid.1 600 601 valuid.1 := LINKSRC = ckuid.1 601 602 602 603 erryorn.1 := LINKSRC = ckyorn.1 603 604 helpyorn.1 := LINKSRC = ckyorn.1 604 605 valyorn.1 := LINKSRC = ckyorn.1 605 606 606 607 uncompress.1 := LINKSRC = compress.1 607 608 zcat.1 := LINKSRC = compress.1 608 609 609 610 red.1 := LINKSRC = ed.1 610 611 611 612 disable.1 := LINKSRC = enable.1 612 613 613 614 decrypt.1 := LINKSRC = encrypt.1 614 615 615 616 dmake.1 := LINKSRC = make.1 616 617 617 618 checkeq.1 := LINKSRC = eqn.1 618 619 neqn.1 := LINKSRC = eqn.1 619 620 620 621 eval.1 := LINKSRC = exec.1 621 622 source.1 := LINKSRC = exec.1 622 623 623 624 goto.1 := LINKSRC = exit.1 624 625 return.1 := LINKSRC = exit.1 625 626 626 627 unexpand.1 := LINKSRC = expand.1 627 628 628 629 hashstat.1 := LINKSRC = hash.1 629 630 rehash.1 := LINKSRC = hash.1 630 631 unhash.1 := LINKSRC = hash.1 631 632 632 633 fc.1 := LINKSRC = history.1 633 634 hist.1 := LINKSRC = history.1 634 635 635 636 bg.1 := LINKSRC = jobs.1 636 637 fg.1 := LINKSRC = jobs.1 637 638 notify.1 := LINKSRC = jobs.1 638 639 stop.1 := LINKSRC = jobs.1 639 640 640 641 jsh.1 := LINKSRC = ksh93.1 641 642 ksh.1 := LINKSRC = ksh93.1 642 643 rksh.1 := LINKSRC = ksh93.1 643 644 rksh93.1 := LINKSRC = ksh93.1 644 645 sh.1 := LINKSRC = ksh93.1 645 646 646 647 ldapadd.1 := LINKSRC = ldapmodify.1 647 648 648 649 ulimit.1 := LINKSRC = limit.1 649 650 unlimit.1 := LINKSRC = limit.1 650 651 651 652 dumpkeys.1 := LINKSRC = loadkeys.1 652 653 653 654 rmail.1 := LINKSRC = mail.1 654 655 655 656 page.1 := LINKSRC = more.1 656 657 657 658 snca.1 := LINKSRC = nca.1 658 659 659 660 pcat.1 := LINKSRC = pack.1 660 661 unpack.1 := LINKSRC = pack.1 661 662 662 663 pfcsh.1 := LINKSRC = pfexec.1 663 664 pfksh.1 := LINKSRC = pfexec.1 664 665 pfsh.1 := LINKSRC = pfexec.1 665 666 666 667 pkill.1 := LINKSRC = pgrep.1 667 668 668 669 pcred.1 := LINKSRC = proc.1 669 670 pfiles.1 := LINKSRC = proc.1 670 671 pflags.1 := LINKSRC = proc.1 671 672 pldd.1 := LINKSRC = proc.1 672 673 prun.1 := LINKSRC = proc.1 673 674 psig.1 := LINKSRC = proc.1 674 675 pstack.1 := LINKSRC = proc.1 675 676 pstop.1 := LINKSRC = proc.1 676 677 ptime.1 := LINKSRC = proc.1 677 678 pwait.1 := LINKSRC = proc.1 678 679 pwdx.1 := LINKSRC = proc.1 679 680 680 681 rmdir.1 := LINKSRC = rm.1 681 682 682 683 rmumount.1 := LINKSRC = rmmount.1 683 684 684 685 remote_shell.1 := LINKSRC = rsh.1 685 686 remsh.1 := LINKSRC = rsh.1 686 687 687 688 export.1 := LINKSRC = set.1 688 689 setenv.1 := LINKSRC = set.1 689 690 unset.1 := LINKSRC = set.1 690 691 unsetenv.1 := LINKSRC = set.1 691 692 692 693 case.1 := LINKSRC = shell_builtins.1 693 694 for.1 := LINKSRC = shell_builtins.1 694 695 foreach.1 := LINKSRC = shell_builtins.1 695 696 function.1 := LINKSRC = shell_builtins.1 696 697 if.1 := LINKSRC = shell_builtins.1 697 698 repeat.1 := LINKSRC = shell_builtins.1 698 699 select.1 := LINKSRC = shell_builtins.1 699 700 switch.1 := LINKSRC = shell_builtins.1 700 701 until.1 := LINKSRC = shell_builtins.1 701 702 while.1 := LINKSRC = shell_builtins.1 702 703 703 704 hashcheck.1 := LINKSRC = spell.1 704 705 hashmake.1 := LINKSRC = spell.1 705 706 spellin.1 := LINKSRC = spell.1 706 707 707 708 strconf.1 := LINKSRC = strchg.1 708 709 709 710 settime.1 := LINKSRC = touch.1 710 711 711 712 onintr.1 := LINKSRC = trap.1 712 713 713 714 false.1 := LINKSRC = true.1 714 715 715 716 whence.1 := LINKSRC = typeset.1 716 717 717 718 # Links to usr/has/man 718 719 719 720 edit.1 := LINKSRC = ../../../has/man/man1has/edit.1has 720 721 721 722 vedit.1 := LINKSRC = ../../../has/man/man1has/vi.1has 722 723 723 724 .KEEP_STATE: 724 725 725 726 include $(SRC)/man/Makefile.man 726 727 727 728 install: $(ROOTMANFILES) $(ROOTMANLINKS)
| ↓ open down ↓ | 310 lines elided | ↑ open up ↑ |
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX