Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
db0baced
Commit
db0baced
authored
Apr 04, 1996
by
Jack Jansen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added support for editing override preferences in applets
parent
bbb4e10e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
181 additions
and
74 deletions
+181
-74
Mac/scripts/EditPythonPrefs.py
Mac/scripts/EditPythonPrefs.py
+132
-25
Mac/scripts/EditPythonPrefs.rsrc.hqx
Mac/scripts/EditPythonPrefs.rsrc.hqx
+49
-49
No files found.
Mac/scripts/EditPythonPrefs.py
View file @
db0baced
...
...
@@ -18,13 +18,20 @@ DIALOG_ID = 512
TEXT_ITEM
=
1
OK_ITEM
=
2
CANCEL_ITEM
=
3
REVERT
_ITEM
=
4
DIR
_ITEM
=
5
DIR
_ITEM
=
4
TITLE
_ITEM
=
5
# Resource IDs in the preferences file
PATH_STRINGS_ID
=
128
DIRECTORY_ID
=
128
OPTIONS_ID
=
128
# Override IDs (in the applet)
OVERRIDE_PATH_STRINGS_ID
=
129
OVERRIDE_DIRECTORY_ID
=
129
OVERRIDE_OPTIONS_ID
=
129
READ
=
1
WRITE
=
2
smAllScripts
=
-
3
kOnSystemDisk
=
0x8000
...
...
@@ -61,7 +68,7 @@ def message(str = "Hello, world!", id = MESSAGE_ID):
n
=
ModalDialog
(
None
)
if
n
==
1
:
break
def
interact
(
list
,
pythondir
):
def
interact
(
list
,
pythondir
,
title
):
"""Let the user interact with the dialog"""
opythondir
=
pythondir
try
:
...
...
@@ -70,16 +77,20 @@ def interact(list, pythondir):
except
os
.
error
:
pass
d
=
GetNewDialog
(
DIALOG_ID
,
-
1
)
tp
,
h
,
rect
=
d
.
GetDialogItem
(
1
)
tp
,
h
,
rect
=
d
.
GetDialogItem
(
TITLE_ITEM
)
SetDialogItemText
(
h
,
title
)
tp
,
h
,
rect
=
d
.
GetDialogItem
(
TEXT_ITEM
)
SetDialogItemText
(
h
,
string
.
joinfields
(
list
,
'
\
r
'
))
## d.SetDialogDefaultItem(OK_ITEM)
d
.
SetDialogCancelItem
(
CANCEL_ITEM
)
while
1
:
n
=
ModalDialog
(
None
)
if
n
==
OK_ITEM
:
break
if
n
==
CANCEL_ITEM
:
return
None
if
n
==
REVERT_ITEM
:
return
[],
pythondir
##
if n == REVERT_ITEM:
##
return [], pythondir
if
n
==
DIR_ITEM
:
fss
,
ok
=
macfs
.
GetDirectory
(
'Select python home folder:'
)
if
ok
:
...
...
@@ -91,42 +102,62 @@ def interact(list, pythondir):
rv
.
append
(
i
)
return
rv
,
pythondir
def
main
():
def
getprefpath
(
id
):
# Load the path and directory resources
try
:
h
=
OpenResFile
(
'EditPythonPrefs.rsrc'
)
except
Res
.
Error
:
pass
# Assume we already have acces to our own resource
sr
=
GetResource
(
'STR#'
,
id
)
except
(
MacOS
.
Error
,
Res
.
Error
):
return
None
,
None
d
=
sr
.
data
l
=
restolist
(
d
)
return
l
,
sr
def
getprefdir
(
id
):
try
:
dr
=
GetResource
(
'alis'
,
id
)
fss
,
fss_changed
=
macfs
.
RawAlias
(
dr
.
data
).
Resolve
()
except
(
MacOS
.
Error
,
Res
.
Error
):
return
None
,
None
,
1
return
fss
,
dr
,
fss_changed
def
openpreffile
(
rw
):
# Find the preferences folder and our prefs file, create if needed.
vrefnum
,
dirid
=
macfs
.
FindFolder
(
kOnSystemDisk
,
'pref'
,
0
)
preff_fss
=
macfs
.
FSSpec
((
vrefnum
,
dirid
,
'Python Preferences'
))
try
:
preff_handle
=
FSpOpenResFile
(
preff_fss
,
WRITE
)
preff_handle
=
FSpOpenResFile
(
preff_fss
,
rw
)
except
Res
.
Error
:
# Create it
message
(
'No preferences file, creating one...'
)
FSpCreateResFile
(
preff_fss
,
'Pyth'
,
'pref'
,
smAllScripts
)
preff_handle
=
FSpOpenResFile
(
preff_fss
,
WRITE
)
# Load the path and directory resources
preff_handle
=
FSpOpenResFile
(
preff_fss
,
rw
)
return
preff_handle
def
openapplet
(
name
):
fss
=
macfs
.
FSSpec
(
name
)
try
:
sr
=
GetResource
(
'STR#'
,
PATH_STRINGS_ID
)
except
(
MacOS
.
Error
,
Res
.
Error
)
:
message
(
'
Cannot find any sys.path resource! (Old python?)
'
)
app_handle
=
FSpOpenResFile
(
fss
,
WRITE
)
except
Res
.
Error
:
message
(
'
File does not have a resource fork.
'
)
sys
.
exit
(
0
)
d
=
sr
.
data
l
=
restolist
(
d
)
return
app_handle
try
:
dr
=
GetResource
(
'alis'
,
DIRECTORY_ID
)
fss
,
fss_changed
=
macfs
.
RawAlias
(
dr
.
data
).
Resolve
()
except
(
MacOS
.
Error
,
Res
.
Error
):
dr
=
None
def
edit_preferences
():
preff_handle
=
openpreffile
(
WRITE
)
l
,
sr
=
getprefpath
(
PATH_STRINGS_ID
)
if
l
==
None
:
message
(
'Cannot find any sys.path resource! (Old python?)'
)
sys
.
exit
(
0
)
fss
,
dr
,
fss_changed
=
getprefdir
(
DIRECTORY_ID
)
if
fss
==
None
:
fss
=
macfs
.
FSSpec
(
os
.
getcwd
())
fss_changed
=
1
# Let the user play away
result
=
interact
(
l
,
fss
)
result
=
interact
(
l
,
fss
,
'System-wide preferences'
)
# See what we have to update, and how
if
result
==
None
:
...
...
@@ -158,6 +189,82 @@ def main():
sr
.
AddResource
(
'STR#'
,
PATH_STRINGS_ID
,
''
)
CloseResFile
(
preff_handle
)
def
edit_applet
(
name
):
pref_handle
=
openpreffile
(
READ
)
app_handle
=
openapplet
(
name
)
notfound
=
''
l
,
sr
=
getprefpath
(
OVERRIDE_PATH_STRINGS_ID
)
if
l
==
None
:
notfound
=
'path'
l
,
dummy
=
getprefpath
(
PATH_STRINGS_ID
)
if
l
==
None
:
message
(
'Cannot find any sys.path resource! (Old python?)'
)
sys
.
exit
(
0
)
fss
,
dr
,
fss_changed
=
getprefdir
(
OVERRIDE_DIRECTORY_ID
)
if
fss
==
None
:
if
notfound
:
notfound
=
notfound
+
' and '
+
'directory'
else
:
notfound
=
'directory'
fss
,
dummy
,
dummy2
=
getprefdir
(
DIRECTORY_ID
)
if
fss
==
None
:
fss
=
macfs
.
FSSpec
(
os
.
getcwd
())
fss_changed
=
1
dummy
=
dummy2
=
None
# Discard them.
if
notfound
:
message
(
'Warning: initial %s taken from system-wide defaults'
%
notfound
)
# Let the user play away
result
=
interact
(
l
,
fss
,
name
)
# See what we have to update, and how
if
result
==
None
:
sys
.
exit
(
0
)
pathlist
,
nfss
=
result
if
nfss
!=
fss
:
fss_changed
=
1
if
fss_changed
or
pathlist
!=
l
:
if
fss_changed
:
alias
=
nfss
.
NewAlias
()
if
dr
:
dr
.
data
=
alias
.
data
dr
.
ChangedResource
()
else
:
dr
=
Resource
(
alias
.
data
)
dr
.
AddResource
(
'alis'
,
OVERRIDE_DIRECTORY_ID
,
''
)
if
pathlist
!=
l
:
if
pathlist
==
[]:
if
sr
.
HomeResFile
()
==
app_handle
:
sr
.
RemoveResource
()
elif
sr
and
sr
.
HomeResFile
()
==
app_handle
:
sr
.
data
=
listtores
(
pathlist
)
sr
.
ChangedResource
()
else
:
sr
=
Resource
(
listtores
(
pathlist
))
sr
.
AddResource
(
'STR#'
,
OVERRIDE_PATH_STRINGS_ID
,
''
)
CloseResFile
(
app_handle
)
def
main
():
try
:
h
=
OpenResFile
(
'EditPythonPrefs.rsrc'
)
except
Res
.
Error
:
pass
# Assume we already have acces to our own resource
if
len
(
sys
.
argv
)
<=
1
:
edit_preferences
()
else
:
for
appl
in
sys
.
argv
[
1
:]:
edit_applet
(
appl
)
if
__name__
==
'__main__'
:
print
# Stupid, to init toolboxes...
...
...
Mac/scripts/EditPythonPrefs.rsrc.hqx
View file @
db0baced
(This file must be converted with BinHex 4.0)
:&%9NDA43HA4SEfj3FQ9QFbjbFh*M!(*cFQ058d9%!3#3"`a
'KE-!N!3"!!!!#bN
!!!S
T!!!"(
6B8)&3JD!!8)&"p%E"S%3!k!@FQ%Lm-6VS#$!`k!&Tj&%9NDA43HA4
SEfj3FQ9QFbjbFh*MF`)!!!
!rN!B!!$q3#!#3'+eNVN-!N!B-4[m4`+KT!4e!%Ir
c%h!!%#lrmlh5%@B386Dq9@X"!8*%[D'q9@X"!6"4-J&R(N39$!!!('85F!!3,N-
9$!!!(f)'F!&J!!%"!LaD9#dZ4,d"!"Xm!@B`*e8q'NU!)&-#+!#r!#iL!1d*!J%
!3)-Sfc36UGF[$%kk!3P+CfX"!+CA3cS!!!%!!!%!!!!#J!!!"%!!!!JJ!!!3%!
!
!
)BJ!!%'%!!#$`J!"!m%!!JIiJ!3(K%!)"!)J%!MK%#!6))K!(L"mJ!2J1N!-!$N
J%`!k%"$J2!J-(MJ%!!(i!J`!1!%5!%!!N[L!!%`"!!!J!J!!%!3!!!J)!!!%%!!
!!
L!!!!&!!!!!J!!!!3!!!!1!!!!(`!!!$q!!!"r`!!!rq!!!Ir`!!2rq!!(rr`!
$rrq!"rrr`!rrrq!Irrr`2rrrq(rrrrcrrrrqIrrrrcrrrriIrrrm$rrrq!IrrrJ
$rrri!Irr`!$rri!!Irm!!$rq!!!Ir!!!$rJ!!!I`!!!$i!!!!F!!!!#!!*!%#P$
J!"k%J!!(S5!!!!!(39"36!#3"Ka3HA3`!!!!!8C548B!N!@!5801)`#3"!%X!!!
!3!%!!S!%3!YJ%j!!)JK&*),M33-J`a-r#`X%%!)J!8!!J!%!!i!(`!rJ(r!rq(r
mrrprrcrr(rm2q`I`!q!"`!#!!!!%!*!3r`#3([m!r`#3(2m!!!$r!*!Dr`!!pI8
!r`#3'2m!!2@3"!$r!*!@r`!!pI@`X2Ae!2m!N"6r!!$epI@`X2Aep3$r!*!5r`!
!
pIAeX*!%pIAe!2m!N"$r!!$eN!5`N!6eN!3!r`#3$[m!!2@3",#3"2q3"2Ae!2m
!N!cr!!$eN!@`rrrr#*!%rrAe!2m!N!Vr!!$eN!Er-`L3"rrep3$r!*!)r`!!pC!
'r`J)-rrrr`L3"2rep3$r!*!'r`!!pC!'r`Jcrrrhprm)N!ArpI8!r`#3"2m!!2@
3"rq3"2IepImc#*!&rj!&!!$r!!$eN![rN!8"#*!&-rrrrrIr!!$rpr@3#Irr-`L
3#M2rrrrhprm!!2rhpC!(r`Ahrrmc-c-)N!Bcrrrrprm!N!6rpr@3"[m&"IIhrrr
r-j!%#!Jcrj!%!*!'rrIeN!ErrrAeprIhrj!%-c-crrrr!*!)rrIeN!chN!6rN!B
!N!Rrpr@3"2rrpC!)pj!%rrrr!*!+rrIepIrepIreN!Mhprm!N!lrprArpIArpIq
3"IAhprm!N"$rprArrr@3"rIhr`#3%[rhpC!)prIr!*!8rrIeN!Ehprm!N"Erpr@
3
"2Ihr`#3'2rhpIAhprm!N"VrprIhr`#3(2rhr`#3([m!N"%"!*!)r`#3$[rer`#
3$2repIAr!*!+rr@`X2Arr`#3#2repE$rr`J)r`#3"[repIAr#*!&r`#3"2repIA
r#2m)#2m)#2m!!2reN!Arprrrr`J)-rrr!2reN!Er-c-)-c2rr`!!rr@3"Irr-j!
%rrm!!!$rpIArrrAerj!'!*!%rrArrrAepIIr!2rr!*!&rr@3"2Ir!*!+rrAeprm
!
N!crprm!N!lr!*!+J!!!!!m!N!I`m!#3"3m!$`#3"I"9$r!!!!!2!&r`$`!!!2
!
!
m!!!m!!2!!r2!2!2!2!!!2crm!hr$`!!!2h3hIm!m!!!rphGr`!2!2m!rrrr!!$
`r`!-m2m!!!m!!-m!N!A`$2!!N!82c`#3"r!!N!8#!*!)$`#3$r$`!*!0$`!2!*!
0m!!!m!#3#`m!!!!2!*!,m!!&8!$`!*!*$`!!"9!!$`#3#I!!!&99!!$`!*!($`!
!!&99!!!2!*!(m!!!"99Irr!!m!#3"3m!!!!&rr!!$`!2!*!&m!!!!!r3!!!!m!$
`!!!!$`#3"2c0rr!!$`!2!!!!m!!!!!r0rmc`!!$`!2!!$`#3"!rrr!$`!!!2rrm
!
m!#3"[rrm!!!$Irmm!r!!*!%rp!!N!30rrc2!2`!!!!2(2rGd!!!$Irmm!!2`
!!
!
$a(-rrhGd!hrr`!!!2`!!!$r!-c2rrhGrr!!!!!2`!#3"3c-crrrm!#3"2`!!2m
!
N!6-c2r`!*!%$m!2!2!!!!!-c`#3"r`2!2$rrr$-m!#3"`r!r`!!!!c2!*!*r!#
3"-c`!*!*$m!!!!c2!*!,r!!!c2!!N!X2`!c2!*!0r-c`!*!0$mm!N!r`!*!+&3!
L!'J"@J'I!!%"!!%!N!8#!*!&pJ!&!*!&-J!8!0-"*K!*4@4TG#"8CAKdK`#3"!%
B!2!",!%X"!*25`#3"!%B!"3",!"1"!C$B@jMC@`!N!AF!"3!m!%U""e5C@e[GQ8
JFhPc,R"KG'JJF(*PCL"KEQ3JCAKTG!#3"[S!&!%-!5X%(e0PE'9MG#!N+&"C9%K
26LNJD'pYC5"QEfaNCA)Z,LjQ!*!&#J!8!#i"*SK24@jdCA)JFhPc,R"KG'JJBf
p
YF'pZC@jdFb`JEfjP)("PFL"XD@jP$5K9Ff8J*#K3@94)6diT)'C[FL"`HA4SEfi
JD'pYC5"QEfaNCA)T1J#3"!%!!!!"!!!!#bN!!!ST!!!"(3("fQ`6eJ!!!"`"$J!
,3Nj%6!!!!'**3diM!!!!EP0*@N8!!!"k4P*&4J!!!)CTBh-M!!!!NQPME$J!!!#
HD@0c1!!!!+TTBh-d!!!!YQPME$3!!!$#4%a24`!!!-j%594-!!!!fP"jG$!!!!$
Q!)$rr`!!!4d"`Hj8!5crr`#3"!("lcMrN!3!!!%%!*!&J2rr!!!"%J("ld!",2r
r!!!"23("lkJ",2rr!!!"J3("lk`",2rr!!!&K3("m$`",2rr!!!'L3("lk3",2r
r
!!!($3("ll!#!2rr!!!*%3#3"!)!rrm!!!NU!*!+#L3"`Hrd$NphEQ9b)(*PFfp
eFQ0P50X
:
:&%9NDA43HA4SEfj3FQ9QFbjbFh*M!(*cFQ058d9%!3#3"`a
4jf8!N!3"!!!!#bJ
!!!S
S!!!"+
6B8)&3JD!!8)&"p%E"S%3!k!@FQ%Lm-6VS#$!`k!&Tj&%9NDA43HA4
SEfj3FQ9QFbjbFh*MF`)!!!
"bFh*M8P-!!(*cFQ058d9%!3!!!!%!N"1YC+j$!*!
'$&(r%F#SD3%G3"(rma0`!"!Zrr1pdK&Q%&%f[P9V!3,fK[P9V!3%`86)"Caj
%&3`!!"aP%R!!%#j$&3`!!"pL"R!"B!!"!3)X@P3Y,N5p!3!E2!&Q-#G92KT+J#"
6!LJ![`!Z)J$Y#3)"!%#$+0Xd%kRA,`a1ZJ%*5QGV!3#Q9d-k!!!"!!!"!!!!!S
!
!
!!4!!!!))!!!%"!!!#')!!""K!!!Jm)!!32"!!)(q)!%"i4!#!3#)"!)i4!J%b#
)3"iJI)!$i$T!$!!j)"-!1K!3i$`)$"ii"!!"q!)-!$J"%J"!!*,iJ!"-!3!!)!)
!!
"!%!!!)#!!!""!!!!)J!!!"3!!!!)!!!!%!!!!$J!!!"m!!!!rJ!!!Im!!!2rJ
!!(rm!!$rrJ!"rrm!!rrrJ!Irrm!2rrrJ(rrrm$rrrrKrrrrmrrrrrRrrrrmrrrr
q(rrrr!rrrrJ(rrri!rrrq!(rrm!!rrq!!(rr!!!rrJ!!(r`!!!ri!!!(m!!!!q!
!!!(!!!!!J!#3"!T3i!!HK)!!"k%J!!!!"d&38%`!N!C!!3!#J!4!#f!6N!!L#%8
NJZ0"!b$$%cm,#`33!L!"3!#!!3!$J!I!$q!Im$riIrcrrhrr2rmIr`rl"r!$i!(
!!)!!!!3!N"$r!*!Hr`$r!*!Fr`!!!2m!N"Vr!!$ep3$r!*!Br`!!pC!%!2m!N"E
r!!$epE#`pI8!r`#3&2m!!2AepE#`pIAe!2m!N",r!!$epI@`N!6epI8!r`#3%2m
!
!2@3",#3"2@3"!$r!*!1r`!!pC!%X*!%rj!%pI8!r`#3$2m!!2@3"E$rrrm)N!6
rpI8!r`#3#[m!!2@3"[mc#*!(rrAe!2m!N!Mr!!$eN!Er#!Jcrrrr#*!%rrAe!2m
!N!Er!!$eN!Er#$2rrrIhr`L3"Irep3$r!*!%r`!!pC!(rj!%prAerc-)N!ArN!8
!!2m!!2@3#rq3"3%)N!8crrrrprm!!2rhpC!*rrmc#*!+-rrrrrIhr`!!rrIeN!I
r"IIrrc-c-`L3"M2rrrrhr`#3"2rhpC!'r`8&prIrrrmcN!3)#$2rN!3!N!Erpr@
3"[rrpIAhprIrN!3c-c2rrrm!N!Mrpr@3$2H3"2q3"J#3#IrhpC!%rrreN!MhN!6
rrrm!N!VrprAerrAerr@3#2Ihr`#3$[rhpIrepIrerj!&pIIhr`#3%2rhpIrrpC!
(prIr!*!5rrIeN!Mhprm!N"6rpr@3"[Ihr`#3&[rhpC!%prIr!*!BrrIepIIhr`#
3
'[rhprIr!*!FrrIr!*!Hr`#3%3%!N!Mr!*!1rrAr!*!-rrAepIm!N!VrpE#`pIr
r!*!)rrAeX2rr#!Mr!*!'rrAepIm)N!Ar!*!%rrAepIm)r`J)r`J)r`!!rr@3"Ir
hrrrr#!Jcrrm!rr@3"[mc-`Jc-rrr!!$rpC!&rrmcN!6rr`!!!2repIrrpIArN!B
!N!6rpIrrpIAeprm!rrm!N!ArpC!%prm!N!VrpIAhr`#3$2rhr`#3$[m!N!U!!!!
!
$`#3"r$`!*!&$`!2!*!&m&82m!!!!!m!Ar!2!!!!m!$`!!$`!!m!$mm!m!m!m!
!
!
r2r`$Im2!!!!rG$Gr`$`!!$rhGhr!!m!r`$rrrm!!2$r!!c`r`!!$`!!c`#3"I!
-m!#3"3r2!*!(m!#3"3)!N!J2!*!2m2!!N!d2!!m!N!h`!!$`!*!,$`!!!!m!N![
`!!93!2!!N!N2!!!&8!!2!*!*m!!!998!!2!!N!F2!!!!998!!!m!N!I`!!!&99r
rm!$`!*!&$`!!!!Arm!!2!!m!N!A`!!!!$p!!!!$`!2!!!!!2!*!%r-hrm!!2!!m
!!!$`!!!!$mhrc2!!!2!!m!!2!*!%$rrm!2!!!!rrr`$`!*!'rrr`!!!0rrc`$m!
!
N!6rd!#3"!hrr-m!r!!!!!mFrph3!!!0rrc`!!r!!!!2%FcrrGh3$Irr!!!!r
!!
!
!2m!c-rrrGhrm!!!!!r!!*!&$-c2rrr`!*!%r!!!r`#3"-c-rr!!N!32`!m!m!!
!
!!c2!*!(r!m!m2rrm-c`!*!($m$r!!!!$-m!N!Rm!*!%c2!!N!N2`!!!$-m!N![
m!!$-m!#3#`r!$-m!N!hmc2!!N!d2c`#3$r!!N!S9!#)!D!&D!Cm!!3%!!3#3"3)
!N!AL!!8!N!95!"8!m`%R%!P&C'Pd)&4PH(5(!*!%!4J!m!%X!5`%!Np,!*!%!4J
!&!%X!%i%"N0KEQ0PE!#3"IS!&!%-!5X%(e0PE'9MG#!N+&"C9%K26LNJD'pYC5"
QEfaNCA)Z,LjQ!*!&$3!A!"i"*JJ*4@4TG#"8CAKd,J#3"5S!&3"1!5H)6d9ZG'9
b)(0jFbj`BA4S)'0[EA"[EQ9ZG(-X)'pZC5"`CA)JE'PZC3dS9A0P)#3S8&P85%
p
1+5"QEh)JF(PdD'pZ)'K[E@8JCQpXC'9b+6S!N!3"!*!%"bU3"!!"!*!%*&"jG$!
!!!!"4P*&4J!"!!!!J!!"!)&*3diM!!%!!!%X!!%!N!3"!!!!#bJ!!!SS!!!"+3'
3!-'8'$i!!!!F!4S!#d*14%`!!!"L5801)`!!!'j659T&!!!!HNC548B!!3#'D@0
c)`!!!*jTBf`i!!!!UQPMFcJ!!!#fD@0c0!!!!-*TBf`d!!!!cN4-6dF!!!$D4%P
86!!!!1C3HA3`!!!!mJ#!rrm!!!S!N!8",2rr!*!)rj!%!!!""!#3"B$rr`!!!4)
!N!@"rrm!!!Re!*!%!5crr`!!!4d!N!3",2rr!!!"B3#3"!%Xrrm!!!9P!*!%!5c
r
r`!!"QN!N!3",2rr!!!'l3#3"!)!rrm!!!Ma!*!%!J$rr`!!#3S"N!#q&!#3"JR
`!*!%$NphEQ9b)(*PFfpeFQ0PDV%
:
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment