NWGNUauthzdbm revision 0662ed52e814f8f08ef0e09956413a792584eddf
7c0946e74be897d02aaaf980ac146bcb500c2c8cMark Andrews#
7c0946e74be897d02aaaf980ac146bcb500c2c8cMark Andrews# Make sure all needed macro's are defined
7c0946e74be897d02aaaf980ac146bcb500c2c8cMark Andrews#
09cbf84907de2bd088b4ce8bd1307938bf0e81baMark Andrews
09cbf84907de2bd088b4ce8bd1307938bf0e81baMark Andrews#
9e2789fd70b954df426b80301b62388497692481Mark Andrews# Get the 'head' of the build environment if necessary. This includes default
9e2789fd70b954df426b80301b62388497692481Mark Andrews# targets and paths to tools
b1163a6fe91e6e7a14e40cd5d33108c4deb38312Mark Andrews#
b1163a6fe91e6e7a14e40cd5d33108c4deb38312Mark Andrews
b1163a6fe91e6e7a14e40cd5d33108c4deb38312Mark Andrewsifndef EnvironmentDefined
b1163a6fe91e6e7a14e40cd5d33108c4deb38312Mark Andrewsinclude $(AP_WORK)/build/NWGNUhead.inc
8af4bf165e9a6aa111e0b6bfcbcc7f4a741a8ae5Mark Andrewsendif
8af4bf165e9a6aa111e0b6bfcbcc7f4a741a8ae5Mark Andrews
5cf0c559489d741ee5c7943ece47e40567bb0ba9Mark Andrews#
5cf0c559489d741ee5c7943ece47e40567bb0ba9Mark Andrews# These directories will be at the beginning of the include list, followed by
5cf0c559489d741ee5c7943ece47e40567bb0ba9Mark Andrews# INCDIRS
fda0a038810529d6e45b17822ddcc61d82964e83Mark Andrews#
fda0a038810529d6e45b17822ddcc61d82964e83Mark AndrewsXINCDIRS += \
fda0a038810529d6e45b17822ddcc61d82964e83Mark Andrews $(APR)/include \
fda0a038810529d6e45b17822ddcc61d82964e83Mark Andrews $(APRUTIL)/include \
fda0a038810529d6e45b17822ddcc61d82964e83Mark Andrews $(AP_WORK)/include \
fda0a038810529d6e45b17822ddcc61d82964e83Mark Andrews $(NWOS) \
fda0a038810529d6e45b17822ddcc61d82964e83Mark Andrews $(EOLIST)
fda0a038810529d6e45b17822ddcc61d82964e83Mark Andrews
53d3679913d715cce0dc7e8be04662366eab4842Mark Andrews#
53d3679913d715cce0dc7e8be04662366eab4842Mark Andrews# These flags will come after CFLAGS
53d3679913d715cce0dc7e8be04662366eab4842Mark Andrews#
755df9a92a13310eec4b1baeb297c93674a70417Mark AndrewsXCFLAGS += \
755df9a92a13310eec4b1baeb297c93674a70417Mark Andrews $(EOLIST)
755df9a92a13310eec4b1baeb297c93674a70417Mark Andrews
e3582ce43119a95448ccc06ea2586f6547c92967Mark Andrews#
e3582ce43119a95448ccc06ea2586f6547c92967Mark Andrews# These defines will come after DEFINES
2952abf7cbbba6c6f821ee18579ca29d87549574Mark Andrews#
2952abf7cbbba6c6f821ee18579ca29d87549574Mark AndrewsXDEFINES += \
efb82ed87e916c82b481bee4aa6651f2dbd4cedaMark Andrews $(EOLIST)
efb82ed87e916c82b481bee4aa6651f2dbd4cedaMark Andrews
7c693bfdbe488ca8fa4f0831c71f5809972f6cc7Mark Andrews#
7c693bfdbe488ca8fa4f0831c71f5809972f6cc7Mark Andrews# These flags will be added to the link.opt file
7092864f71e0bbb108041ef01ac3d2b41f90c4a9Mark Andrews#
7092864f71e0bbb108041ef01ac3d2b41f90c4a9Mark AndrewsXLFLAGS += \
7092864f71e0bbb108041ef01ac3d2b41f90c4a9Mark Andrews $(EOLIST)
24ee607afa66e5ba5fa8b2f18c34a5c430b8a3feMark Andrews
24ee607afa66e5ba5fa8b2f18c34a5c430b8a3feMark Andrews#
24ee607afa66e5ba5fa8b2f18c34a5c430b8a3feMark Andrews# These values will be appended to the correct variables based on the value of
2113dfd6e20a9ca16000ed226517b4660087c1f2Mark Andrews# RELEASE
2113dfd6e20a9ca16000ed226517b4660087c1f2Mark Andrews#
2113dfd6e20a9ca16000ed226517b4660087c1f2Mark Andrewsifeq "$(RELEASE)" "debug"
2dafa707cc9af9cca66d68c1d2c3af0c768c2900Mark AndrewsXINCDIRS += \
2dafa707cc9af9cca66d68c1d2c3af0c768c2900Mark Andrews $(EOLIST)
2dafa707cc9af9cca66d68c1d2c3af0c768c2900Mark Andrews
2dafa707cc9af9cca66d68c1d2c3af0c768c2900Mark AndrewsXCFLAGS += \
2dafa707cc9af9cca66d68c1d2c3af0c768c2900Mark Andrews $(EOLIST)
2dafa707cc9af9cca66d68c1d2c3af0c768c2900Mark Andrews
c7817270552b2faab56466b89731b6f290b352a4Mark AndrewsXDEFINES += \
c7817270552b2faab56466b89731b6f290b352a4Mark Andrews $(EOLIST)
c7817270552b2faab56466b89731b6f290b352a4Mark Andrews
22e5a52c3b5bfef7e75d95629e08cab7592fee5cMark AndrewsXLFLAGS += \
22e5a52c3b5bfef7e75d95629e08cab7592fee5cMark Andrews $(EOLIST)
22e5a52c3b5bfef7e75d95629e08cab7592fee5cMark Andrewsendif
6d453e1bb296e88732655f3d736e571eeaaca254Mark Andrews
240e57ab983296e6d52031a594d3345728191b48Mark Andrewsifeq "$(RELEASE)" "noopt"
240e57ab983296e6d52031a594d3345728191b48Mark AndrewsXINCDIRS += \
240e57ab983296e6d52031a594d3345728191b48Mark Andrews $(EOLIST)
cdb674387ca19dc8550553d90d8f9731befb6f1fMark Andrews
cdb674387ca19dc8550553d90d8f9731befb6f1fMark AndrewsXCFLAGS += \
cdb674387ca19dc8550553d90d8f9731befb6f1fMark Andrews $(EOLIST)
02ced31b6aa999099214d2688b1a80ac5d93c57bMark Andrews
02ced31b6aa999099214d2688b1a80ac5d93c57bMark AndrewsXDEFINES += \
02ced31b6aa999099214d2688b1a80ac5d93c57bMark Andrews $(EOLIST)
728156dfbdced7bc18b1f88227cced9d426a70e7Mark Andrews
728156dfbdced7bc18b1f88227cced9d426a70e7Mark AndrewsXLFLAGS += \
728156dfbdced7bc18b1f88227cced9d426a70e7Mark Andrews $(EOLIST)
d4f5efb4d63e2e17081a49a3457f05fe06fbb5abMark Andrewsendif
d4f5efb4d63e2e17081a49a3457f05fe06fbb5abMark Andrews
d4f5efb4d63e2e17081a49a3457f05fe06fbb5abMark Andrewsifeq "$(RELEASE)" "release"
e560f615b2592deea69c49bfc74acbb56f4fd913Mark AndrewsXINCDIRS += \
e560f615b2592deea69c49bfc74acbb56f4fd913Mark Andrews $(EOLIST)
cfaf65f53fb0c1779e7b2e07216e5fbfd3a2d52eMark Andrews
cfaf65f53fb0c1779e7b2e07216e5fbfd3a2d52eMark AndrewsXCFLAGS += \
cfaf65f53fb0c1779e7b2e07216e5fbfd3a2d52eMark Andrews $(EOLIST)
f07fe5a1ac9d1345eb7a36a0bc38716a03e25f61Mark Andrews
f07fe5a1ac9d1345eb7a36a0bc38716a03e25f61Mark AndrewsXDEFINES += \
f07fe5a1ac9d1345eb7a36a0bc38716a03e25f61Mark Andrews $(EOLIST)
f34249bb28093d6589196cd00ca040f503a65e2bMark Andrews
dbfc2232ef5b6e5572480070ab87a4d67c18aa39Mark AndrewsXLFLAGS += \
ce8cd4a3efd27ef145847216d513bb341bfe208cMark Andrews $(EOLIST)
ce8cd4a3efd27ef145847216d513bb341bfe208cMark Andrewsendif
ce8cd4a3efd27ef145847216d513bb341bfe208cMark Andrews
393e4679cf4dd8bafb031d8a61ece95af61fbedcMark Andrews#
393e4679cf4dd8bafb031d8a61ece95af61fbedcMark Andrews# These are used by the link target if an NLM is being generated
854dac0f186e5b491d65f6d73dd6e440e7a2c227Mark Andrews# This is used by the link 'name' directive to name the nlm. If left blank
854dac0f186e5b491d65f6d73dd6e440e7a2c227Mark Andrews# TARGET_nlm (see below) will be used.
854dac0f186e5b491d65f6d73dd6e440e7a2c227Mark Andrews#
67b1eee9dfde5ad86b54b2b768ff4d6b1354b651Mark AndrewsNLM_NAME = authzdbm
431fd1b0b5c3c049f9397ed4be8915715ead9cdbMark Andrews
431fd1b0b5c3c049f9397ed4be8915715ead9cdbMark Andrews#
cc7d91bd5c6b9be5a3c67a99112b885602c24873Mark Andrews# This is used by the link '-desc ' directive.
cc7d91bd5c6b9be5a3c67a99112b885602c24873Mark Andrews# If left blank, NLM_NAME will be used.
39ef7dddef12152afa3a2fc1c1962cdf6d30b5cbMark Andrews#
39ef7dddef12152afa3a2fc1c1962cdf6d30b5cbMark AndrewsNLM_DESCRIPTION = Apache $(VERSION_STR) Database Authorization Module
39ef7dddef12152afa3a2fc1c1962cdf6d30b5cbMark Andrews
f22ef4dfb973c4714eedd3818050fde74fb20e48Mark Andrews#
f22ef4dfb973c4714eedd3818050fde74fb20e48Mark Andrews# This is used by the '-threadname' directive. If left blank,
f22ef4dfb973c4714eedd3818050fde74fb20e48Mark Andrews# NLM_NAME Thread will be used.
3b572928731d3595990fe360c80977a2d043eb02Tatuya JINMEI 神明達哉#
84f5576c149ed0cf18555bcd7cf1ffbe491bb08fMark AndrewsNLM_THREAD_NAME = AuthzDBM Module
50d3f097d4c2779c8fb2397882d91e0cbca2c260Mark Andrews
84f5576c149ed0cf18555bcd7cf1ffbe491bb08fMark Andrews#
84f5576c149ed0cf18555bcd7cf1ffbe491bb08fMark Andrews# If this is specified, it will override VERSION value in
84f5576c149ed0cf18555bcd7cf1ffbe491bb08fMark Andrews# $(AP_WORK)/build/NWGNUenvironment.inc
6953fd6e20fddcb6389e642aa872cb7425a95f6dMark Andrews#
6953fd6e20fddcb6389e642aa872cb7425a95f6dMark AndrewsNLM_VERSION =
6953fd6e20fddcb6389e642aa872cb7425a95f6dMark Andrews
2b67af24fa02867fbc703e89277400b10d0c8b92Mark Andrews#
2b67af24fa02867fbc703e89277400b10d0c8b92Mark Andrews# If this is specified, it will override the default of 64K
2b67af24fa02867fbc703e89277400b10d0c8b92Mark Andrews#
f02b985650a6f1277a3a45f18561d519916c1890Mark AndrewsNLM_STACK_SIZE = 8192
f02b985650a6f1277a3a45f18561d519916c1890Mark Andrews
f02b985650a6f1277a3a45f18561d519916c1890Mark Andrews
c870001ae1bff0e38f622c4ed56872c7f1d2d336Mark Andrews#
c870001ae1bff0e38f622c4ed56872c7f1d2d336Mark Andrews# If this is specified it will be used by the link '-entry' directive
c870001ae1bff0e38f622c4ed56872c7f1d2d336Mark Andrews#
0b5d8941bb41edbe1296619485c16df536ecc05fMark AndrewsNLM_ENTRY_SYM =
0b5d8941bb41edbe1296619485c16df536ecc05fMark Andrews
bcdf37e0ff7d73310b7bf247d755194a5718ba38Mark Andrews#
bcdf37e0ff7d73310b7bf247d755194a5718ba38Mark Andrews# If this is specified it will be used by the link '-exit' directive
bcdf37e0ff7d73310b7bf247d755194a5718ba38Mark Andrews#
a34d19803a206febe10866394393ec1c09b28984Mark AndrewsNLM_EXIT_SYM =
a34d19803a206febe10866394393ec1c09b28984Mark Andrews
cbef026164ceabccb2e85403434b722d77f7b5eeMark Andrews#
cbef026164ceabccb2e85403434b722d77f7b5eeMark Andrews# If this is specified it will be used by the link '-check' directive
cbef026164ceabccb2e85403434b722d77f7b5eeMark Andrews#
2db8db63992d081c75d664340866e2a21913705dMark AndrewsNLM_CHECK_SYM =
2db8db63992d081c75d664340866e2a21913705dMark Andrews
2db8db63992d081c75d664340866e2a21913705dMark Andrews#
2db8db63992d081c75d664340866e2a21913705dMark Andrews# If these are specified it will be used by the link '-flags' directive
2db8db63992d081c75d664340866e2a21913705dMark Andrews#
7076f000ea3487299a9da9318915d042aaba62c5Mark AndrewsNLM_FLAGS =
7076f000ea3487299a9da9318915d042aaba62c5Mark Andrews
7076f000ea3487299a9da9318915d042aaba62c5Mark Andrews#
7076f000ea3487299a9da9318915d042aaba62c5Mark Andrews# If this is specified it will be linked in with the XDCData option in the def
7076f000ea3487299a9da9318915d042aaba62c5Mark Andrews# file instead of the default of $(NWOS)/apache.xdc. XDCData can be disabled
8626c376a038da969de1ee6c158957dfe638daacMark Andrews# by setting APACHE_UNIPROC in the environment
8626c376a038da969de1ee6c158957dfe638daacMark Andrews#
8626c376a038da969de1ee6c158957dfe638daacMark AndrewsXDCDATA =
c6ee5082db1e40ab64e08a540620da79996efa9cTatuya JINMEI 神明達哉
222dcab0a6456c5395545e885f21b5542b7d841dTatuya JINMEI 神明達哉#
c6ee5082db1e40ab64e08a540620da79996efa9cTatuya JINMEI 神明達哉# If there is an NLM target, put it here
f22ef4dfb973c4714eedd3818050fde74fb20e48Mark Andrews#
9a6522317c97e5487cea816173f63a0e5b4e428aTatuya JINMEI 神明達哉TARGET_nlm = \
f5a156fa25e6d341e703782de6368fbe9e256ddeTatuya JINMEI 神明達哉 $(OBJDIR)/authzdbm.nlm \
f22ef4dfb973c4714eedd3818050fde74fb20e48Mark Andrews $(EOLIST)
78ff0e94eae96f2cf8bf94454d8ff01ba280d30dMark Andrews
5a9efbf6bf951267e0844990f5b2cb69f5d5f01fTatuya JINMEI 神明達哉#
08eadd404a59a6befcf51cb13695abee5d03456dMark Andrews# If there is an LIB target, put it here
08eadd404a59a6befcf51cb13695abee5d03456dMark Andrews#
08eadd404a59a6befcf51cb13695abee5d03456dMark AndrewsTARGET_lib = \
c55dd77de4ce71b858afb291e44577b51be8b780Mark Andrews $(EOLIST)
c55dd77de4ce71b858afb291e44577b51be8b780Mark Andrews
c55dd77de4ce71b858afb291e44577b51be8b780Mark Andrews#
eca38a9d43391482bfa22e2eb7b86e19be8bf461Mark Andrews# These are the OBJ files needed to create the NLM target above.
eca38a9d43391482bfa22e2eb7b86e19be8bf461Mark Andrews# Paths must all use the '/' character
eca38a9d43391482bfa22e2eb7b86e19be8bf461Mark Andrews#
d79296d147cd4c35784dd3efd7ed7f09d976ee61Mark AndrewsFILES_nlm_objs = \
d79296d147cd4c35784dd3efd7ed7f09d976ee61Mark Andrews $(OBJDIR)/mod_authz_dbm.o \
4f5a43c5f084290054ddf212add7b4c2abe6edc5Tatuya JINMEI 神明達哉 $(EOLIST)
9a482d1fcead22ab0d639c463c77672846485f3eMark Andrews
46390a96dd5f15c9a0b3663bdb7791bdecec3052Mark Andrews#
9a482d1fcead22ab0d639c463c77672846485f3eMark Andrews# These are the LIB files needed to create the NLM target above.
9a482d1fcead22ab0d639c463c77672846485f3eMark Andrews# These will be added as a library command in the link.opt file.
9a482d1fcead22ab0d639c463c77672846485f3eMark Andrews#
9a482d1fcead22ab0d639c463c77672846485f3eMark AndrewsFILES_nlm_libs = \
9a482d1fcead22ab0d639c463c77672846485f3eMark Andrews libcpre.o \
d48f9877255f41b6074777da0639b6bc2bfad388Mark Andrews $(EOLIST)
d48f9877255f41b6074777da0639b6bc2bfad388Mark Andrews
d48f9877255f41b6074777da0639b6bc2bfad388Mark Andrews#
d48f9877255f41b6074777da0639b6bc2bfad388Mark Andrews# These are the modules that the above NLM target depends on to load.
5d51f534831bd648436d22e4faf203fb9abdf3d4Mark Andrews# These will be added as a module command in the link.opt file.
5d51f534831bd648436d22e4faf203fb9abdf3d4Mark Andrews#
5d51f534831bd648436d22e4faf203fb9abdf3d4Mark AndrewsFILES_nlm_modules = \
a45a6ea2b03448751d7c44931e8ac7666e7cc2ceMark Andrews aprlib \
a45a6ea2b03448751d7c44931e8ac7666e7cc2ceMark Andrews libc \
a45a6ea2b03448751d7c44931e8ac7666e7cc2ceMark Andrews $(EOLIST)
a45a6ea2b03448751d7c44931e8ac7666e7cc2ceMark Andrews
15bda409010cbf2d3e43baf10f28bae5f7b1abefMark Andrews#
15bda409010cbf2d3e43baf10f28bae5f7b1abefMark Andrews# If the nlm has a msg file, put it's path here
b5205d860b1672c405c57004e6823af873799b42Mark Andrews#
b5205d860b1672c405c57004e6823af873799b42Mark AndrewsFILE_nlm_msg =
b5205d860b1672c405c57004e6823af873799b42Mark Andrews
9a1e8f1baf3e5c53d6b6bfa97d7f60cb3358e404Mark Andrews#
9a1e8f1baf3e5c53d6b6bfa97d7f60cb3358e404Mark Andrews# If the nlm has a hlp file put it's path here
c79e85f7d77317a9b5c34b4bb94eaf1779fc0b6eMark Andrews#
c79e85f7d77317a9b5c34b4bb94eaf1779fc0b6eMark AndrewsFILE_nlm_hlp =
c79e85f7d77317a9b5c34b4bb94eaf1779fc0b6eMark Andrews
12b1bf8b14ac3b6ec4de9cae6fea10f389b5e5dbMark Andrews#
12b1bf8b14ac3b6ec4de9cae6fea10f389b5e5dbMark Andrews# If this is specified, it will override $(NWOS)\copyright.txt.
12b1bf8b14ac3b6ec4de9cae6fea10f389b5e5dbMark Andrews#
e22bd3c4bc0de0b96531fab5c2c944251e02e975Mark AndrewsFILE_nlm_copyright =
e22bd3c4bc0de0b96531fab5c2c944251e02e975Mark Andrews
e22bd3c4bc0de0b96531fab5c2c944251e02e975Mark Andrews#
9c420baae0dce935d70df3852bc3abdfe5caf093Mark Andrews# Any additional imports go here
529035492ea0a427cc8d007cd743934d4494d9d3Mark Andrews#
529035492ea0a427cc8d007cd743934d4494d9d3Mark AndrewsFILES_nlm_Ximports = \
ff6bd86d5778de50cb1b4e93591e22354062ee17Mark Andrews @$(APR)/aprlib.imp \
11e43ff752bab2983d9328b6624bbcef613a93e1Mark Andrews @$(NWOS)/httpd.imp \
444bbadb54d4a676aa4b20685d3178d7988534b3Mark Andrews @libc.imp \
444bbadb54d4a676aa4b20685d3178d7988534b3Mark Andrews $(EOLIST)
444bbadb54d4a676aa4b20685d3178d7988534b3Mark Andrews
cd6d8d61b076eea02826596334a105b918393627Mark Andrews#
cd6d8d61b076eea02826596334a105b918393627Mark Andrews# Any symbols exported to here
f04809663f4ba3df0e2ef1247d67bdd6ce0157d6Mark Andrews#
f04809663f4ba3df0e2ef1247d67bdd6ce0157d6Mark AndrewsFILES_nlm_exports = \
f04809663f4ba3df0e2ef1247d67bdd6ce0157d6Mark Andrews authz_dbm_module \
7d7f929274e48808b4771162d6302a99e69865d8Mark Andrews $(EOLIST)
7d7f929274e48808b4771162d6302a99e69865d8Mark Andrews
7d7f929274e48808b4771162d6302a99e69865d8Mark Andrews#
21b76ee598c937c6736cbc7ab69684bb3332428aMark Andrews# These are the OBJ files needed to create the LIB target above.
21b76ee598c937c6736cbc7ab69684bb3332428aMark Andrews# Paths must all use the '/' character
21b76ee598c937c6736cbc7ab69684bb3332428aMark Andrews#
21b76ee598c937c6736cbc7ab69684bb3332428aMark AndrewsFILES_lib_objs = \
21b76ee598c937c6736cbc7ab69684bb3332428aMark Andrews $(EOLIST)
5c45d30402af6860e1f66f5aa7d78dff58373b27Mark Andrews
5c45d30402af6860e1f66f5aa7d78dff58373b27Mark Andrews#
b66ca17f2990433a3e277b50cc3c15f19cdd0771Mark Andrews# implement targets and dependancies (leave this section alone)
b66ca17f2990433a3e277b50cc3c15f19cdd0771Mark Andrews#
b66ca17f2990433a3e277b50cc3c15f19cdd0771Mark Andrews
dc1f18f211a91735faf2771acc8438f0fbc70d4bMark Andrewslibs :: $(OBJDIR) $(TARGET_lib)
dc1f18f211a91735faf2771acc8438f0fbc70d4bMark Andrews
dc1f18f211a91735faf2771acc8438f0fbc70d4bMark Andrewsnlms :: libs $(TARGET_nlm)
dc1f18f211a91735faf2771acc8438f0fbc70d4bMark Andrews
7b68fa6229f1edadac44c7ec459c9ed77a8368c8Mark Andrews#
82ecc9cd96239649dfeb0a16e31c3b978d0d266aMark Andrews# Updated this target to create necessary directories and copy files to the
82ecc9cd96239649dfeb0a16e31c3b978d0d266aMark Andrews# correct place. (See $(AP_WORK)/build/NWGNUhead.inc for examples)
82ecc9cd96239649dfeb0a16e31c3b978d0d266aMark Andrews#
82ecc9cd96239649dfeb0a16e31c3b978d0d266aMark Andrewsinstall :: nlms FORCE
6412902ffc0d255657f54db768f30b6efa819143Mark Andrews
6412902ffc0d255657f54db768f30b6efa819143Mark Andrews#
6412902ffc0d255657f54db768f30b6efa819143Mark Andrews# Any specialized rules here
6412902ffc0d255657f54db768f30b6efa819143Mark Andrews#
6412902ffc0d255657f54db768f30b6efa819143Mark Andrews
6412902ffc0d255657f54db768f30b6efa819143Mark Andrews#
0d8971a4b8abed599ec9d9b7d1b51b8de8038ce2Shane Kerr# Include the 'tail' makefile that has targets that depend on variables defined
0d8971a4b8abed599ec9d9b7d1b51b8de8038ce2Shane Kerr# in this makefile
0d8971a4b8abed599ec9d9b7d1b51b8de8038ce2Shane Kerr#
a8f950ff05e2e81d425a3411268cdf21f8f26b16Mark Andrews
a8f950ff05e2e81d425a3411268cdf21f8f26b16Mark Andrewsinclude $(APBUILD)/NWGNUtail.inc
a8f950ff05e2e81d425a3411268cdf21f8f26b16Mark Andrews
bc1467288a25b48446d3229fef0a19fad0cb6f2fMark Andrews
bc1467288a25b48446d3229fef0a19fad0cb6f2fMark Andrews