From 35c91c2ccd45fd98540fc439d43a4befe2808b8b Mon Sep 17 00:00:00 2001 From: swamyv Date: Tue, 29 Jul 2008 13:54:27 -0700 Subject: [PATCH] 6710791: Remove files or build from source:maf-1_0.jar, jlfg-1_0.jar Summary: Removed maf-1_0.jar and jlfg-1_0.jar files. Reviewed-by: poonam, jjh --- agent/make/Makefile | 61 +-- agent/make/bugspot.bat | 2 +- agent/make/build.xml | 18 +- agent/make/hsdb.bat | 2 +- agent/make/hsdb.sh | 2 +- agent/make/saenv.bat | 2 +- agent/make/saenv.sh | 2 +- agent/make/saenv64.bat | 2 +- agent/make/saenv64.sh | 2 +- .../sun/java/swing/action/AboutAction.java | 57 +++ .../sun/java/swing/action/ActionManager.java | 95 +++++ .../java/swing/action/ActionUtilities.java | 49 +++ .../java/swing/action/AlignCenterAction.java | 60 +++ .../java/swing/action/AlignLeftAction.java | 60 +++ .../java/swing/action/AlignRightAction.java | 60 +++ .../sun/java/swing/action/ApplyAction.java | 60 +++ .../com/sun/java/swing/action/BackAction.java | 60 +++ .../sun/java/swing/action/CancelAction.java | 60 +++ .../sun/java/swing/action/DelegateAction.java | 65 +++ .../com/sun/java/swing/action/ExitAction.java | 55 +++ .../com/sun/java/swing/action/FileMenu.java | 53 +++ .../sun/java/swing/action/FinishAction.java | 60 +++ .../com/sun/java/swing/action/HelpAction.java | 60 +++ .../com/sun/java/swing/action/HelpMenu.java | 53 +++ .../com/sun/java/swing/action/NewAction.java | 60 +++ .../com/sun/java/swing/action/NextAction.java | 60 +++ .../com/sun/java/swing/action/OkAction.java | 60 +++ .../com/sun/java/swing/action/OpenAction.java | 60 +++ .../com/sun/java/swing/action/SaveAction.java | 60 +++ .../sun/java/swing/action/SaveAsAction.java | 57 +++ .../java/swing/action/StateChangeAction.java | 88 ++++ .../com/sun/java/swing/action/ViewMenu.java | 53 +++ .../com/sun/java/swing/ui/CommonMenuBar.java | 108 +++++ .../com/sun/java/swing/ui/CommonToolBar.java | 95 +++++ .../com/sun/java/swing/ui/CommonUI.java | 392 ++++++++++++++++++ .../java/swing/ui/OkCancelButtonPanel.java | 51 +++ .../com/sun/java/swing/ui/OkCancelDialog.java | 82 ++++ .../com/sun/java/swing/ui/SplashScreen.java | 85 ++++ .../com/sun/java/swing/ui/StatusBar.java | 178 ++++++++ .../com/sun/java/swing/ui/TabsDlg.java | 221 ++++++++++ .../ToggleActionPropertyChangeListener.java | 52 +++ .../com/sun/java/swing/ui/WizardDlg.java | 336 +++++++++++++++ .../development/Server16.gif | Bin 0 -> 636 bytes .../development/Server24.gif | Bin 0 -> 775 bytes .../toolbarButtonGraphics/general/About16.gif | Bin 0 -> 644 bytes .../toolbarButtonGraphics/general/About24.gif | Bin 0 -> 797 bytes .../general/Delete16.gif | Bin 0 -> 208 bytes .../general/Delete24.gif | Bin 0 -> 249 bytes .../toolbarButtonGraphics/general/Find16.gif | Bin 0 -> 434 bytes .../toolbarButtonGraphics/general/Help16.gif | Bin 0 -> 661 bytes .../toolbarButtonGraphics/general/Help24.gif | Bin 0 -> 1328 bytes .../general/History16.gif | Bin 0 -> 677 bytes .../general/History24.gif | Bin 0 -> 1304 bytes .../general/Information16.gif | Bin 0 -> 661 bytes .../general/Information24.gif | Bin 0 -> 1328 bytes .../toolbarButtonGraphics/general/New16.gif | Bin 0 -> 426 bytes .../toolbarButtonGraphics/general/New24.gif | Bin 0 -> 778 bytes .../toolbarButtonGraphics/general/Open16.gif | Bin 0 -> 228 bytes .../toolbarButtonGraphics/general/Open24.gif | Bin 0 -> 462 bytes .../toolbarButtonGraphics/general/Save16.gif | Bin 0 -> 206 bytes .../toolbarButtonGraphics/general/Save24.gif | Bin 0 -> 266 bytes .../general/SaveAs16.gif | Bin 0 -> 255 bytes .../general/SaveAs24.gif | Bin 0 -> 348 bytes .../toolbarButtonGraphics/general/Zoom16.gif | Bin 0 -> 303 bytes .../general/ZoomIn16.gif | Bin 0 -> 304 bytes .../general/ZoomIn24.gif | Bin 0 -> 484 bytes .../navigation/Down16.gif | Bin 0 -> 185 bytes .../toolbarButtonGraphics/navigation/Up16.gif | Bin 0 -> 184 bytes .../text/AlignCenter16.gif | Bin 0 -> 163 bytes .../text/AlignCenter24.gif | Bin 0 -> 179 bytes .../text/AlignLeft16.gif | Bin 0 -> 165 bytes .../text/AlignLeft24.gif | Bin 0 -> 178 bytes .../text/AlignRight16.gif | Bin 0 -> 165 bytes .../text/AlignRight24.gif | Bin 0 -> 178 bytes agent/src/share/lib/jlfgr-1_0.jar | Bin 126642 -> 0 bytes agent/src/share/lib/maf-1_0.jar | Bin 59918 -> 0 bytes 76 files changed, 3058 insertions(+), 40 deletions(-) create mode 100644 agent/src/share/classes/com/sun/java/swing/action/AboutAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/ActionManager.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/ActionUtilities.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/AlignCenterAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/AlignLeftAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/AlignRightAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/ApplyAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/BackAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/CancelAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/DelegateAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/ExitAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/FileMenu.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/FinishAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/HelpAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/HelpMenu.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/NewAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/NextAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/OkAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/OpenAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/SaveAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/SaveAsAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/StateChangeAction.java create mode 100644 agent/src/share/classes/com/sun/java/swing/action/ViewMenu.java create mode 100644 agent/src/share/classes/com/sun/java/swing/ui/CommonMenuBar.java create mode 100644 agent/src/share/classes/com/sun/java/swing/ui/CommonToolBar.java create mode 100644 agent/src/share/classes/com/sun/java/swing/ui/CommonUI.java create mode 100644 agent/src/share/classes/com/sun/java/swing/ui/OkCancelButtonPanel.java create mode 100644 agent/src/share/classes/com/sun/java/swing/ui/OkCancelDialog.java create mode 100644 agent/src/share/classes/com/sun/java/swing/ui/SplashScreen.java create mode 100644 agent/src/share/classes/com/sun/java/swing/ui/StatusBar.java create mode 100644 agent/src/share/classes/com/sun/java/swing/ui/TabsDlg.java create mode 100644 agent/src/share/classes/com/sun/java/swing/ui/ToggleActionPropertyChangeListener.java create mode 100644 agent/src/share/classes/com/sun/java/swing/ui/WizardDlg.java create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/development/Server16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/development/Server24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/About16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/About24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Delete16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Delete24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Find16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Help16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Help24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/History16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/History24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Information16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Information24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/New16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/New24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Open16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Open24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Save16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Save24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/SaveAs16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/SaveAs24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/Zoom16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/ZoomIn16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/general/ZoomIn24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/navigation/Down16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/navigation/Up16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/text/AlignCenter16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/text/AlignCenter24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/text/AlignLeft16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/text/AlignLeft24.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/text/AlignRight16.gif create mode 100644 agent/src/share/classes/images/toolbarButtonGraphics/text/AlignRight24.gif delete mode 100644 agent/src/share/lib/jlfgr-1_0.jar delete mode 100644 agent/src/share/lib/maf-1_0.jar diff --git a/agent/make/Makefile b/agent/make/Makefile index ae10cb3cb..bdde49eec 100644 --- a/agent/make/Makefile +++ b/agent/make/Makefile @@ -32,6 +32,12 @@ else include $(GAMMADIR)/make/defs.make endif +ifeq "x$(HOTSPOT_BUILD_VERSION)" "x" +SA_BUILD_VERSION=$(HOTSPOT_RELEASE_VERSION) +else +SA_BUILD_VERSION=$(HOTSPOT_RELEASE_VERSION)-$(HOTSPOT_BUILD_VERSION) +endif + PKGLIST = \ sun.jvm.hotspot \ sun.jvm.hotspot.asm \ @@ -117,7 +123,9 @@ sun.jvm.hotspot.ui.tree \ sun.jvm.hotspot.ui.treetable \ sun.jvm.hotspot.utilities \ sun.jvm.hotspot.utilities.memo \ -sun.jvm.hotspot.utilities.soql +sun.jvm.hotspot.utilities.soql \ +com.sun.java.swing.action \ +com.sun.java.swing.ui #END PKGLIST # Generated using the build-filelist script @@ -198,7 +206,9 @@ sun/jvm/hotspot/ui/tree/*.java \ sun/jvm/hotspot/ui/treetable/*.java \ sun/jvm/hotspot/utilities/*.java \ sun/jvm/hotspot/utilities/memo/*.java \ -sun/jvm/hotspot/utilities/soql/*.java +sun/jvm/hotspot/utilities/soql/*.java \ +com/sun/java/swing/action/*.java \ +com/sun/java/swing/ui/*.java #END FILELIST ifneq "x$(ALT_BOOTDIR)" "x" @@ -220,8 +230,6 @@ else endif SRC_DIR = ../src/share/classes -LIB_DIR = ../src/share/lib -CLOSED_LIB_DIR = ../closed/src/share/lib BUILD_DIR = ../build OUTPUT_DIR = $(BUILD_DIR)/classes DOC_DIR = $(BUILD_DIR)/doc @@ -231,9 +239,9 @@ DOC_DIR = $(BUILD_DIR)/doc ALLFILES := $(patsubst %,$(SRC_DIR)/%,$(FILELIST)) ALLFILES := $(shell /bin/ls $(ALLFILES)) +# tools.jar is used by the sa-jdi binding +CLASSPATH = $(JDK_HOME)/lib/tools.jar -# tools.jar is needed by the JDI - SA binding -CLASSPATH = $(LIB_DIR)/maf-1_0.jar$(CPS)$(JDK_HOME)/lib/tools.jar CLASSPATH := $(subst \,/,$(CLASSPATH)) # FIXME: autogenerate call to rmic @@ -241,24 +249,36 @@ CLASSPATH := $(subst \,/,$(CLASSPATH)) SA_BUILD_VERSION_PROP = "sun.jvm.hotspot.runtime.VM.saBuildVersion=$(SA_BUILD_VERSION)" SA_PROPERTIES = $(OUTPUT_DIR)/sa.properties +JAVAC = $(JDK_HOME)/bin/javac +JAVADOC = $(JDK_HOME)/bin/javadoc +RMIC = $(JDK_HOME)/bin/rmic # Tagging it on because there's no reason not to run it all: filelist @mkdir -p $(OUTPUT_DIR) @echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES) - @${JDK_HOME}/bin/javac -source 1.4 -classpath $(CLASSPATH) -deprecation -sourcepath $(SRC_DIR) -g -d $(OUTPUT_DIR) @filelist - @${JDK_HOME}/bin/rmic -classpath $(OUTPUT_DIR) -d $(OUTPUT_DIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer + $(JAVAC) -source 1.4 -classpath $(CLASSPATH) -deprecation -sourcepath $(SRC_DIR) -g -d $(OUTPUT_DIR) @filelist + $(RMIC) -classpath $(OUTPUT_DIR) -d $(OUTPUT_DIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql/sa.js cp $(SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql + mkdir -p $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources + rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/* + cp $(SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/ + cp -r $(SRC_DIR)/images/* $(OUTPUT_DIR)/ allprof: filelist @mkdir -p $(OUTPUT_DIR) @echo "$(SA_BUILD_VERSION_PROP)" > $(SA_PROPERTIES) - @${JDK_HOME}/bin/javac -source 1.4 -J-Xprof -classpath $(CLASSPATH) -deprecation -sourcepath $(SRC_DIR) -g -d $(OUTPUT_DIR) @filelist - @${JDK_HOME}/bin/rmic -classpath $(OUTPUT_DIR) -d $(OUTPUT_DIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer + $(JAVAC) -source 1.4 -J-Xprof -classpath $(CLASSPATH) -deprecation -sourcepath $(SRC_DIR) -g -d $(OUTPUT_DIR) @filelist + $(RMIC) -classpath $(OUTPUT_DIR) -d $(OUTPUT_DIR) sun.jvm.hotspot.debugger.remote.RemoteDebuggerServer rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql/sa.js cp $(SRC_DIR)/sun/jvm/hotspot/utilities/soql/sa.js $(OUTPUT_DIR)/sun/jvm/hotspot/utilities/soql + mkdir -p $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources + rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/* + cp $(SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/ + cp -r $(SRC_DIR)/images/* $(OUTPUT_DIR)/ +.PHONY: filelist filelist: $(ALLFILES) @if [ ! -f $(JDK_HOME)/lib/tools.jar ] ; then \ echo "Missing $(JDK_HOME)/lib/tools.jar file. Use 1.6.0 or later version jdk to build SA."; \ @@ -274,36 +294,23 @@ natives: .PHONY: sa-jdi.jar sa-jdi.jar: - if [ ! -f $(JDK_HOME)/lib/tools.jar ] ; then \ - echo "Missing $(JDK_HOME)/lib/tools.jar file. Use 1.6.0 or later version jdk to build SA.";\ - exit 1; \ - fi - rm -f $(BUILD_DIR)/sa-jdi.jar - rm -f $(OUTPUT_DIR)/jdi_class_files - javac -source 1.4 ClosureFinder.java -d $(OUTPUT_DIR) - cd $(OUTPUT_DIR) ; find sun/jvm/hotspot/jdi -name "*.class" > jdi_class_files - cd $(OUTPUT_DIR) ; jar cvf ../sa-jdi.jar `java ClosureFinder jdi_class_files .` - cd $(BUILD_DIR) ; jar uvf sa-jdi.jar -C $(SRC_DIR) META-INF/services/com.sun.jdi.connect.Connector - cd $(BUILD_DIR) ; jar uvf sa-jdi.jar -C $(OUTPUT_DIR) sa.properties - rm -f $(OUTPUT_DIR)/ClosureFinder.class - rm -f $(OUTPUT_DIR)/jdi_class_files + echo "sa-jdi.jar is built by a hotspot build." docs: - @javadoc -private -classpath $(CLASSPATH) -sourcepath $(SRC_DIR) -d $(DOC_DIR) $(PKGLIST) + @$(JAVADOC) -private -classpath $(CLASSPATH) -sourcepath $(SRC_DIR) -d $(DOC_DIR) $(PKGLIST) sizes: $(ALLFILES) wc -l $(ALLFILES) cscope: $(ALLFILES) + rm -f java.files echo $(ALLFILES) > java.files cscope -b -i java.files -f java.out + rm -f java.files .PHONY: sa.jar sa.jar: rm -f $(BUILD_DIR)/sa.jar - mkdir -p $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources - rm -f $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/* - cp $(SRC_DIR)/sun/jvm/hotspot/ui/resources/*.png $(OUTPUT_DIR)/sun/jvm/hotspot/ui/resources/ cd $(OUTPUT_DIR) ; jar cvf ../sa.jar * clean:: diff --git a/agent/make/bugspot.bat b/agent/make/bugspot.bat index da0880c4d..c3330f05b 100644 --- a/agent/make/bugspot.bat +++ b/agent/make/bugspot.bat @@ -22,4 +22,4 @@ REM have any questions. REM REM -java -showversion -cp ..\build\classes;..\src\share\lib\maf-1_0.jar;..\src\share\lib\jlfgr-1_0.jar;..\src\share\lib\js.jar;sa.jar;lib\maf-1_0.jar;lib\jlfgr-1_0.jar;lib\js.jar sun.jvm.hotspot.bugspot.Main +java -showversion -cp ..\build\classes;..\src\share\lib\js.jar;.\sa.jar;lib\js.jar sun.jvm.hotspot.bugspot.Main diff --git a/agent/make/build.xml b/agent/make/build.xml index ebd5d39b7..caad5c769 100644 --- a/agent/make/build.xml +++ b/agent/make/build.xml @@ -42,7 +42,6 @@ - - - - - - + + + + + + + + + + + + diff --git a/agent/make/hsdb.bat b/agent/make/hsdb.bat index 6b12916d9..9d435179b 100644 --- a/agent/make/hsdb.bat +++ b/agent/make/hsdb.bat @@ -22,4 +22,4 @@ REM have any questions. REM REM -java -showversion -cp ..\build\classes;..\src\share\lib\maf-1_0.jar;..\src\share\lib\jlfgr-1_0.jar;..\src\share\lib\js.jar;sa.jar;lib\maf-1_0.jar;lib\jlfgr-1_0.jar;lib\js.jar sun.jvm.hotspot.HSDB %1 %2 +java -showversion -cp ..\build\classes;..\src\share\lib\js.jar;.\sa.jar;lib\js.jar sun.jvm.hotspot.HSDB %1 %2 diff --git a/agent/make/hsdb.sh b/agent/make/hsdb.sh index 3e5cc2df0..4dd11081f 100644 --- a/agent/make/hsdb.sh +++ b/agent/make/hsdb.sh @@ -29,4 +29,4 @@ if [ "x$SA_JAVA" = "x" ]; then SA_JAVA=java fi -$SA_JAVA -showversion -cp $STARTDIR/../build/classes:$STARTDIR/../src/share/lib/maf-1_0.jar:$STARTDIR/../src/share/lib/jlfgr-1_0.jar:$STARTDIR/../src/share/lib/js.jar:$STARTDIR/sa.jar:$STARTDIR/lib/maf-1_0.jar:$STARTDIR/lib/jlfgr-1_0.jar:$STARTDIR/lib/js.jar sun.jvm.hotspot.HSDB $* +$SA_JAVA -showversion -cp $STARTDIR/../build/classes:$STARTDIR/../src/share/lib/js.jar:$STARTDIR/sa.jar:$STARTDIR/lib/js.jar sun.jvm.hotspot.HSDB $* diff --git a/agent/make/saenv.bat b/agent/make/saenv.bat index b5342027b..0bb3704ae 100644 --- a/agent/make/saenv.bat +++ b/agent/make/saenv.bat @@ -39,7 +39,7 @@ set SA_JAVA=java :sa_java_set -set SA_CLASSPATH=..\build\classes;..\src\share\lib\maf-1_0.jar;..\src\share\lib\jlfgr-1_0.jar;..\src\share\lib\js.jar;sa.jar;lib\maf-1_0.jar;lib\jlfgr-1_0.jar;lib\js.jar +set SA_CLASSPATH=..\build\classes;..\src\share\lib\js.jar;sa.jar;lib\js.jar set SA_LIBPATH=..\src\os\win32\windbg\i386;.\win32\i386 diff --git a/agent/make/saenv.sh b/agent/make/saenv.sh index e5e5c485d..d0b12c5ef 100644 --- a/agent/make/saenv.sh +++ b/agent/make/saenv.sh @@ -58,7 +58,7 @@ if [ "x$SA_DISABLE_VERS_CHK" != "x" ]; then fi -SA_CLASSPATH=$STARTDIR/../build/classes:$STARTDIR/../src/share/lib/maf-1_0.jar:$STARTDIR/../src/share/lib/jlfgr-1_0.jar:$STARTDIR/../src/share/lib/js.jar:$STARTDIR/sa.jar:$STARTDIR/lib/maf-1_0.jar:$STARTDIR/lib/jlfgr-1_0.jar:$STARTDIR/lib/js.jar +SA_CLASSPATH=$STARTDIR/../build/classes:$STARTDIR/../src/share/lib/js.jar:$STARTDIR/sa.jar:$STARTDIR/lib/js.jar OPTIONS="-Djava.system.class.loader=sun.jvm.hotspot.SALauncherLoader ${OPTIONS}" diff --git a/agent/make/saenv64.bat b/agent/make/saenv64.bat index 84e30c31b..305795268 100644 --- a/agent/make/saenv64.bat +++ b/agent/make/saenv64.bat @@ -43,7 +43,7 @@ set SA_JAVA=java :sa_java_set -set SA_CLASSPATH=..\build\classes;..\src\share\lib\maf-1_0.jar;..\src\share\lib\jlfgr-1_0.jar;..\src\share\lib\js.jar;sa.jar;lib\maf-1_0.jar;lib\jlfgr-1_0.jar;lib\js.jar +set SA_CLASSPATH=..\build\classes;..\src\share\lib\js.jar;sa.jar;lib\js.jar REM For now, only AMD-64, IA-64 stack walking is not working anyway set SA_LIBPATH=.\src\os\win32\windbg\amd64;.\win32\amd64 diff --git a/agent/make/saenv64.sh b/agent/make/saenv64.sh index ea2242049..487004d62 100644 --- a/agent/make/saenv64.sh +++ b/agent/make/saenv64.sh @@ -55,7 +55,7 @@ if [ "x$SA_DISABLE_VERS_CHK" != "x" ]; then OPTIONS="-Dsun.jvm.hotspot.runtime.VM.disableVersionCheck ${OPTIONS}" fi -SA_CLASSPATH=$STARTDIR/../build/classes:$STARTDIR/../src/share/lib/maf-1_0.jar:$STARTDIR/../src/share/lib/jlfgr-1_0.jar:$STARTDIR/../src/share/lib/js.jar:$STARTDIR/sa.jar:$STARTDIR/lib/maf-1_0.jar:$STARTDIR/lib/jlfgr-1_0.jar:$STARTDIR/lib/js.jar +SA_CLASSPATH=$STARTDIR/../build/classes:$STARTDIR/../src/share/lib/js.jar:$STARTDIR/sa.jar::$STARTDIR/lib/js.jar OPTIONS="-Djava.system.class.loader=sun.jvm.hotspot.SALauncherLoader ${OPTIONS}" diff --git a/agent/src/share/classes/com/sun/java/swing/action/AboutAction.java b/agent/src/share/classes/com/sun/java/swing/action/AboutAction.java new file mode 100644 index 000000000..e6d1094a1 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/AboutAction.java @@ -0,0 +1,57 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class AboutAction extends DelegateAction +{ + + public AboutAction() + { + this("general/About16.gif"); + } + + public AboutAction(String iconPath) + { + super("About...", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "about-command"); + putValue("ShortDescription", "About..."); + putValue("LongDescription", "System information and version of the application."); + putValue("MnemonicKey", VALUE_MNEMONIC); + } + + public static final String VALUE_COMMAND = "about-command"; + public static final String VALUE_NAME = "About..."; + public static final String VALUE_SMALL_ICON = "general/About16.gif"; + public static final String VALUE_LARGE_ICON = "general/About24.gif"; + public static final Integer VALUE_MNEMONIC = new Integer(65); + public static final String VALUE_SHORT_DESCRIPTION = "About..."; + public static final String VALUE_LONG_DESCRIPTION = "System information and version of the application."; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/ActionManager.java b/agent/src/share/classes/com/sun/java/swing/action/ActionManager.java new file mode 100644 index 000000000..d73fbda2e --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/ActionManager.java @@ -0,0 +1,95 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import java.util.HashMap; +import javax.swing.Action; +import javax.swing.ImageIcon; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, StateChangeAction, ActionUtilities + +public abstract class ActionManager +{ + + protected ActionManager() + { + actions = new HashMap(); + addActions(); + } + + public static ActionManager getInstance() + { + return manager; + } + + protected abstract void addActions(); + + protected void addAction(String cmdname, Action action) + { + actions.put(cmdname, action); + } + + public Action getAction(String key) + { + return (Action)actions.get(key); + } + + public DelegateAction getDelegateAction(String name) + { + Action a = getAction(name); + if(a instanceof DelegateAction) + return (DelegateAction)a; + else + return null; + } + + public StateChangeAction getStateChangeAction(String name) + { + Action a = getAction(name); + if(a instanceof StateChangeAction) + return (StateChangeAction)a; + else + return null; + } + + public static ImageIcon getIcon(String name) + { + return utilities.getIcon(name); + } + + public void setActionEnabled(String name, boolean enabled) + { + Action action = getAction(name); + if(action != null) + action.setEnabled(enabled); + } + + private HashMap actions; + private static ActionUtilities utilities = new ActionUtilities(); + protected static ActionManager manager; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/ActionUtilities.java b/agent/src/share/classes/com/sun/java/swing/action/ActionUtilities.java new file mode 100644 index 000000000..67097f77b --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/ActionUtilities.java @@ -0,0 +1,49 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.ImageIcon; + +class ActionUtilities +{ + + ActionUtilities() + { + } + + public ImageIcon getIcon(String name) + { + String imagePath = "/toolbarButtonGraphics/" + name; + java.net.URL url = getClass().getResource(imagePath); + if(url != null) + return new ImageIcon(url); + else + return null; + } + + public static final String IMAGE_DIR = "/toolbarButtonGraphics/"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/AlignCenterAction.java b/agent/src/share/classes/com/sun/java/swing/action/AlignCenterAction.java new file mode 100644 index 000000000..5ce24155d --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/AlignCenterAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// StateChangeAction, ActionManager + +public class AlignCenterAction extends StateChangeAction +{ + + public AlignCenterAction() + { + this("text/AlignCenter16.gif"); + } + + public AlignCenterAction(String iconPath) + { + super("Center", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "align-center-command"); + putValue("ShortDescription", "Center"); + putValue("LongDescription", "Adjust the placement of text to the center of the line"); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "align-center-command"; + public static final String VALUE_NAME = "Center"; + public static final String VALUE_SMALL_ICON = "text/AlignCenter16.gif"; + public static final String VALUE_LARGE_ICON = "text/AlignCenter24.gif"; + public static final Integer VALUE_MNEMONIC = new Integer(78); + public static final KeyStroke VALUE_ACCELERATOR = KeyStroke.getKeyStroke(69, 2); + public static final String VALUE_SHORT_DESCRIPTION = "Center"; + public static final String VALUE_LONG_DESCRIPTION = "Adjust the placement of text to the center of the line"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/AlignLeftAction.java b/agent/src/share/classes/com/sun/java/swing/action/AlignLeftAction.java new file mode 100644 index 000000000..b94f2c102 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/AlignLeftAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// StateChangeAction, ActionManager + +public class AlignLeftAction extends StateChangeAction +{ + + public AlignLeftAction() + { + this("text/AlignLeft16.gif"); + } + + public AlignLeftAction(String iconPath) + { + super("Left Align", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "align-left-command"); + putValue("ShortDescription", "Left Align"); + putValue("LongDescription", "Adjust the placement of text along the left edge"); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "align-left-command"; + public static final String VALUE_NAME = "Left Align"; + public static final String VALUE_SMALL_ICON = "text/AlignLeft16.gif"; + public static final String VALUE_LARGE_ICON = "text/AlignLeft24.gif"; + public static final Integer VALUE_MNEMONIC = new Integer(76); + public static final KeyStroke VALUE_ACCELERATOR = KeyStroke.getKeyStroke(76, 2); + public static final String VALUE_SHORT_DESCRIPTION = "Left Align"; + public static final String VALUE_LONG_DESCRIPTION = "Adjust the placement of text along the left edge"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/AlignRightAction.java b/agent/src/share/classes/com/sun/java/swing/action/AlignRightAction.java new file mode 100644 index 000000000..46c0204bf --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/AlignRightAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// StateChangeAction, ActionManager + +public class AlignRightAction extends StateChangeAction +{ + + public AlignRightAction() + { + this("text/AlignRight16.gif"); + } + + public AlignRightAction(String iconPath) + { + super("Right Align", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "align-right-command"); + putValue("ShortDescription", "Right Align"); + putValue("LongDescription", "Adjust the placement of text along the right edge"); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "align-right-command"; + public static final String VALUE_NAME = "Right Align"; + public static final String VALUE_SMALL_ICON = "text/AlignRight16.gif"; + public static final String VALUE_LARGE_ICON = "text/AlignRight24.gif"; + public static final Integer VALUE_MNEMONIC = new Integer(82); + public static final KeyStroke VALUE_ACCELERATOR = KeyStroke.getKeyStroke(82, 2); + public static final String VALUE_SHORT_DESCRIPTION = "Right Align"; + public static final String VALUE_LONG_DESCRIPTION = "Adjust the placement of text along the right edge"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/ApplyAction.java b/agent/src/share/classes/com/sun/java/swing/action/ApplyAction.java new file mode 100644 index 000000000..0851431c8 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/ApplyAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class ApplyAction extends DelegateAction +{ + + public ApplyAction() + { + this(VALUE_SMALL_ICON); + } + + public ApplyAction(String iconPath) + { + super("Apply", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "apply-command"); + putValue("ShortDescription", "Apply the activity"); + putValue("LongDescription", "Apply the activity"); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "apply-command"; + public static final String VALUE_NAME = "Apply"; + public static final String VALUE_SMALL_ICON = null; + public static final String VALUE_LARGE_ICON = null; + public static final Integer VALUE_MNEMONIC = new Integer(65); + public static final KeyStroke VALUE_ACCELERATOR = null; + public static final String VALUE_SHORT_DESCRIPTION = "Apply the activity"; + public static final String VALUE_LONG_DESCRIPTION = "Apply the activity"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/BackAction.java b/agent/src/share/classes/com/sun/java/swing/action/BackAction.java new file mode 100644 index 000000000..d0163cc37 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/BackAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class BackAction extends DelegateAction +{ + + public BackAction() + { + this(VALUE_SMALL_ICON); + } + + public BackAction(String iconPath) + { + super("< Back", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "back-command"); + putValue("ShortDescription", "Select previous item"); + putValue("LongDescription", "Select previous item"); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "back-command"; + public static final String VALUE_NAME = "< Back"; + public static final String VALUE_SMALL_ICON = null; + public static final String VALUE_LARGE_ICON = null; + public static final Integer VALUE_MNEMONIC = new Integer(66); + public static final KeyStroke VALUE_ACCELERATOR = null; + public static final String VALUE_SHORT_DESCRIPTION = "Select previous item"; + public static final String VALUE_LONG_DESCRIPTION = "Select previous item"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/CancelAction.java b/agent/src/share/classes/com/sun/java/swing/action/CancelAction.java new file mode 100644 index 000000000..aa9801d58 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/CancelAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class CancelAction extends DelegateAction +{ + + public CancelAction() + { + this(VALUE_SMALL_ICON); + } + + public CancelAction(String iconPath) + { + super("Cancel", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "cancel-command"); + putValue("ShortDescription", "Cancels the action"); + putValue("LongDescription", "Cancels the action"); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "cancel-command"; + public static final String VALUE_NAME = "Cancel"; + public static final String VALUE_SMALL_ICON = null; + public static final String VALUE_LARGE_ICON = null; + public static final Integer VALUE_MNEMONIC = new Integer(67); + public static final KeyStroke VALUE_ACCELERATOR = null; + public static final String VALUE_SHORT_DESCRIPTION = "Cancels the action"; + public static final String VALUE_LONG_DESCRIPTION = "Cancels the action"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/DelegateAction.java b/agent/src/share/classes/com/sun/java/swing/action/DelegateAction.java new file mode 100644 index 000000000..41e7ed803 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/DelegateAction.java @@ -0,0 +1,65 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.AbstractAction; +import javax.swing.Icon; + +public abstract class DelegateAction extends AbstractAction +{ + + public DelegateAction(String name, Icon icon) + { + super(name, icon); + } + + public void addActionListener(ActionListener listener) + { + this.listener = listener; + } + + public void removeActionListener(ActionListener listener) + { + this.listener = null; + } + + public ActionListener[] getActionListeners() + { + return (new ActionListener[] { + listener + }); + } + + public void actionPerformed(ActionEvent evt) + { + if(listener != null) + listener.actionPerformed(evt); + } + + private ActionListener listener; +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/ExitAction.java b/agent/src/share/classes/com/sun/java/swing/action/ExitAction.java new file mode 100644 index 000000000..79c5d31df --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/ExitAction.java @@ -0,0 +1,55 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class ExitAction extends DelegateAction +{ + + public ExitAction() + { + super("Exit", ActionManager.getIcon(VALUE_SMALL_ICON)); + putValue("ActionCommandKey", "exit-command"); + putValue("ShortDescription", "Exits the application"); + putValue("LongDescription", "Exits the application"); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "exit-command"; + public static final String VALUE_NAME = "Exit"; + public static final String VALUE_SMALL_ICON = null; + public static final String VALUE_LARGE_ICON = null; + public static final Integer VALUE_MNEMONIC = new Integer(88); + public static final KeyStroke VALUE_ACCELERATOR = null; + public static final String VALUE_SHORT_DESCRIPTION = "Exits the application"; + public static final String VALUE_LONG_DESCRIPTION = "Exits the application"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/FileMenu.java b/agent/src/share/classes/com/sun/java/swing/action/FileMenu.java new file mode 100644 index 000000000..ab078b1b5 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/FileMenu.java @@ -0,0 +1,53 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import java.awt.event.ActionEvent; +import javax.swing.AbstractAction; + +public class FileMenu extends AbstractAction +{ + + public FileMenu() + { + super("File"); + putValue("ActionCommandKey", "file-menu-command"); + putValue("ShortDescription", "File operations"); + putValue("LongDescription", "File operations"); + putValue("MnemonicKey", VALUE_MNEMONIC); + } + + public void actionPerformed(ActionEvent actionevent) + { + } + + public static final String VALUE_COMMAND = "file-menu-command"; + public static final String VALUE_NAME = "File"; + public static final Integer VALUE_MNEMONIC = new Integer(70); + public static final String VALUE_SHORT_DESCRIPTION = "File operations"; + public static final String VALUE_LONG_DESCRIPTION = "File operations"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/FinishAction.java b/agent/src/share/classes/com/sun/java/swing/action/FinishAction.java new file mode 100644 index 000000000..1e80dc2e7 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/FinishAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class FinishAction extends DelegateAction +{ + + public FinishAction() + { + this(VALUE_SMALL_ICON); + } + + public FinishAction(String iconPath) + { + super("Finish", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "finish-command"); + putValue("ShortDescription", "Finish the activity"); + putValue("LongDescription", "Finish the activity"); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "finish-command"; + public static final String VALUE_NAME = "Finish"; + public static final String VALUE_SMALL_ICON = null; + public static final String VALUE_LARGE_ICON = null; + public static final Integer VALUE_MNEMONIC = new Integer(70); + public static final KeyStroke VALUE_ACCELERATOR = null; + public static final String VALUE_SHORT_DESCRIPTION = "Finish the activity"; + public static final String VALUE_LONG_DESCRIPTION = "Finish the activity"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/HelpAction.java b/agent/src/share/classes/com/sun/java/swing/action/HelpAction.java new file mode 100644 index 000000000..73cf8ec1e --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/HelpAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class HelpAction extends DelegateAction +{ + + public HelpAction() + { + this("general/Help16.gif"); + } + + public HelpAction(String iconPath) + { + super("Help", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "help-command"); + putValue("ShortDescription", "Help..."); + putValue("LongDescription", "Provide information which may aid the user."); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "help-command"; + public static final String VALUE_NAME = "Help"; + public static final String VALUE_SMALL_ICON = "general/Help16.gif"; + public static final String VALUE_LARGE_ICON = "general/Help24.gif"; + public static final Integer VALUE_MNEMONIC = new Integer(72); + public static final KeyStroke VALUE_ACCELERATOR = KeyStroke.getKeyStroke(112, 0); + public static final String VALUE_SHORT_DESCRIPTION = "Help..."; + public static final String VALUE_LONG_DESCRIPTION = "Provide information which may aid the user."; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/HelpMenu.java b/agent/src/share/classes/com/sun/java/swing/action/HelpMenu.java new file mode 100644 index 000000000..c329ab4b4 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/HelpMenu.java @@ -0,0 +1,53 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import java.awt.event.ActionEvent; +import javax.swing.AbstractAction; + +public class HelpMenu extends AbstractAction +{ + + public HelpMenu() + { + super("Help"); + putValue("ActionCommandKey", "help-menu-command"); + putValue("ShortDescription", "Help operations"); + putValue("LongDescription", "Help operations"); + putValue("MnemonicKey", VALUE_MNEMONIC); + } + + public void actionPerformed(ActionEvent actionevent) + { + } + + public static final String VALUE_COMMAND = "help-menu-command"; + public static final String VALUE_NAME = "Help"; + public static final Integer VALUE_MNEMONIC = new Integer(72); + public static final String VALUE_SHORT_DESCRIPTION = "Help operations"; + public static final String VALUE_LONG_DESCRIPTION = "Help operations"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/NewAction.java b/agent/src/share/classes/com/sun/java/swing/action/NewAction.java new file mode 100644 index 000000000..62d4f54a3 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/NewAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class NewAction extends DelegateAction +{ + + public NewAction() + { + this("general/New16.gif"); + } + + public NewAction(String iconPath) + { + super("New", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "new-command"); + putValue("ShortDescription", "Create a new object."); + putValue("LongDescription", "Create a new object."); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "new-command"; + public static final String VALUE_NAME = "New"; + public static final String VALUE_SMALL_ICON = "general/New16.gif"; + public static final String VALUE_LARGE_ICON = "general/New24.gif"; + public static final Integer VALUE_MNEMONIC = new Integer(78); + public static final KeyStroke VALUE_ACCELERATOR = KeyStroke.getKeyStroke(78, 2); + public static final String VALUE_SHORT_DESCRIPTION = "Create a new object."; + public static final String VALUE_LONG_DESCRIPTION = "Create a new object."; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/NextAction.java b/agent/src/share/classes/com/sun/java/swing/action/NextAction.java new file mode 100644 index 000000000..a133198ba --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/NextAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class NextAction extends DelegateAction +{ + + public NextAction() + { + this(VALUE_SMALL_ICON); + } + + public NextAction(String iconPath) + { + super("Next >", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "next-command"); + putValue("ShortDescription", "Select next item"); + putValue("LongDescription", "Select next item"); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "next-command"; + public static final String VALUE_NAME = "Next >"; + public static final String VALUE_SMALL_ICON = null; + public static final String VALUE_LARGE_ICON = null; + public static final Integer VALUE_MNEMONIC = new Integer(78); + public static final KeyStroke VALUE_ACCELERATOR = null; + public static final String VALUE_SHORT_DESCRIPTION = "Select next item"; + public static final String VALUE_LONG_DESCRIPTION = "Select next item"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/OkAction.java b/agent/src/share/classes/com/sun/java/swing/action/OkAction.java new file mode 100644 index 000000000..87bd03efe --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/OkAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class OkAction extends DelegateAction +{ + + public OkAction() + { + this(VALUE_SMALL_ICON); + } + + public OkAction(String iconPath) + { + super("OK", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "ok-command"); + putValue("ShortDescription", "Acknowleges the action"); + putValue("LongDescription", "Acknowleges the action"); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "ok-command"; + public static final String VALUE_NAME = "OK"; + public static final String VALUE_SMALL_ICON = null; + public static final String VALUE_LARGE_ICON = null; + public static final Integer VALUE_MNEMONIC = new Integer(79); + public static final KeyStroke VALUE_ACCELERATOR = null; + public static final String VALUE_SHORT_DESCRIPTION = "Acknowleges the action"; + public static final String VALUE_LONG_DESCRIPTION = "Acknowleges the action"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/OpenAction.java b/agent/src/share/classes/com/sun/java/swing/action/OpenAction.java new file mode 100644 index 000000000..82609a0ec --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/OpenAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class OpenAction extends DelegateAction +{ + + public OpenAction() + { + this("general/Open16.gif"); + } + + public OpenAction(String iconPath) + { + super("Open...", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "open-command"); + putValue("ShortDescription", "Open the specified object."); + putValue("LongDescription", "Open the specified object."); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "open-command"; + public static final String VALUE_NAME = "Open..."; + public static final String VALUE_SMALL_ICON = "general/Open16.gif"; + public static final String VALUE_LARGE_ICON = "general/Open24.gif"; + public static final Integer VALUE_MNEMONIC = new Integer(79); + public static final KeyStroke VALUE_ACCELERATOR = KeyStroke.getKeyStroke(79, 2); + public static final String VALUE_SHORT_DESCRIPTION = "Open the specified object."; + public static final String VALUE_LONG_DESCRIPTION = "Open the specified object."; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/SaveAction.java b/agent/src/share/classes/com/sun/java/swing/action/SaveAction.java new file mode 100644 index 000000000..3255d2856 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/SaveAction.java @@ -0,0 +1,60 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import javax.swing.KeyStroke; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class SaveAction extends DelegateAction +{ + + public SaveAction() + { + this("general/Save16.gif"); + } + + public SaveAction(String iconPath) + { + super("Save", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "save-command"); + putValue("ShortDescription", "Commit changes to a permanent storage area"); + putValue("LongDescription", "Commit changes to a permanent storage area"); + putValue("MnemonicKey", VALUE_MNEMONIC); + putValue("AcceleratorKey", VALUE_ACCELERATOR); + } + + public static final String VALUE_COMMAND = "save-command"; + public static final String VALUE_NAME = "Save"; + public static final String VALUE_SMALL_ICON = "general/Save16.gif"; + public static final String VALUE_LARGE_ICON = "general/Save24.gif"; + public static final Integer VALUE_MNEMONIC = new Integer(83); + public static final KeyStroke VALUE_ACCELERATOR = KeyStroke.getKeyStroke(83, 2); + public static final String VALUE_SHORT_DESCRIPTION = "Commit changes to a permanent storage area"; + public static final String VALUE_LONG_DESCRIPTION = "Commit changes to a permanent storage area"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/SaveAsAction.java b/agent/src/share/classes/com/sun/java/swing/action/SaveAsAction.java new file mode 100644 index 000000000..385024da9 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/SaveAsAction.java @@ -0,0 +1,57 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction, ActionManager + +public class SaveAsAction extends DelegateAction +{ + + public SaveAsAction() + { + this("general/SaveAs16.gif"); + } + + public SaveAsAction(String iconPath) + { + super("Save As", ActionManager.getIcon(iconPath)); + putValue("ActionCommandKey", "save-as-command"); + putValue("ShortDescription", "Save as a new file"); + putValue("LongDescription", "Saves the current object as another object"); + putValue("MnemonicKey", VALUE_MNEMONIC); + } + + public static final String VALUE_COMMAND = "save-as-command"; + public static final String VALUE_NAME = "Save As"; + public static final String VALUE_SMALL_ICON = "general/SaveAs16.gif"; + public static final String VALUE_LARGE_ICON = "general/SaveAs24.gif"; + public static final Integer VALUE_MNEMONIC = new Integer(65); + public static final String VALUE_SHORT_DESCRIPTION = "Save as a new file"; + public static final String VALUE_LONG_DESCRIPTION = "Saves the current object as another object"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/StateChangeAction.java b/agent/src/share/classes/com/sun/java/swing/action/StateChangeAction.java new file mode 100644 index 000000000..d00761fee --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/StateChangeAction.java @@ -0,0 +1,88 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import javax.swing.Icon; + +// Referenced classes of package com.sun.java.swing.action: +// DelegateAction + +public abstract class StateChangeAction extends DelegateAction + implements ItemListener +{ + + public StateChangeAction(String name) + { + super(name, null); + selected = false; + } + + public StateChangeAction(String name, Icon icon) + { + super(name, icon); + selected = false; + } + + public boolean isSelected() + { + return selected; + } + + public synchronized void setSelected(boolean newValue) + { + boolean oldValue = selected; + if(oldValue != newValue) + { + selected = newValue; + firePropertyChange("selected", Boolean.valueOf(oldValue), Boolean.valueOf(newValue)); + } + } + + public void setItemListener(ItemListener listener) + { + this.listener = listener; + } + + public ItemListener getItemListener() + { + return listener; + } + + public void itemStateChanged(ItemEvent evt) + { + if(evt.getStateChange() == 1) + setSelected(true); + else + setSelected(false); + if(listener != null) + listener.itemStateChanged(evt); + } + + protected boolean selected; + private ItemListener listener; +} diff --git a/agent/src/share/classes/com/sun/java/swing/action/ViewMenu.java b/agent/src/share/classes/com/sun/java/swing/action/ViewMenu.java new file mode 100644 index 000000000..5501ba8fc --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/action/ViewMenu.java @@ -0,0 +1,53 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.action; + +import java.awt.event.ActionEvent; +import javax.swing.AbstractAction; + +public class ViewMenu extends AbstractAction +{ + + public ViewMenu() + { + super("View"); + putValue("ActionCommandKey", "view-menu-command"); + putValue("ShortDescription", "View operations"); + putValue("LongDescription", "View operations"); + putValue("MnemonicKey", VALUE_MNEMONIC); + } + + public void actionPerformed(ActionEvent actionevent) + { + } + + public static final String VALUE_COMMAND = "view-menu-command"; + public static final String VALUE_NAME = "View"; + public static final Integer VALUE_MNEMONIC = new Integer(86); + public static final String VALUE_SHORT_DESCRIPTION = "View operations"; + public static final String VALUE_LONG_DESCRIPTION = "View operations"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/ui/CommonMenuBar.java b/agent/src/share/classes/com/sun/java/swing/ui/CommonMenuBar.java new file mode 100644 index 000000000..20ebbb521 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/ui/CommonMenuBar.java @@ -0,0 +1,108 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.ui; + +import com.sun.java.swing.action.ActionManager; +import com.sun.java.swing.action.StateChangeAction; +import javax.swing.*; + +// Referenced classes of package com.sun.java.swing.ui: +// ToggleActionPropertyChangeListener, StatusBar + +public abstract class CommonMenuBar extends JMenuBar +{ + + protected CommonMenuBar(ActionManager manager) + { + this(manager, StatusBar.getInstance()); + } + + protected CommonMenuBar(ActionManager manager, StatusBar status) + { + this.manager = manager; + statusBar = status; + configureMenu(); + } + + protected abstract void configureMenu(); + + protected void configureToggleMenuItem(JMenuItem menuItem, Action action) + { + configureMenuItem(menuItem, action); + action.addPropertyChangeListener(new ToggleActionPropertyChangeListener(menuItem)); + } + + protected void configureMenuItem(JMenuItem menuItem, Action action) + { + menuItem.addMouseListener(statusBar); + } + + protected JMenu createMenu(String name, char mnemonic) + { + JMenu menu = new JMenu(name); + menu.setMnemonic(mnemonic); + return menu; + } + + protected void addMenuItem(JMenu menu, Action action) + { + JMenuItem menuItem = menu.add(action); + configureMenuItem(menuItem, action); + } + + protected void addCheckBoxMenuItem(JMenu menu, StateChangeAction a) + { + addCheckBoxMenuItem(menu, a, false); + } + + protected void addCheckBoxMenuItem(JMenu menu, StateChangeAction a, boolean selected) + { + JCheckBoxMenuItem mi = new JCheckBoxMenuItem(a); + mi.addItemListener(a); + mi.setSelected(selected); + menu.add(mi); + configureToggleMenuItem(mi, a); + } + + protected void addRadioButtonMenuItem(JMenu menu, ButtonGroup group, StateChangeAction a) + { + addRadioButtonMenuItem(menu, group, a, false); + } + + protected void addRadioButtonMenuItem(JMenu menu, ButtonGroup group, StateChangeAction a, boolean selected) + { + JRadioButtonMenuItem mi = new JRadioButtonMenuItem(a); + mi.addItemListener(a); + mi.setSelected(selected); + menu.add(mi); + if(group != null) + group.add(mi); + configureToggleMenuItem(mi, a); + } + + protected ActionManager manager; + private StatusBar statusBar; +} diff --git a/agent/src/share/classes/com/sun/java/swing/ui/CommonToolBar.java b/agent/src/share/classes/com/sun/java/swing/ui/CommonToolBar.java new file mode 100644 index 000000000..d65e06e3a --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/ui/CommonToolBar.java @@ -0,0 +1,95 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.ui; + +import com.sun.java.swing.action.ActionManager; +import com.sun.java.swing.action.StateChangeAction; +import java.awt.Dimension; +import java.awt.Insets; +import javax.swing.*; + +// Referenced classes of package com.sun.java.swing.ui: +// ToggleActionPropertyChangeListener, StatusBar, CommonUI + +public abstract class CommonToolBar extends JToolBar +{ + + protected CommonToolBar(ActionManager manager) + { + this(manager, StatusBar.getInstance()); + } + + protected CommonToolBar(ActionManager manager, StatusBar status) + { + this.manager = manager; + statusBar = status; + buttonSize = new Dimension(CommonUI.buttconPrefSize); + buttonInsets = new Insets(0, 0, 0, 0); + addComponents(); + } + + protected abstract void addComponents(); + + protected void addButton(Action action) + { + javax.swing.JButton button = add(action); + configureButton(button, action); + } + + protected void addToggleButton(StateChangeAction a) + { + addToggleButton(a, null); + } + + protected void addToggleButton(StateChangeAction a, ButtonGroup group) + { + JToggleButton button = new JToggleButton(a); + button.addItemListener(a); + button.setSelected(a.isSelected()); + if(group != null) + group.add(button); + add(button); + configureToggleButton(button, a); + } + + protected void configureToggleButton(JToggleButton button, Action action) + { + configureButton(button, action); + action.addPropertyChangeListener(new ToggleActionPropertyChangeListener(button)); + } + + protected void configureButton(AbstractButton button, Action action) + { + button.setToolTipText((String)action.getValue("Name")); + button.setText(""); + button.addMouseListener(statusBar); + } + + protected ActionManager manager; + private Dimension buttonSize; + private Insets buttonInsets; + private StatusBar statusBar; +} diff --git a/agent/src/share/classes/com/sun/java/swing/ui/CommonUI.java b/agent/src/share/classes/com/sun/java/swing/ui/CommonUI.java new file mode 100644 index 000000000..6429ea0fa --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/ui/CommonUI.java @@ -0,0 +1,392 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.ui; + +import java.awt.*; +import java.awt.event.ActionListener; +import java.awt.event.KeyListener; +import java.util.StringTokenizer; +import java.util.Vector; +import javax.swing.*; +import javax.swing.border.Border; +import javax.swing.text.*; + +public class CommonUI +{ + private static class NumberDocument extends PlainDocument + { + + public void insertString(int offs, String str, AttributeSet atts) + throws BadLocationException + { + if(!Character.isDigit(str.charAt(0))) + { + return; + } else + { + super.insertString(offs, str, atts); + return; + } + } + + private NumberDocument() + { + } + + } + + + public CommonUI() + { + } + + public static JLabel createLabel(String text, int mnemonic, Component comp) + { + JLabel label = new JLabel(" " + text); + label.setMinimumSize(labelPrefSize); + if(mnemonic != -1) + label.setDisplayedMnemonic(mnemonic); + if(comp != null) + label.setLabelFor(comp); + if(text.length() == 0) + label.setPreferredSize(labelPrefSize); + return label; + } + + public static JLabel createLabel(String text) + { + return createLabel(text, -1, null); + } + + public static JTextField createTextField(String text, KeyListener listener, boolean numbers) + { + JTextField field = new JTextField(text); + field.setMinimumSize(textPrefSize); + if(text.length() == 0) + field.setPreferredSize(textPrefSize); + if(listener != null) + field.addKeyListener(listener); + if(numbers) + field.setDocument(new NumberDocument()); + return field; + } + + public static JTextField createTextField(String text, boolean numbers) + { + return createTextField(text, null, numbers); + } + + public static JTextField createTextField(String text, KeyListener listener) + { + return createTextField(text, listener, false); + } + + public static JTextField createTextField(String text) + { + return createTextField(text, null, false); + } + + public static JRadioButton createRadioButton(String text, int mnemonic, ActionListener listener, boolean selected) + { + JRadioButton button = new JRadioButton(text); + button.setMnemonic(mnemonic); + button.setSelected(selected); + button.setMinimumSize(labelPrefSize); + if(listener != null) + button.addActionListener(listener); + if(text.length() == 0) + button.setPreferredSize(labelPrefSize); + return button; + } + + public static JRadioButton createRadioButton(String text, int mnemonic, boolean selected) + { + return createRadioButton(text, mnemonic, null, selected); + } + + public static JRadioButton createRadioButton(String text, int mnemonic, ActionListener listener) + { + return createRadioButton(text, mnemonic, listener, false); + } + + public static JRadioButton createRadioButton(String text, int mnemonic) + { + return createRadioButton(text, mnemonic, null, false); + } + + public static JRadioButton createRadioButton(String text) + { + return createRadioButton(text, -1, null, false); + } + + public static JCheckBox createCheckBox(String text, int mnemonic, ActionListener listener, boolean selected) + { + JCheckBox checkbox = new JCheckBox(text); + checkbox.setMinimumSize(labelPrefSize); + if(mnemonic != -1) + checkbox.setMnemonic(mnemonic); + checkbox.setSelected(selected); + if(text.length() == 0) + checkbox.setPreferredSize(labelPrefSize); + if(listener != null) + checkbox.addActionListener(listener); + return checkbox; + } + + public static JCheckBox createCheckBox(String text, int mnemonic, ActionListener listener) + { + return createCheckBox(text, mnemonic, listener, false); + } + + public static JCheckBox createCheckBox(String text, int mnemonic, boolean selected) + { + return createCheckBox(text, mnemonic, null, selected); + } + + public static JCheckBox createCheckBox(String text, int mnemonic) + { + return createCheckBox(text, mnemonic, null, false); + } + + public static JCheckBox createCheckBox(String text) + { + return createCheckBox(text, -1, null, false); + } + + public static JComboBox createComboBox(Object items[], ActionListener listener, boolean editable) + { + JComboBox comboBox = new JComboBox(items); + if(listener != null) + comboBox.addActionListener(listener); + comboBox.setEditable(editable); + return comboBox; + } + + public static JComboBox createComboBox(Object items[], boolean editable) + { + return createComboBox(items, null, editable); + } + + public static JComboBox createComboBox(Vector items, ActionListener listener, boolean editable) + { + JComboBox comboBox = new JComboBox(items); + if(listener != null) + comboBox.addActionListener(listener); + comboBox.setEditable(editable); + return comboBox; + } + + public static JComboBox createComboBox(Vector items, boolean editable) + { + return createComboBox(items, null, editable); + } + + public static JButton createButton(Action action) + { + JButton button = new JButton(action); + setButtonSize(button, buttonPrefSize); + return button; + } + + public static JButton createButton(String text, ActionListener listener, int mnemonic) + { + JButton button = new JButton(text); + if(listener != null) + button.addActionListener(listener); + if(mnemonic != -1) + button.setMnemonic(mnemonic); + setButtonSize(button, buttonPrefSize); + return button; + } + + private static void setButtonSize(JButton button, Dimension size) + { + String text = button.getText(); + button.setMinimumSize(size); + if(text.length() == 0) + { + button.setPreferredSize(size); + } else + { + Dimension psize = button.getPreferredSize(); + if(psize.width < size.width) + button.setPreferredSize(size); + } + } + + public static JButton createButton(String text, ActionListener listener) + { + return createButton(text, listener, -1); + } + + public static JButton createSmallButton(String text, ActionListener listener, int mnemonic) + { + JButton button = createButton(text, listener, mnemonic); + setButtonSize(button, smbuttonPrefSize); + return button; + } + + public static JButton createSmallButton(String text, ActionListener listener) + { + return createSmallButton(text, listener, -1); + } + + public static Border createBorder(String text) + { + Border border = BorderFactory.createEtchedBorder(); + return BorderFactory.createTitledBorder(border, text, 0, 2); + } + + public static Border createBorder() + { + return BorderFactory.createEmptyBorder(4, 4, 4, 4); + } + + public static JScrollPane createListPane(JList list, String text) + { + JScrollPane pane = new JScrollPane(list); + pane.setBorder(BorderFactory.createCompoundBorder(createBorder(text), BorderFactory.createLoweredBevelBorder())); + return pane; + } + + public static void centerComponent(Component source, Component parent) + { + Dimension dim = source.getSize(); + Rectangle rect; + if(parent != null) + { + rect = parent.getBounds(); + } else + { + Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); + rect = new Rectangle(0, 0, d.width, d.height); + } + int x = rect.x + (rect.width - dim.width) / 2; + int y = rect.y + (rect.height - dim.height) / 2; + source.setLocation(x, y); + } + + public static void centerComponent(Component source) + { + centerComponent(source, null); + } + + public static JFrame getParentFrame(Component source) + { + Container parent; + for(parent = source.getParent(); parent != null; parent = parent.getParent()) + if(parent instanceof JFrame) + break; + + if(parent == null) + return null; + else + return (JFrame)parent; + } + + public static Integer msToSec(Integer ms) + { + int value = ms.intValue(); + value /= 1000; + return new Integer(value); + } + + public static Integer secToMs(Integer sec) + { + int value = sec.intValue(); + value *= 1000; + return new Integer(value); + } + + public static String stringFromStringArray(String strings[], String delim) + { + String string = ""; + String separator; + if(delim == null || delim.equals("")) + separator = " "; + else + separator = delim; + for(int i = 0; i < strings.length; i++) + { + string = string + strings[i]; + string = string + separator; + } + + return string; + } + + public static String stringFromStringArray(String strings[]) + { + return stringFromStringArray(strings, ""); + } + + public static String[] stringArrayFromString(String string, String delim) + { + StringTokenizer st; + if(delim == null || delim.equals("")) + st = new StringTokenizer(string); + else + st = new StringTokenizer(string, delim); + int numTokens = st.countTokens(); + String strings[] = new String[numTokens]; + int index = 0; + while(st.hasMoreTokens()) + strings[index++] = st.nextToken(); + return strings; + } + + public static String[] stringArrayFromString(String string) + { + return stringArrayFromString(string, ""); + } + + public static void setWaitCursor(Component comp) + { + comp.setCursor(Cursor.getPredefinedCursor(3)); + } + + public static void setDefaultCursor(Component comp) + { + comp.setCursor(Cursor.getPredefinedCursor(0)); + } + + public static final int BUTTON_WIDTH = 100; + public static final int BUTTON_HEIGHT = 26; + public static final int BUTTCON_WIDTH = 28; + public static final int BUTTCON_HEIGHT = 28; + public static final int SM_BUTTON_WIDTH = 72; + public static final int SM_BUTTON_HEIGHT = 26; + public static final int LABEL_WIDTH = 100; + public static final int LABEL_HEIGHT = 20; + public static final int TEXT_WIDTH = 150; + public static final int TEXT_HEIGHT = 20; + public static Dimension buttonPrefSize = new Dimension(100, 26); + public static Dimension buttconPrefSize = new Dimension(28, 28); + public static Dimension smbuttonPrefSize = new Dimension(72, 26); + public static Dimension labelPrefSize = new Dimension(100, 20); + public static Dimension textPrefSize = new Dimension(150, 20); + +} diff --git a/agent/src/share/classes/com/sun/java/swing/ui/OkCancelButtonPanel.java b/agent/src/share/classes/com/sun/java/swing/ui/OkCancelButtonPanel.java new file mode 100644 index 000000000..d89404dff --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/ui/OkCancelButtonPanel.java @@ -0,0 +1,51 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.ui; + +import com.sun.java.swing.action.*; +import java.awt.event.ActionListener; +import javax.swing.JPanel; + +// Referenced classes of package com.sun.java.swing.ui: +// CommonUI + +public class OkCancelButtonPanel extends JPanel +{ + + public OkCancelButtonPanel(ActionListener listener) + { + DelegateAction okAction = new OkAction(); + okAction.addActionListener(listener); + DelegateAction cancelAction = new CancelAction(); + cancelAction.addActionListener(listener); + add(CommonUI.createButton(okAction)); + add(CommonUI.createButton(cancelAction)); + } + + public static final String OK_COMMAND = "ok-command"; + public static final String CANCEL_COMMAND = "cancel-command"; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/ui/OkCancelDialog.java b/agent/src/share/classes/com/sun/java/swing/ui/OkCancelDialog.java new file mode 100644 index 000000000..619a97c4f --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/ui/OkCancelDialog.java @@ -0,0 +1,82 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.ui; + +import java.awt.BorderLayout; +import java.awt.Container; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.JDialog; +import javax.swing.JPanel; + +// Referenced classes of package com.sun.java.swing.ui: +// OkCancelButtonPanel, CommonUI + +public class OkCancelDialog extends JDialog + implements ActionListener +{ + + public OkCancelDialog(String title, JPanel panel) + { + this(title, panel, true); + } + + public OkCancelDialog(String title, JPanel panel, boolean modal) + { + setTitle(title); + setModal(modal); + Container pane = getContentPane(); + pane.setLayout(new BorderLayout()); + pane.add(panel, "Center"); + pane.add(new OkCancelButtonPanel(this), "South"); + pack(); + CommonUI.centerComponent(this); + } + + public boolean isOk() + { + return okPressed; + } + + public void actionPerformed(ActionEvent evt) + { + String command = evt.getActionCommand(); + if(command.equals("ok-command")) + { + okPressed = true; + setVisible(false); + dispose(); + } else + if(command.equals("cancel-command")) + { + okPressed = false; + setVisible(false); + dispose(); + } + } + + private boolean okPressed; +} diff --git a/agent/src/share/classes/com/sun/java/swing/ui/SplashScreen.java b/agent/src/share/classes/com/sun/java/swing/ui/SplashScreen.java new file mode 100644 index 000000000..4f575f9cc --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/ui/SplashScreen.java @@ -0,0 +1,85 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.ui; + +import java.awt.*; +import javax.swing.ImageIcon; + +public class SplashScreen extends Window +{ + + public SplashScreen(Frame f) + { + super(f); + setBackground(Color.white); + java.net.URL url = getClass().getResource("/images/SplashScreen.jpg"); + if(url != null) + { + screen = new ImageIcon(url); + MediaTracker mt = new MediaTracker(this); + mt.addImage(screen.getImage(), 0); + try + { + mt.waitForAll(); + } + catch(Exception ex) { } + } + } + + public void setVisible(boolean val) + { + if(screen == null) + return; + if(val) + { + setSize(screen.getIconWidth(), screen.getIconHeight()); + setLocation(-500, -500); + super.setVisible(true); + Dimension d = getToolkit().getScreenSize(); + Insets i = getInsets(); + int w = screen.getIconWidth() + i.left + i.right; + int h = screen.getIconHeight() + i.top + i.bottom; + setSize(w, h); + setLocation(d.width / 2 - w / 2, d.height / 2 - h / 2); + } else + { + super.setVisible(false); + } + } + + public void paint(Graphics g) + { + if(screen != null) + { + Dimension d = getSize(); + g.setColor(Color.black); + g.drawRect(0, 0, d.width - 1, d.height - 1); + g.drawImage(screen.getImage(), 1, 1, this); + } + } + + private ImageIcon screen; +} diff --git a/agent/src/share/classes/com/sun/java/swing/ui/StatusBar.java b/agent/src/share/classes/com/sun/java/swing/ui/StatusBar.java new file mode 100644 index 000000000..dd0419742 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/ui/StatusBar.java @@ -0,0 +1,178 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.ui; + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; + +public class StatusBar extends JPanel + implements ActionListener, MouseListener +{ + + public StatusBar() + { + setLayout(new FlowLayout(0)); + setBorder(BorderFactory.createEtchedBorder()); + progressBar = new JProgressBar(0, 0, 100); + progressBar.setPreferredSize(new Dimension(60, progressBar.getPreferredSize().height + 2)); + progressBar.setVisible(false); + label = new JLabel(" "); + preferredSize = new Dimension(getWidth(label.getText()), 2 * getFontHeight()); + add(progressBar); + add(label); + } + + public static StatusBar getInstance() + { + if(statusBar == null) + statusBar = new StatusBar(); + return statusBar; + } + + public static void setInstance(StatusBar sb) + { + statusBar = sb; + } + + protected int getWidth(String s) + { + FontMetrics fm = getFontMetrics(getFont()); + if(fm == null) + return 0; + else + return fm.stringWidth(s); + } + + protected int getFontHeight() + { + FontMetrics fm = getFontMetrics(getFont()); + if(fm == null) + return 0; + else + return fm.getHeight(); + } + + public Dimension getPreferredSize() + { + return preferredSize; + } + + public void setMessage(String message) + { + label.setText(message); + label.repaint(); + } + + public void startBusyBar() + { + forward = true; + if(timer == null) + { + setMessage(""); + progressBar.setVisible(true); + timer = new Timer(15, this); + timer.start(); + } + } + + public void stopBusyBar() + { + if(timer != null) + { + timer.stop(); + timer = null; + } + setMessage(""); + progressBar.setVisible(false); + progressBar.setValue(0); + } + + public void actionPerformed(ActionEvent evt) + { + int value = progressBar.getValue(); + if(forward) + { + if(value < 100) + { + progressBar.setValue(value + 1); + } else + { + forward = false; + progressBar.setValue(value - 1); + } + } else + if(value > 0) + { + progressBar.setValue(value - 1); + } else + { + forward = true; + progressBar.setValue(value + 1); + } + } + + public void mouseClicked(MouseEvent mouseevent) + { + } + + public void mousePressed(MouseEvent mouseevent) + { + } + + public void mouseReleased(MouseEvent mouseevent) + { + } + + public void mouseExited(MouseEvent evt) + { + setMessage(""); + } + + public void mouseEntered(MouseEvent evt) + { + if(evt.getSource() instanceof AbstractButton) + { + AbstractButton button = (AbstractButton)evt.getSource(); + Action action = button.getAction(); + if(action != null) + { + String message = (String)action.getValue("LongDescription"); + setMessage(message); + } + } + } + + private static final int PROGRESS_MAX = 100; + private static final int PROGRESS_MIN = 0; + private JLabel label; + private Dimension preferredSize; + private JProgressBar progressBar; + private Timer timer; + private boolean forward; + private static StatusBar statusBar; + +} diff --git a/agent/src/share/classes/com/sun/java/swing/ui/TabsDlg.java b/agent/src/share/classes/com/sun/java/swing/ui/TabsDlg.java new file mode 100644 index 000000000..bace0097e --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/ui/TabsDlg.java @@ -0,0 +1,221 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.ui; + +import com.sun.java.swing.action.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Vector; +import javax.swing.*; + +// Referenced classes of package com.sun.java.swing.ui: +// CommonUI + +public class TabsDlg extends JDialog +{ + private class ApplyListener + implements ActionListener + { + + public void actionPerformed(ActionEvent evt) + { + if(applyListener != null) + { + applyListener.actionPerformed(evt); + enableApplyButton(false); + } + } + + private ApplyListener() + { + } + + } + + private class CancelListener + implements ActionListener + { + + public void actionPerformed(ActionEvent evt) + { + if(cancelListener != null) + cancelListener.actionPerformed(evt); + setVisible(false); + } + + private CancelListener() + { + } + + } + + private class OkListener + implements ActionListener + { + + public void actionPerformed(ActionEvent evt) + { + if(okListener != null) + okListener.actionPerformed(evt); + setVisible(false); + } + + private OkListener() + { + } + + } + + + public TabsDlg(String title, Vector panels) + { + super(new JFrame(), title, true); + okListener = null; + cancelListener = null; + applyListener = null; + Container pane = getContentPane(); + pane.setLayout(new BorderLayout()); + tabsPanel = new JTabbedPane(); + int numPanels = panels.size(); + for(int i = 0; i < numPanels; i++) + { + JPanel panel = (JPanel)panels.elementAt(i); + tabsPanel.addTab(panel.getName(), panel); + } + + pane.add(tabsPanel, "Center"); + pane.add(createButtonPanel(), "South"); + pack(); + CommonUI.centerComponent(this); + } + + public static void main(String args[]) + { + JPanel p1 = new JPanel(); + p1.add(new JButton("One")); + p1.setName("One"); + JPanel p2 = new JPanel(); + p2.add(new JButton("Two")); + p2.setName("Two"); + JPanel p3 = new JPanel(); + p3.add(new JButton("Three")); + p3.setName("Three"); + JPanel p4 = new JPanel(); + p4.add(new JButton("Four")); + p4.setName("Four"); + Vector panels = new Vector(); + panels.addElement(p1); + panels.addElement(p2); + panels.addElement(p3); + panels.addElement(p4); + tabsDlg = new TabsDlg("Test Dialog", panels); + tabsDlg.addOkListener(new ActionListener() { + + public void actionPerformed(ActionEvent evt) + { + System.exit(0); + } + + } +); + tabsDlg.addCancelListener(new ActionListener() { + + public void actionPerformed(ActionEvent evt) + { + System.exit(0); + } + + } +); + tabsDlg.setVisible(true); + } + + private JPanel createButtonPanel() + { + JPanel panel = new JPanel(); + okAction = new OkAction(); + cancelAction = new CancelAction(); + applyAction = new ApplyAction(); + okAction.addActionListener(new OkListener()); + cancelAction.addActionListener(new CancelListener()); + applyAction.addActionListener(new ApplyListener()); + panel.add(CommonUI.createButton(okAction)); + panel.add(CommonUI.createButton(cancelAction)); + panel.add(CommonUI.createButton(applyAction)); + JPanel p2 = new JPanel(new BorderLayout()); + p2.add(panel, "Center"); + p2.add(new JSeparator(), "North"); + return p2; + } + + public void enableApplyButton(boolean enabled) + { + applyAction.setEnabled(enabled); + } + + public synchronized void addOkListener(ActionListener l) + { + okListener = AWTEventMulticaster.add(okListener, l); + } + + public synchronized void removeOkListener(ActionListener l) + { + okListener = AWTEventMulticaster.remove(okListener, l); + } + + public synchronized void addCancelListener(ActionListener l) + { + cancelListener = AWTEventMulticaster.add(cancelListener, l); + } + + public synchronized void removeCancelListener(ActionListener l) + { + cancelListener = AWTEventMulticaster.remove(cancelListener, l); + } + + public synchronized void addApplyListener(ActionListener l) + { + applyListener = AWTEventMulticaster.add(applyListener, l); + } + + public synchronized void removeApplyListener(ActionListener l) + { + applyListener = AWTEventMulticaster.remove(applyListener, l); + } + + private JTabbedPane tabsPanel; + private DelegateAction okAction; + private DelegateAction cancelAction; + private DelegateAction applyAction; + private ActionListener okListener; + private ActionListener cancelListener; + private ActionListener applyListener; + private static TabsDlg tabsDlg; + + + +} diff --git a/agent/src/share/classes/com/sun/java/swing/ui/ToggleActionPropertyChangeListener.java b/agent/src/share/classes/com/sun/java/swing/ui/ToggleActionPropertyChangeListener.java new file mode 100644 index 000000000..afeeece49 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/ui/ToggleActionPropertyChangeListener.java @@ -0,0 +1,52 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.ui; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import javax.swing.AbstractButton; + +public class ToggleActionPropertyChangeListener + implements PropertyChangeListener +{ + + public ToggleActionPropertyChangeListener(AbstractButton button) + { + this.button = button; + } + + public void propertyChange(PropertyChangeEvent evt) + { + String propertyName = evt.getPropertyName(); + if(propertyName.equals("selected")) + { + Boolean selected = (Boolean)evt.getNewValue(); + button.setSelected(selected.booleanValue()); + } + } + + private AbstractButton button; +} diff --git a/agent/src/share/classes/com/sun/java/swing/ui/WizardDlg.java b/agent/src/share/classes/com/sun/java/swing/ui/WizardDlg.java new file mode 100644 index 000000000..cd2a696b1 --- /dev/null +++ b/agent/src/share/classes/com/sun/java/swing/ui/WizardDlg.java @@ -0,0 +1,336 @@ +/* + * Copyright 2000-2008 Sun Microsystems, Inc. All Rights Reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, + * CA 95054 USA or visit www.sun.com if you need additional information or + * have any questions. + * + */ + + +package com.sun.java.swing.ui; + +import com.sun.java.swing.action.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.util.Vector; +import javax.swing.*; + +// Referenced classes of package com.sun.java.swing.ui: +// CommonUI + +public class WizardDlg extends JDialog +{ + private class CancelListener + implements ActionListener + { + + public void actionPerformed(ActionEvent evt) + { + if(cancelListener != null) + cancelListener.actionPerformed(evt); + setVisible(false); + } + + private CancelListener() + { + } + + } + + private class FinishListener + implements ActionListener + { + + public void actionPerformed(ActionEvent evt) + { + if(finishListener != null) + finishListener.actionPerformed(evt); + setVisible(false); + } + + private FinishListener() + { + } + + } + + private class NextListener + implements ActionListener + { + + public void actionPerformed(ActionEvent evt) + { + cardShowing++; + if(cardShowing > numCards) + cardShowing = numCards; + else + panesLayout.next(panesPanel); + if(nextListener != null) + nextListener.actionPerformed(evt); + enableBackNextButtons(); + } + + private NextListener() + { + } + + } + + private class BackListener + implements ActionListener + { + + public void actionPerformed(ActionEvent evt) + { + cardShowing--; + if(cardShowing < 1) + cardShowing = 1; + else + panesLayout.previous(panesPanel); + if(backListener != null) + backListener.actionPerformed(evt); + enableBackNextButtons(); + } + + private BackListener() + { + } + + } + + + public WizardDlg(JFrame frame, String title, Vector panels, Vector images) + { + super(frame, title, true); + this.title = title; + this.images = images; + Container pane = getContentPane(); + pane.setLayout(new BorderLayout()); + panesLayout = new CardLayout(); + panesPanel = new JPanel(panesLayout); + pane.add(panesPanel, "Center"); + pane.add(createButtonPanel(), "South"); + setPanels(panels); + pack(); + CommonUI.centerComponent(this); + } + + public WizardDlg(JFrame frame, String title, Vector panels) + { + this(frame, title, panels, null); + } + + public WizardDlg(String title, Vector panels) + { + this(new JFrame(), title, panels, null); + } + + public void setPanels(Vector panels) + { + numCards = panels.size(); + cardShowing = 1; + this.panels = panels; + panesPanel.removeAll(); + for(int i = 0; i < numCards; i++) + panesPanel.add((JPanel)panels.elementAt(i), (new Integer(i)).toString()); + + validate(); + enableBackNextButtons(); + } + + public void reset() + { + cardShowing = 1; + panesLayout.first(panesPanel); + enableBackNextButtons(); + } + + public void setWestPanel(JPanel panel) + { + Container pane = getContentPane(); + pane.add(panel, "West"); + } + + public static void main(String args[]) + { + JPanel p1 = new JPanel(); + p1.add(new JButton("One")); + JPanel p2 = new JPanel(); + p2.add(new JButton("Two")); + JPanel p3 = new JPanel(); + p3.add(new JButton("Three")); + JPanel p4 = new JPanel(); + p4.add(new JButton("Four")); + Vector panels = new Vector(); + panels.addElement(p1); + panels.addElement(p2); + panels.addElement(p3); + panels.addElement(p4); + wizardDlg = new WizardDlg("Test Dialog", panels); + wizardDlg.addFinishListener(new ActionListener() { + + public void actionPerformed(ActionEvent evt) + { + System.exit(0); + } + + } +); + wizardDlg.addCancelListener(new ActionListener() { + + public void actionPerformed(ActionEvent evt) + { + System.exit(0); + } + + } +); + wizardDlg.setVisible(true); + } + + private JPanel createButtonPanel() + { + JPanel panel = new JPanel(); + backAction = new BackAction(); + nextAction = new NextAction(); + finishAction = new FinishAction(); + cancelAction = new CancelAction(); + backAction.setEnabled(false); + finishAction.setEnabled(false); + backAction.addActionListener(new BackListener()); + nextAction.addActionListener(new NextListener()); + finishAction.addActionListener(new FinishListener()); + cancelAction.addActionListener(new CancelListener()); + panel.add(CommonUI.createButton(backAction)); + panel.add(CommonUI.createButton(nextAction)); + panel.add(CommonUI.createButton(finishAction)); + panel.add(CommonUI.createButton(cancelAction)); + JPanel p2 = new JPanel(new BorderLayout()); + p2.add(panel, "Center"); + p2.add(new JSeparator(), "North"); + return p2; + } + + private void enableBackNextButtons() + { + if(cardShowing == 1) + { + backAction.setEnabled(false); + finishAction.setEnabled(false); + if(numCards > 1) + { + nextAction.setEnabled(true); + } else + { + finishAction.setEnabled(true); + nextAction.setEnabled(false); + } + } else + if(cardShowing == numCards) + { + nextAction.setEnabled(false); + finishAction.setEnabled(true); + if(numCards > 1) + backAction.setEnabled(true); + else + backAction.setEnabled(false); + } else + { + backAction.setEnabled(true); + nextAction.setEnabled(true); + finishAction.setEnabled(false); + } + setTitle(); + } + + private void setTitle() + { + JPanel panel = (JPanel)panels.elementAt(cardShowing - 1); + String newTitle = title; + String panelTitle = panel.getName(); + if(panelTitle != null && panelTitle.equals("")) + { + newTitle = newTitle + " - "; + newTitle = newTitle + panelTitle; + } + super.setTitle(newTitle); + } + + public synchronized void addFinishListener(ActionListener l) + { + finishListener = AWTEventMulticaster.add(finishListener, l); + } + + public synchronized void removeFinishListener(ActionListener l) + { + finishListener = AWTEventMulticaster.remove(finishListener, l); + } + + public synchronized void addCancelListener(ActionListener l) + { + cancelListener = AWTEventMulticaster.add(cancelListener, l); + } + + public synchronized void removeCancelListener(ActionListener l) + { + cancelListener = AWTEventMulticaster.remove(cancelListener, l); + } + + public synchronized void addNextListener(ActionListener l) + { + nextListener = AWTEventMulticaster.add(nextListener, l); + } + + public synchronized void removeNextListener(ActionListener l) + { + nextListener = AWTEventMulticaster.remove(nextListener, l); + } + + public synchronized void addBackListener(ActionListener l) + { + backListener = AWTEventMulticaster.add(backListener, l); + } + + public synchronized void removeBackListener(ActionListener l) + { + backListener = AWTEventMulticaster.remove(backListener, l); + } + + private CardLayout panesLayout; + private JPanel panesPanel; + private DelegateAction backAction; + private DelegateAction nextAction; + private DelegateAction finishAction; + private DelegateAction cancelAction; + private ActionListener finishListener; + private ActionListener cancelListener; + private ActionListener nextListener; + private ActionListener backListener; + private int numCards; + private int cardShowing; + private String title; + private Vector panels; + private Vector images; + private static WizardDlg wizardDlg; + + + + +} diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/development/Server16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/development/Server16.gif new file mode 100644 index 0000000000000000000000000000000000000000..4e76682efa30eade53022a97f7d632312352f665 GIT binary patch literal 636 zcmZ?wbhEHb6krfwxcZ;r|Ns974jj03^VY_7o6jA+c4E)fll!i2T)z9%{;OM7@7=b3 z?}d}sFP*t@@$~hp7jIrZe|^K+%~vnosH&{4tf;zq$hCLdh5cO>z6Ows3@#j0_Bn3_2i_Kz?FiOE}O_;GrWHd_v`th7aSs0QJkAPMm%sD=$V)^6^l7E11B< zs~~T9QL@v*jsNR}w{o3Nd>NWA?$G(b=qJY|&B@Z>Cn_o?CE39sAU#= z<;mc~7_eymf~Aa(4A%Q*-8;47`Sm?{iN5E~p6ToET)$@3l7;iPZ{70wK$yB)XkY(+dr*t>C*ZY^UA{`7A9#Y3(3<7A<;dB_N9;vAiAnlajN&6gB;3FM$GrKO@uw?aYQr<0!+@}0H zw9iRdbhf}JI_P0SBop>C(IANIGDaOfG^nN{kO~8{al>T50Ucu~s8$U_5CaUv%^NN& z<+f2SBI>o%(J(X`aE6Wn5L2s%A&kWZA>?p4$o~=V4=Vvd5)l3&{_qoo z{beLUGpZdMpU_C3PCb)Oj!BUhv$NRrC?=64-OIak?#%o`0@i-_Y$BU|DtB=KW96f5 zyj#gR`f2Po&yw9*UHf4Y%dO8jQgib}lXC*gsY$8zHJuEMW2YONeL`U!m_e>KwOnry zamAmtSj+K}hKp6jSwCJPB{#Ugvp7Y+@)BqECvDuK?AA08R^2!PII~FIs1}gM23xsSSh9AZ^)A*P3YM9-dFFz zO8Q8Hrl4w$W$At`M6QTe&6W#u1~RkE;;?*YaEYAbsGjd>(RZe=YV-Ej^n2EBcH18L z?&qQq;r*>E@9S47y6$%lpv3}#0F|oH#)rM=wXP0DpHih9kUvoJ(W>5#LbR->2NfR% hm8e**lq&}1vO-R3b!`P&DMp*+3bd$Dz)3}}`~zg}Z2JHJ literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/About16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/About16.gif new file mode 100644 index 0000000000000000000000000000000000000000..04da95eb831806d5586b246423126eb2b477eb7b GIT binary patch literal 644 zcmZ?wbhEHb6krfwc=n$G2>$>7fBxKqdw1V2U9x-Uj&r9@-aC2X?up}fu3Ubem^d*n zZ=QpL*NhqK=FZ)`W5>ni%l9o>wB6S?{P5x1>((9Fw(ZQ;t)~wjyuN?`)qVS}?A?2L z_wI|^w*v)F9X)#c@Zp>L_g~q!@A9Ti$BrJob>zs+g9oqf-+y`U-ixPCKR9&g+RdBq zE?<6rE_MX*RH*|aN*&( zbNA1jxqJHboqPA*-@W_p&Yia(KmOl;;M%d{cg|mUx^4T3PoF+bn>MYluaB3P_rQSz zAny%sp!k!8k%7UJK?meaP@FKZ_ceGnHMg|3dN6c!@VPU#b{aXDnQCjX2)Xq&F(_zr zTG?{xsVU2O%xv;-;!rhaVz$;-RN?h-o$V~ku4%z#XJeo)&oIkFKuU~Fm)p|L#6WOc zvxm5%C_k65rM=;$77r0g84VqCmwW9Z60Ay{+uK%(I39Wb;eqs#4=oJRJhOgz{s{cR zZr~u;#30Pa#loQY&)+$}pt2}4J)=ay$iTorA*oU!xHM0}H#4~?zqqovBsI5KN5L~M tSx><+Cr2R&q_9{aD784Xs4O)_kC)5K$4$XKNFgk>NWoCgfR~HG8UQ|A?xX+! literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/About24.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/About24.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e1168954afff026f45a013c9311eacd0ef27424 GIT binary patch literal 797 zcmbV}>rYYv0L52?K;X(Fd}f(FTwiQ6(tn}f$Ftx0a!y)CYHVC_Fc1tZdx0&y zUN2&tH|RZX*N;hoQ81xbDIKCIWJ+ihP8zftw+3=SYNuK?YcYQ=E`C~B`Le#gtD|F( z!{PSyj0_A2`}@Z!lmb2<;_=kO!zwOUF*XK|j_UY)HIJtn8d3}l2&SiPVzEUeG7E*s z#Kgz(@hw3sm!mS7O(L;~#b%Mn#OJF_rWL(@QK_6&C{T%HD@0&;PN(x|wQiZrYBqm1 z7#8&Uc^LLUkVC1oD-<@l+-fo{A;_Z9xS-KER4Tj2^BYCK&CINr%}X%s)@q&0%Nr=V zYO{T@T2~Nc-e{aN7(9CYCm43=bk4OkuiO2@<@)Y)t~ngvQ1q+a{^i#%@8aS*e?%jZ zTF1sAxnf2KyX@%K_4RcWMPV3bv)N206OYGBrPA#k{|mwfW(NRN0L1O~_9uX^x4xpW zshQc*`sgtWC~sr8A1K?wYR^pV<~-jY40N`ZpH9OST`x$d^qs^82KAIO%MV51{PGHO z1N@T`&PI~o^)&Yqark|Od6)eI5|U2Dhy%+@ZZ`pGp?F;Uxs06{pR1RWqfZ?UGL?~6G-Pj1T}^4Y8B*VA~9H2RxJ~-5c?W1tkCEd;9htM zjNN@F9(zsR(A*NTRKNF1Oe*~1&9hhzR4tY631}b8pjaRbhujtkV}Q4%VZIZL)r0+a z!e1990e`rgtJ&na-WI>Y;|(Q0=LGBnSRa7!H#@nix{h9UyR-(3A(P4AjXLmRZ6!!4 zyGgHN)G=ykcNs)5qw*#ROsuE?soNq0q|z8P`hD6h5+0YCl?tX&!F(DWJVqkpaln~> D&2)*( literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/Delete16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/Delete16.gif new file mode 100644 index 0000000000000000000000000000000000000000..d9d1a338f4dea468baac6c6ad2a763b4af4d5b5e GIT binary patch literal 208 zcmZ?wbhEHb6krfwSoELa|NsAI&YYP!b7opvnz6Al0|Uc>0|$Vl;!hSv1_m|;9UvR1 zQh8J;WME*RkW{GQdq1IlvgYnPz5YGcz*)006+izyJUMA^8LW000I6 zEC2ui02lxm000APXu90~Fv?Zxj3wxD75QK&Mg*XpfuO2G35jqBkS3b4<@^Fd8Vmt~ zfY8$IdOe_!=%OKi!C_HSdMc&OqwmTzKC0Vjm&yw-r%p50>i{RkXzlx){g&rzvh5~_ ze`6wS4giFOhJ_u8iW3O{A^uN8Z*X~XX=iA3ATls8Fd$-iAX9a2AWdmwa&L2ab97~G zb1Wc9ZeuPWL2PUwQfX&sbaNn5Wpib6c4cHP4GKz3Mj%I0AXa5^ATcg54GI7|RwZ9~ literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/Find16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/Find16.gif new file mode 100644 index 0000000000000000000000000000000000000000..abafbe28cfa5b88476d5b4a5d7fbe5f557b42adc GIT binary patch literal 434 zcmZ?wbhEHb6krfwxcZ*~2>$>7f8fA@!h*u9mp?sv@c+u?PY)mbU%BGSwyh8M?|Zp_ z--|P+znwY#wXSYmUENwo$H?yP-QC^0CQUlv=a)8r{@Il)uf)ZbZrk=SJG-f&VM=fB z!h*uWPoF;Bym@oy&Yf%4tVu~pNls4o_4RddaM0A$l#!9)<>dugObwv;lZBCifr&u} zWEjX#3~V(HjRhV$V*U*d?hF>Xy=Me97@X?nxj1w_v6<=SxmaB0LeWNNTxX z7Fl!fKVS08;)zVvEZ?GrFnGT<&2S?8u<_&)+$}pt2}4J)=ay$iTorA*oU! zxHM0}H#4~?zqqovBsI5KN5L~MSx><+Cr2R&q_9{aD784Xs4O)_kC)5K$4$XKNFgk> NNWoCgfR~HG8UV&KiqHT6 literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/Help16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/Help16.gif new file mode 100644 index 0000000000000000000000000000000000000000..dc5c2d310def06e1a13b61de3724a682dd4002d2 GIT binary patch literal 661 zcmZ?wbhEHb6krfwc=n&+|Ns974jhQ>o>w5@AvTie#NxukG(y%^Ty8WFRx#EeChg&>sOy$J$vV@ae`4)OJsakT-mhJS%+s% z+c$N>_Wte-UG1yeYUkBd `MSuy|QylH!xM_13_`Zz&^i$v8lPGwaKTWv#XP#-NW6<(V35j*Vabfrzb} zGux|jTH93gu)VH?_C8i|5q_z|ZaTutnYc{N^`#Fhhzp5na%*tvTN@shTW-8=y>-b7 ziED`t23#A8L;@XCZY*lw#>6ngW22I*vjitA6NBPEf9L#y%A(Blj1mPS0|Ntvq)LV0 z(mVy<%;ci{;>zNZ)ZAhn1<$->Jq5>{9EBi|!eWJ>)Z)~lveXnkUM?>mHwE_~g|O5j M1w%apUM>b}0ORu61^@s6 literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/Help24.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/Help24.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2848d880e71f5765a874f913863aafc62579871 GIT binary patch literal 1328 zcmd^;`A^yh0L8zkTUo2Awc?zy_3PEt##+2}OE#!?r=7ZH(M($psK=}}f<_{>phy+O zs6i3rs@gEMa||!M01@OX)(R-fT1Bx&bZtys(yU9CeW!oN-p?<2@AHzEl#&<|o9_vD z0)N2(48tmwO1A@PtqUs4oWiU$+tF+OA_hDTs4n9)7d=Cp!88W%5ILL+xXFBfqz%-s(v%b1@!AoEzv|bm-mC@ci)byzq$A#Hg5}m}q=-RAE%i{g`N6bZk*<6{o7I zt4g#a;?8qfqb&Lmy+P7I7LscPwbh(zBAX~)5{vXA;i8bg!0*xaaMj$-*-rKhyItPi zI@-z_VKomo(+BC)ek!GpQYWq>@koRYf)En&wS3+@k2}ZZC^;+{iz#I`J#V5(Xw*I` zrI$h$kV#w;N5Scu?P3fw$b7N|wwV7hn?9Nh9}LUK%lacd^cGU@sg*XR)~=m?JuSD$ zC)Ov%&EpEIV*1te$h;d{{HzZL@tgzJv+aMdH+tF#QT4)E-ZR<3fnmNnd zlwnF~Rw`B%GsYRy8P6VS(1`qS;i7I zb`yTR4OYQtnz|Di${7uaVa%Mzc)`VTsDLnY~l)K4&A@P&c8wfCkst6lEbE~ETt zd-e1*UVmG}7dNTrQ^i7Yva!k7i@J_1yBbErwh0hX#mG*M0_~i2IFWiNAQDTCy&A zt_8Wb#8(u*TMWP@XGf-u9=K{8GO7Mg84xDEp6(MAKgbSz)|lcEO#3t!8CVjD^m3r3 z4ixm4d0n|64Zv1v7^U$;`-Yv1Jr_G<&tw=VW0lcpF29pD<#W@!xkFZT_4+rxRDG$N z3D!i_<4hg0``+MTKSJl~1>BAnkvtF5J`Pg;d$~S-f9jp7;4#MY%VL|;dAvaF&h+uhOLA^V|2Z!3cFt}> zHfe7ZD9Ch1JGR}b$@Kp`7n2{CeI+>q;d(9^dlziT$q+l`0% zWakqvOUu4CvpG) literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/History16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/History16.gif new file mode 100644 index 0000000000000000000000000000000000000000..bc278f9ae9b15c27ba6bc9b0541b7836bae74fd5 GIT binary patch literal 677 zcmZ?wbhEHb6krfwc=n$G2>$>7f8fA@34PlaFFZGO^6rNERrPhtr%gT5*1CSy%;OXK zceS;ynK$>;)G7OWd$#s;Z=N=F|DuKGCQsV6VE(E3^G?p0ePrg00~04~+rI7TvZWX1 z%s#wg`Nd^R&(E8CbmNBG>(<^_wes?^rRSC`KD}t+$=S0GY}$Bx?V77wx7=H^`ttT| z_gAhsw|m#)O&f3Q+5LFk+Dkik+&^{lLwozy>guH}EgSm#_jY&hm^g8NN5`hAQxA1_ zZ*6biFk!;3o}R7q=bxE5^T>=Dhv&>WK6UE8<;$-uSa5pQtRssSot-!D#PsR=dwMob zo3?kwic8CuU0AZ@?5b5)_Uw7Ne*MkWtFIh8_GRCuwZcJ zO)%lJatFo%$%OY2Sjf$+DV%ppGyhzJo>tkk? z(C`dma$XkA)T4T9g@>@BA)`YVPv^x6CmkCZ7!?2cJLeZv7GqdHuWrnE=x-xun^SqiaJ!dG7)(a9jF`I*cf|Y zV;kGp^LNirY~MXF24fG54HymwOyof%;8ZyBDvm4bEP_9w_mA&;zkm6>KJQaGCy#z~ zF%^~y`*R((q4o83uh)yYqiP~T%$6>RC}^|HYSs50_StJ??KRcnI<&IBPKCu7Fn6_h zoDtVxK;M$KGQCYCYa_wLYW32nUF0S!iD>4w`8jM~3*AY;>m}l_P%uPkwn`=87P^B< zv67oiB%+bc>ZQ}{3VB2#4hh-=Z5%hF#i3M0q>_+CJR}kZHR^Gt;=V#Y0?O_Q1^uj6 zr$PTvrHm-#VTpJ^(B8-Ac{+?!M#DqB?txY_rcsZIMFGe>W9ry2Ck*-rdRzQDvpLrbb#{ zuR)`gwY4%dT5;=^{N_!NM6zQr`a5?tWU>Q`)nhQax;i{{7j~s!RVz@9TZAubF-b#AK-EWZEb!Q%S)qm zH8nv*qN$-lBN7b@g&~1ph|dp_$rh0)#ODXNTz_k;i^=R^FuKWPNFuq%=lAn?ej3eA zrP@I7zDzbEkqiq2K|bFvlZBALTn@)m zwR%jY8kKM0kPPbe6S@rw+NfGR>U2IcnWl}#NxlAoP8Zc`$2FQ!%f|ho8Ix%$7+ka2 z9_#hvgM)wg{l9uVD-OqeXXl*V{uqL$hKFBtb*MP{{KqvAo&aRku1cy)^FI&$txF{cje~p&YYs3dG~`?re8A0)jlALR@T4~MEnFs?^$He zjm2|N+VH}TqU@2hv}4zijrDBOm@MDF^^I8U@tF5hkB#iC4tySL0M75pT{}yGZ_T3r zR)LDm@W;OeCTz)mCt)&Ux0^Sgzp&?9CdwknARvD6H6p-|(Ifkq722`Mu`dB_8x2{xttGVMpQZR}mi;vD4=Y z&&-=+;Z7`SIPOS_G-iK3BVBp{b^)LF+G(sjoO+4pL%d!hOrI-Cv4hlYk(W5c_JWV+ z5nJL)k{@L*<`k26$rCF=Z||!qJ`vZ=Ky5FKNnVa{5>KNened9`Qf~2Gbc9#3J!Km# z{ok)oT(3Y^UHRe18sHELg#s?2fx;W*!09WOtFBk0t7}THRqq3G$}b-PJ}WB&3O0k) iKtXABX;p1$$$_N!FY`_UrwV}crB%Se1E{2USk`}OG^-Q< literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/Information16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/Information16.gif new file mode 100644 index 0000000000000000000000000000000000000000..5748e325f150438a323e2dfd3c64ebbb31370c8d GIT binary patch literal 661 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 W`M4>#2PuT57AY9&8Srv3SOWl92UWNL literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/Open24.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/Open24.gif new file mode 100644 index 0000000000000000000000000000000000000000..2086bc296307753867ddb03be7f1a1bfc94d43e3 GIT binary patch literal 462 zcmZ?wbhEHblwgoxxcZ;rKM*`W`~Mjbo%#3l^xr3^|2#hR`_ZXi4^RGhaN^s&`x}SeUO)Ky>VX$m_CL9>=h3;{56%kb3A>i`?^x8gV^Qz+ zMZMb=_H3HlwSIQzx>@aOX11-G-nwXF!-5I*^ZM%M_SVkqs!lUDW?*1AaNq!tL<5RH zSr{1@EE#k_;vhdcu+2Cyr@%u;s^4->(MlGJ`3y1(Iu-|pG5VP)WbM(}!n?LpXZF$y zCA)S_l)GB6qSDX)-n$>S1ErRQ21G|`izendTO>&v3#m6UD)SkNb+oxya7E4Jim&aQ zTDoB2qQy%VR#paw6f#6NC$Dt!*|fQKYE7q+pjw}@V8{At3`s%_GyD1UlS1cvGH7!t zHFD`C%sb<``KI@VrFT6X85IBdJLeZv7GwoPk7#DV0y9hrl_L@i#VrFyvHoHu9Y#Xr$ntic|`qh+poMi9i^@_{^mw_veB2b=gA~G2ixdp?40yR1tO0)kMS%bS literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/Save24.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/Save24.gif new file mode 100644 index 0000000000000000000000000000000000000000..bfa98a8df0a1b7634dccb78b9ba0c6bb7e26de5b GIT binary patch literal 266 zcmZ?wbhEHblwgoxSoELa|NsAI&YYP!b7opv8Uq8vfddDCBoHY6WMO1rU}ew&aX@Mv zm}??--MPoYBKT^@;xsLGt^Qq`1yu%Y5l2Lp?L&#cEP4m(zRzdkK;)Yvok@2+DPR>w95 zM+*nG)w6202Uay?bo=*qhE15*%saI$Wi~e_gW^Ab=lp`oqRjM+5(Ogz0|SMmN`>Ik zJO$s(f^Vuhg8;?$zD)D%5lE-xQ91@|C@u+$<2 LLp=jtE(U7=S*BxA literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/SaveAs16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/SaveAs16.gif new file mode 100644 index 0000000000000000000000000000000000000000..8d3929c8aa7d56483d4d3b218e840ca56506561a GIT binary patch literal 255 zcmZ?wbhEHb6krfw*!-UX2>$>7f8f9Y1A|0c+q_SoKAk^*{>+&(hYlUuzkh#TUS48i zA}=p5NF5j`{$ycfU|?d<0r5a)Ft9`hobY_j!t+{2i^Dr0#YeCvWTgVz1vU@Q+HS$* zqqCo-@t+o-kYp(HN^RA}wBQLB{8}7Kx`b4`+3&B=tf*sXclmKeaE^!a#tLh}iNblo zrdwU2w|v}`s^7`Lp!m<KEtq$a^`!1JL1WPbB z462%<1q6tK7)Z*@bz!`gXe=~?D%gOvDz6yMw$$-3I^axYDv2L^9yFf1*@Yp#YiTXMq^#6W=eNR3m0D_2s14nxzUR{uNasq{t2@aPD2b!D* z1&lB~zN0-qiQq@B2_5?!nZuDGVLA-1l+uL-(HkIRr~6L@!a zlNFKGj~Ce40ucZq{!c@1aCvfRXJ~XFGB7YOAYyqSQ*~}2O=)9tZ*zHbbY*RGEFej4 uV=f>;Y-}J>X=iA3b0AV>b7gXNWn?Z53Q9~yAV*RlR%LP^F)lC-3IID(yorVY literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/Zoom16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/Zoom16.gif new file mode 100644 index 0000000000000000000000000000000000000000..9e488969a627368b6d64dd45c677ed60a2e08bed GIT binary patch literal 303 zcmZ?wbhEHb6krfwIP#wX2>$>7Z(xvUYnwN5;>vmRw$GTcVd>JnJ9b<+bLQ#Mqj%4o zdGhe#vny9_e)#aYyJu0JE$`N@!cU(*@$&K>IB)=@A1_e+$->CMAi|&nQU$V;fi+S= zwJ#;o?|=&Hvl(VS#+*6UrhJQRno}NI9cj8?%qZd5`q07nu87qk#XucTwf>`<0(4nf zm^DqWE@Dw({$SdqwZ3MGCkvCtWQGZqcl8dP|EVXS-JopRqN2#4_|M-tzo4=xGd-h3 z!N|bCKq0A8A-FV8!8bFxD8IO}xFj{VSVzG#FIi8)F(*eM2&AxBAt<#twWusLMUR)u W%g0T@JxC!ewMfBG&w!VU!5RP^YG*b8 literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/ZoomIn16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/ZoomIn16.gif new file mode 100644 index 0000000000000000000000000000000000000000..2329426e4817c9edf7f8db004d72cc096d0888e0 GIT binary patch literal 304 zcmZ?wbhEHb6krfwIP#wX2>$>7Z(xvUYn#{7GN-F+(To`z=FQu-di9b0`>!88diUnd zPe+elc=+(yl`A(NKYli2=K4efhC|cqczJmb95?{dj~6KZWMO1r5Mj^(sRG%_z#6Wg z+Lsc^B%ClU^RdB!4P6eOeOOdjvj2)OxIR*d@ReD)B=LZ?AqUrigBxyqRp{(w+?YL$ zttr#gbTJFd0|tjCE%tj;N>hU5e3d3u#+ICa|5LD_KCM|*k-=J#LGhozbACZ(QD%BZ ziGq=Vfq_C&r9yCNo`P>?a#4P9WpPPrZn2JnXI`?Nf@4mOLJ&w{u|iO4acWUnYKk5& XmzR&5f_socSZa}ip`HOR7lSnb*>7nx literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/general/ZoomIn24.gif b/agent/src/share/classes/images/toolbarButtonGraphics/general/ZoomIn24.gif new file mode 100644 index 0000000000000000000000000000000000000000..dbd44778a3db23e9b0cd4754a3980c57eed59b91 GIT binary patch literal 484 zcmZ?wbhEHblwgoxxcZ;r|NsB*-+y}Z=JV@)OCLOVcK`m-B-76J->PL z+08Qtu3!In{rZQ?>!x0~@bbd>mnTm?K6&!d$&*(P9lCw!(78hgZyz{t=D_A<`zMy~ z-hE~Ft}DCex9-|~W%JC2b?c6=Zq8c1{NVEC2No>YxnTaznKL&{DT$gidG(}8YbH%v z-QB&UrDbkInr|8q7&90fr!g=v95`?QND>JYf3h$#Fc>oEfYgKhz>ES99jWdO zPK?KL4!QM+Kk%?UWTV5^!?jw3sj^N`N3N>`RXI4f_lx+N?}}+yc{NgA?Vz@l zfrxsJKzfD&M@p-KfC`TyTX89a{`BdU1`^!SwV?)l3e0-*mo4w~lwuX-@R@JGAFplD zBRFM&6l0^7L2It^jxf>W7J~y554r2N_t#C4s zQR92^)PPxX=~I`>A6*?86#w}<=ND8KWu|A8C>R+S7$_uFDg>A2Dfnh47v&dM7MG;v z7V9W@<|XSXIOgOi1c4M5D+Hw$rxul^rs(lKX8IF<1itjdaLs literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/navigation/Down16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/navigation/Down16.gif new file mode 100644 index 0000000000000000000000000000000000000000..39849181f1d0b1e96de5fa17ca2a5ee5c76f9b49 GIT binary patch literal 185 zcmZ?wbhEHb6krfwSoELa|NsAI&itP_^9%z6!+`?_fFuMc{$ycfU|?a;0dYZU8JM*_ zcHQ}BaLV)8=3JINChHp&3TFM_eZ(=#VcN9h*9$UbE^ce#`*bAuz=8=A7#I})`8($q zR2F5XXOt)y85kHSBvmQ|m*y$>W+oTq7grXSq~;duD0t>2>nS+qr`aa%B?Wloe`uq8<DzfNY?w0FbRXrGMpVq5roS zr|5NTTs3F4jOpB?DU&Y7E|}Ky^0?P~&&#X~ivRqb^9w4AGSf3k6pRcE3>1DzfNY?w1dwewrGMq=xBSUG zTi7}q?lDxSv??7fc($_khKAFNm8;&g?v2$so0GZNV#(?qRV(Lze4zm}<)6QEenDkX zW_m`6f{}rNfkINHLU3uGf^TMWQGRh{aY<@!v5tagUb3EoV@{4j5J+LMLQraPYEfBg aiXJbQmyer*dyqm{YLSAWo&hfxgEatqv_7o> literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/text/AlignLeft16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/text/AlignLeft16.gif new file mode 100644 index 0000000000000000000000000000000000000000..235e780fbca9ba3317319d92952aca81bf5f8776 GIT binary patch literal 165 zcmZ?wbhEHb6krfwnE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY?w0FbRbrGMq>hw?KR zw=l774&D~L#I`5gbe7752o1F*tZkRNubBk__5JgA&M&Ae%1qBFQ7|$vFi=RUR0uB3 zQ}E49F3K;iEG|jSE!I)+%uCi&aLmb32m&cARtQQhPAw`+P0{1!^73(0a1T-lOD$3` L)HC4aVz34Pxi~XS literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/text/AlignLeft24.gif b/agent/src/share/classes/images/toolbarButtonGraphics/text/AlignLeft24.gif new file mode 100644 index 0000000000000000000000000000000000000000..85631ca5b01512cb6e9593dc86661f5cc1452b25 GIT binary patch literal 178 zcmZ?wbhEHblwgoxnE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY?w1dweorGMq=xBSZ7 zTcV^I@5P*6AG7F0$udr_$FJt({aP#jq|88Lv-jV7es<+Cr2R&q_9{aD784Xs4O)_ ZkC)5K$4$XKNFgk>NWoCgfR~HG8UXaLJ#GL1 literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/text/AlignRight16.gif b/agent/src/share/classes/images/toolbarButtonGraphics/text/AlignRight16.gif new file mode 100644 index 0000000000000000000000000000000000000000..9c06d30c4565704c1c537b07057bd2fc96f91d29 GIT binary patch literal 165 zcmZ?wbhEHb6krfwnE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY?w0FbRbrGMpVF@9&^ z1yK!)>R$a?l_T&uvd3cTObfNATQ{7wzPc>{sPCV@bACZ(QD%BZiGq=Vfq_C&r9yCN zo`P>?a#4P9WpPPrZn2JnXI`?Nf@4mOLJ&w{u|iO4acWUnYKk5&mzR&5f_socSZa}i Lp`HOR7lSnb#XU9| literal 0 HcmV?d00001 diff --git a/agent/src/share/classes/images/toolbarButtonGraphics/text/AlignRight24.gif b/agent/src/share/classes/images/toolbarButtonGraphics/text/AlignRight24.gif new file mode 100644 index 0000000000000000000000000000000000000000..25a77d35a8162bba1042ffe4c05cdda1bd3f1030 GIT binary patch literal 178 zcmZ?wbhEHblwgoxnE0RJ|Ns9C3=9Vj8~~DvKUo+V7?>DzfNY?w1dweorGMq=xBSUG zTcV^I@5P+fk6Co0WEp4E<5zR?W~~!{Qf8pC+57LkioDE^7W)8J;WME*RkW{GQdq1Ilv00|IKvfPS5n6 zn_`_>wF=Iv+Ryvja`rhdk|H3WNI;OUKaXLPBtZZ0Kze;G_C=PPLP(sSN{m}vi2sX> zETtHKwu(SymSV+C}Hxdk=YC=@g>$Pv1Tx&x9p16$tHvZJ%qqd{(RvbJ!PA|v7W zvy-3=Z7Y>T&PJ>eR`oJxa-Pv-0brMLi}CK%L#7%3VVAKVv&q6qZn@P-?~Woo6R?Z_G1n4bnSXe0hGd zXbm|n_;lOsf6`d;$paN;Ig{4732P#$>gb9HW5STnp>=uU^%Lp9pza}(R#I^RqZWHg z?KR^<_}|rRKaDlZ;AU}!xG?&?oKEAZ(c48TfA)(5(F-^)C$ddiT4^9;2{ji!Dleuq z%UZjUzBz?bEi8B^0tykhn@^N+qC#VGu!u+TKuAc~)E`f0?<~?Z-Jr?L8oG_M`m zLT=&%dmMc;XYbb?KxpLHLHvk?{^Qah4nyk@sr#E-IIOrd(5A>fILISE3Giu|+= zqn)55l}pcIqwr+umg3W{itd6w$B57t4H(~bcKmKJPp`4>*MV{d9y0-3AZyGWuwGId zd+O)LwjZ<2F~wKG1u{!D6tYhJu3S=C_^lwWywcR>Sxu|M#A4_e4idZc`|6Y;kE+9h zNkrKN^HV9X)>_k5mYmE>q(KgNc+j+o?*mE-znHHL?w92~qkFMx zeY`#6YW`|(@fF?94VG>FE4i@FjFVEna*6|7H)^hrf@=8AVbe9KzFCgbu2Ei_EY;bClF=vfBJ%AtwGZcA1-tJV~o7=ZlsDFiFInI1iRUGu_ z%ueB?+KD>39C=2c*ze>v?yg+;Cg9zKb#)3ari%p`4Pk!1K_uY054m)3FU|0+`0XY$zYz_Y9n_~%R3s+?I#+yluE!-xQOju2R2H=avwGHBBg1UhPiu>@8CO16 zKzeD_ovBxB*%?OK+!n;id_26zHYAQ=_wHXsy?UgDoO?pP)1TB`F&Q!PI_LQl3K!h7 zz&;5g0}vaZ$)eg|{JPjg_tIkBL(Z8e)F~Ucur?M-T(E^W#m8*mVV+AaK$;;Z+0Lv< z5QU|f&F=TQ02rkKD-zGiF2GFF34U+$#kx*Ix9BsA`cx{`wA@#ZR|}1IOWUm)2o2?M zn=$6GY{EOn!Ezrt;*&QYG@lrGLHVQAt(1ob_K^odFc`uNB(LP)cD-)Z=@X>rT!C?v zHluj(q?YMWM3j3`xhXkxH{eclTLIH3 zc7J0D+{Sq#<(p_bp0&m+7Q&~KcX$Ks>jx`Kc^@`H8dtlI<(57q2(2qDH5MDHJbnE% z0IzYS{=7}YN`Gj66w3$2=bgf_@09vkdAf^|OqmMTJ*N=M6|)N~k+wR|DnmH;ZF9P~ zB5?-?UgGT7Hr*GH$2+M)U-l)+j%US@(4@fQI`~CrpQ754TS&dsk*Ca^w0HnlkIex2 zBKR^)Sexp@N&5`SB}+JmgTGhD^>E(W+fod(+FI*oY{$`+w#WUs5{m`*t8K52UM^U1 zF z?FP`h)ro2+#}Ay#zHzF8r$AO!44VyMY^GAS^O1ZAEirHOL886>U^7X5{7G!irIg?j zv0k_E{SZ?W_e}QizWriNCs0tO+lge?2QW6}2uIF%!ZF&D@Xgpn^|Ji(zF=lfW_0%m znwofps)Og0_^_*Qp4g51g9+J^bv;|XyMq~g3m7nTeftp!b)=O_**FQIkH*OdZm?n!7d zx8GsP#N6r{WM|(xV&{0Qe_NY{riujXoR(0ORz7!R=A2>^+CMK#Y<9O4Ih)iR>@6#- z%2)KySuqlia;a$MgzIO8JwIJSAZc}5OGHSk#$vV(($o>!&Q_2}i#R&eKh>xwtPAj= zmoXiCOP;NGq!mtH6{%=DZRQkK_dEdb6rkSzvVvyTqnc2)2#RUKpx8mZWmMTR0crGj z?g|ToXFf?Gl|UV6o_Rb@w8-2uHc`rBz`pbJdFBBA_LDK*9=V>mosN-0SgAt-@ereB zmSPX?axzsCxf7|w2AtS!=z%e2SYMtGt-`V`OLKU3t0ZwciqMRvu$TD=YdEu!qZI!D zw?iyi;moB%bI?X!(7=Z`oS%CEiv24e?FQwyPv}jpnY78366GvfzE4bFI;<_Irpr2X zy811dCbU6|0EQ^W-b6a(YkUs7(p)hJ{doUwW4BoX(RC^cKQritb=X&f zaK^LODr8v%#7c_!WngisY7UjEAY78T7`v=uplkePmruTCrP_`|t zae$BTFyi$ytDhNtEknFZ3A?uLi=7R7zbDT4$h<=bT^Qh`st=&%_aH7nQs|&9ZZrIF(zfvi_*CSfG~uSRy0VGfL9eE~G)9-k zpdoF|+Ku?y=L>KvE1}Hp!2*r6mbVQ@3~FF2JDHJ(^7!MM=+9?G!SAsFQS*kuYT5;q znLMqiZdA!|Wc-Bg#3o$*k-TIhKv0&_`S9cTGxOC11!4R?B2rMh~OM2|2^$SNe7^syR{28k@$GO<<3 zgpZck4_|<2YGLp6@la4eNrIOnl-G+UL|(h&T$Hc5+GELR;rJcq=JwPX{GrS!G%VY) zCS%nHUO@#sb*}|>&|2S4jYLKqPCx;KO`dH0Vc0|bX0yE+B-4WV$?+2SgxV9#Q8<2Q zKG7|m-}@Mp9_=rF&Z5bFeZzS&eHU`FB`+1H$oXMNRA3G~g?MDvyS4*GGMoK(QkEGP z(h@Gq8t_QZUx3=qhmXW{R(STSk@vV|k**qo_)CcTuiIuq2hK#m60<6FX!*~o&@1MI zqB8JfaQdE(N)6DIvE9xaSbF?6IcSsl16Xk<6Q(+r+G5I^aje|&QMsUpA#RQF;h|@U zK#)b)k=;gG=Unxg8B?xw1mCf>6Q8+kp6k!tD1utz>_pW{$@|qC4e<#$#*4G$CwMwpNQzN`o1gH zQ`{&#bM{EQs8E)D!Yn9p(ZsMwW_jbcJ3zc)xUOW_Ru@|g|J16`U zv7@g})*f*do^n!@yA^r|Mj+a{U?}g3E9aVm^-SVPppb#^-W#}H(I{dCO zOS|8*>!ubMQ2Q3vF%qjhfS*n2t~1Q8-kKPyKN`l#bNRt zl1g3x0uBAXQk;fC2j?Cb8dtQKBsOMP^WklWQAFrl6$*jf=c|WH4`hP-*YyXsQ_ACgAxq zR73*+c<0F1)ExyH8fh&@9R8SHO}CAj6`xj%*{3um{J3TSS0nU?RF2%_Bz4mkr!!7a zpaESq@YmFsgZSO0`)3l^veZ@`oBXV%HvsuVTS2C6d^QU=@45<;Q=gM-3MSd4VJ~)S z_LZ9jxi~h3VN|V6;l5b)(OQo-bxV=V^U#^9?8;*78h&ej&F$b2b03&PZdlYD4KC>? zLzVTQuRM<4Y{i+(d)7=aVIE4HCQsOBZ#dl^_i9JPJi3T>w}=DT%W_f*#4;>q0-lJ+ zpxikZPoBQU+0*qzK%x>#ZhzWkra0M2`c41=5>IFS?xZU-Qm3yB^^_wRB41$=tzrh` zbd{S-5_p)s0<#EC?xW8^p$)B;S4>G!2lS!Z8L)DDbvz^5a73S9WAt{HC{Z$0PGdIs zlO4trSvsgib(v%+X2%|Q#EDj)WXq2qCV&6dV zF4{9eks#gMaMj*Cu`WJC|aRm{5Y5*yBgzou|PipY7;m$y1D za>uv%UpdDVLebVx0`1=2|&&X+LJF-m1Dbl5GKG`EmE z&259~B#gk+$xy5sYUk?=QV9ysk1lPUn>d|GpdsdUDWX{_iAv99w8x~n_B2wpI7KsB ztk`|%0Y&Bez6XQU*iq;E2)m>%JkKMcNQHK2)BMnl)aWND>oGCEJk1pe=I^X)!$RDx zCbDW1bo1r5!10rcV*qVYf(o@d^63K9o)v!3M%c5!`8Edx9ZHB`NPO?MdJ29v&!tFZ zb)s!8&KEcDzBK_Io`*rWG#j z>o5?fZE8YR{Wh;|ygxZofA*FcrdMqriq-TL`V8AMxXA?8u0nzZ6HOdMWnR#;3`-== zAica{<3&*H(;RpGT)_tAzQwGqj9bAzLx3i;ME8}W52MrU;i@^;zx10xd;7EiYT)IC zLGS`Dcy9k%qtbiEaD?%cfJ8YB20ryZrPWo{K*M?Zma6@soBrBHIOj zRb3&@N$t9M#5I2%K0V_}GjChzC?4)&{u-D=My^nOeIRoI3~Oa$%9OkANYY_aaR&U= z+Y#J=)VY(b1)^~L8Ad`6LtazMq)_+L+G}HcGb%!1+aUPNFRnv%sO7^6?rymE!%6J) zV^2VIO0d-!rurp0|8kTZxZrHoM+yoZYph?b7bVpDrj!2-)M!%4aP#n$c=Tl8y2H#kPl5Sv+m^K%31oNJ!RgmI{^jh&0QsxOpIXj zO$%x}(_&Rk9qe>MEAhabFb+k8Df}lY0a9HTzSjr98)b3ibfDN^RlW(#LYmJ)!TL)=jaXP`d_N zRMt+ek?9A0a-8YAFCda45RfQXhSJr@KtN*xKtPiJf7=%*{Euzl_y5@T73LQIB1u`eDzQ4T z!u0NYo!5Piw*NlHr_0_%7xr>l>apIygtoC~adbfn`p61cd{NYSTBLz*%+YwjD|uM` z&H{LRdA_FdcnZOgJ?C`COw4Hl#b$-$l{sxpAHFDC{ceTrz+FGy*o1RMnR;;-zTqKp zxfKBa*lWSpMHE(&2D>a-MB7I2Mcf-@S>16ntuzMaoXvD9r_dXLMCF5lEtHDfJ6qN4 zNY74?{A4=9Rcwuc=ULzpF&UxHJa4*ONRj29cc=tKiM$tbtqL!jZ6#F4gh&Ut zFCy zEo}%s*3pE2*$SV2vaMAbFznX!y8nsEY@INSeh`UACg1>xqv@SGMH(q5W!`cX7Z|jR zd#1H$$~y`0d?^)?ix zUK33cD{kC5;(g{t9&dLvTvOXf0t3~%5GL+u@_?Oe07>dbg;8N04uka=jT9(-BpLO6 ztopkSkzF5jDWe`(>oxGXIu5@295v4lM5==7&Y7(!$CHID#v7g&L*j+GR+Q)K$AlV+ zOKLQZC@S1qy-J{B!qHi7b0vIO1gJ|Ze7oq#QgLsI@25)8%f~H-TLXa2THG6uPj)s6 z=Ky0{240U`;s!_%rb!e9ZhY zjdd1pM<+6MPAktM=`38`r-1wl(fu|Ymmc!QdIWrPi8-ZE9jX#$Nw*q7>T<9OA41?g zodHUpk@k+X`ckvP%*;Z7ePa5+e3I?_u2fQ`H*|p>)})1L+_mdlutlmMY2GYg`gA!X zTs)x3VQshX%(;33S)yy-)+V#Dy6~dkxPm?gems_7F@G$LUKKBa!y^N39H{$F5kTLJ+HhDJn^t zLRWjbNX%|uS#5gLy=8gEgYy>Do{50!SX!g-&L4>@pR(|ejU}OdmB(lacYn7JyddD?G9lR46D4a@b#N?8)_J-DmY8>BBcL5$bg)0{ zeYlm0L+dfwrvChJ`0`N=#BRO?XZdDNZJq_;rD z$|f;dYPJQnCgzcck)=x{ms>=ob; zuc$65)l)#Gx*E9f(UZmmJ}EF$4t|0uS=!?X?-{Gn7nVNQ|Kvf&YT2oGFcaZwrnyq_ zjzI*Jw={*`D8>o}tg5g7BMWcdBvbhW;^Fp72;m##xf&0`_wweN{;BM4hle405O;dY zz>zJhZ%hJJ7$Bk3@0QhFrdU)6e1l^dv(E;FPlTy5zP@#;siJDXn%! z2=C%EGL4dj>@q&~>2Pkny<<6irj1tGnvMux%ZDC9sqI*&TQ-_uU5_U5&R1DU+d&}2 zd`8)hwoBo&FBHcJpDfMjc7TXKXD@B9Rjg;1)?rkMuxX-;R@6@RJ0HK%tTQ2di9mvN ze1k=HP<$|h_I?Dbf2Tze5t9em(UhI3!k<_T#wkLbNI1+{NrvKpKuDtq>NYSLO+&$# zbK`QangAh_fAC5Zz;zo8PGgt!TQPIPSOicILG4J_bnx&8Csv2A7ad zMW?cEVPlg4R2%~sbrepDj>_LBa}s=*F1KN4(33#Gx?38(qh8vk+DKh=@3r{#!15oY z@jg7(T-oP>egUA!fDDXumPw{7w=!*0JApe;v+)rv;mtLbBydhu-F1AHTbw#aM6*Y> z!9-q^`II;RPV*hUoUMCr*kEwOB~?J6)mu1)3Op(UiMp}|`K}?`%jDtix|@k66{=*D z0||{#?t58SIqoSfa$Cro4$-{%o^-7~Uy>HZaks}Sy2Y5a#WMIovei{M7GXIzhY`Bt z7Gj^bhu>z`A7V4Tf&}wY5(dF~(K9*BHxPuHhi%!8@|@jzk5zoFaYx*wFY`C+#m%L7 zA{4A7-y@ukx~qgaJ35!r!SH{9S6*1iLQ3VaSl!5)5%wwmav<+idJK=`PDKDc4-beD zhE2tS<-wYF*Pi0Ne6W9d?fABrdmu<3?sRo;n(|+JB{W%So^5c9jyQW?ru2FnS^I0K zVU^@&#vs8`ZSD)wa^$zyUf0b+rB)q)HyPx$P|u6c4Fh-SA)=prBV#=)ZGD2S-%4VQ zhgW?^8I{#bIv=qJg#iV#P^RSC+%S14d>O0shJwH;56mjE!iYsI-WC7sezc0W6bS+6)||L~Gwir&H=?j; z8uiRlTdCDm+8AwmNjFl0o-Nz4b#ecjPXXP`5Bup#=MOLs9g2u@I6Jy&TI=n2k2Af1 zVxYK68ws@7)DW^Cx>A^vR@i@NmdJ5P$n)=#}%5e zsETf`Fqcz~`veDtw%5#en{p2^6NY{RTu=a2p4U0O*Ci8koV(2krzb%Ff zfeqiB$$eJYVQ;F3m!adi$L(tRLG*T4(S-XWQ(d7n@w&o_wzNJyjyI2iV>1V~kln@n zu+zeudL@hmk?Kv!UL_`W#hgK>+_v}ej&8vkd5BEPy$Og1>u=BJu*f~PvuUxmfEC@SSh4gz z&SbjP_4`Q^5>YK|267{)h7v~nn+g1V?6dT_Lpc}BZ|;Xs8I&e?Uc8^Rn+)^$os6G`L$!;9mG7mZPsD!9skAA9IR8B;Oom%*|fLa00 zHr({qe0N1(ByFEPWu)|MhiwHuGrS~sLmtZ(&ymFAR5d7^mQ=Eo<4Y2^#oU{HlS zW&zl?wJLeFOG#6c0MU^%c~J%*`hb0>O4ecvV4v4!CPbzR&oKX%v=+nh@WzsyUhl=^ z`dNcCU=UM6u|Ds8q8EkAjbxbsY2>!ZSSK8m)Z*;|i-r%>5+{bybsw`0kByNpl40eh zSfVY%O@+JrLw{ylI(a@LW*799=W5sNkU7g@Wb;IA9V5RQXXNLz0$)?Oq{nNF`9Vpl zTUb*hQ%JeJC%}U|AgKtL&|oCY%=DS(@KKU2(7?Iw;etRp{X7NmM66rDk%b!H5C|L< z_D(!$q*^|A4=Q39Q}0BmqVBTXzZYMwoH3RNw_(kox^eE-Sv~FA*MRhTF7_;o32q{s z?QBtIYlSEdrb~FSdEV~c94j4;Ve#rh?gsE4`B2Og=ior!oN&$q1jIFpJN?X31oUik z;9)#@5j^JN9yxJp#QwAt{)`MAv>?6naT~?-gE958c0$v!5L^vkcWCdd;3=632vjb^ zb^kR3y+B`wnUy1IfiOAFZ4VUC4WbIj050|pf#1Nlvh1ikOIzG;#HTisxqS{SYO73d zB;8%8BR1C?B*-l4vEUQq7^Dwf3*M>w~rQmQYupgi>UP zuq(WI$#rWF4#_%m;ub@L%g zgSDH1Vg>uQU*0Rcv8c{@)TXAFqJd#;2+zp3uq8FSigac_d5rqTx$CB>KGYZ`T)$t1 z7#wzr!WVCc#4nL+`ZTeRN(s)^X;vhKJ)Z3=`&4m!nevG+Bh&EgPMz_9m>*=Sy0oK? z;xk`XskI7j%9UrB;wsm>=aJ7ZTbNwusx!%munlBrMNmpwD1n~rD32Y*efXT`u$IXF z`Wrc*EzU)kL>bqXQ5}l}B5J42=&YC!Ykb}e1|M0nyT%K}ameAf*jpNQC>D$MW}b@H z&?Tz|wZ$2h%0$O;@BkD8N2AaeTEqs&zE`BoH&5@D$-H^Zn-k{cSEl04J+lTG)M;3s ztvDXsD4-mHbcVb;Lpch7BIIuBnC*Db45l(URxr(uIWi0vx82AgWX_B#4A|)CaI7&H ze3bSKKWJ951!K)BBCD0|CLBZ?Ah(D>d-={}_nK}`p-m?<8P)pwCSQ+rkEl?TSH^o( zaQS?*WoAP#&ttq`6JziS`i`C+BHvnmbG9XXxs%=|>SkuWm7%XsyWRoLyh_)qF7@b+ zFUAEnX3mUdXA2Wbs52p@PJ3HHHo!o=nykxVMQO8da>S6sGEPF$V|wnSf?((%uOOjy zt$CDYiqejUY{S?D#mU%Ad4+Ncg~S{Ycf>B<<~ca(wRfIF6dPb2Sqfq3B_uPj-8IE< zIJr+b&>l%2K-!aN@qJ=c4U#NTV2wB;5!AZ-W*y!W^=`l8x-1R4-XTt1xN@oG$h0C( zuG({Evz#g&IWKEz!t71<8yahfxoDa?QP~$!1ItDnVAo3bx8T(9pq)8F^Wi97thikn z?}ls~zPVfg!1M31tGpRO!9F#=J;{i8Ta`B~qlbm#gDo+S**PmQ1|>cdP-f;DIDUHn zeZ#yyjSq6)3b0n{IC>3j2v#5{bTl;jD34K_mB`XDZ*a@EkG){;cIN|3=osA?9+Be= zA3KM5R-%<+$)?naXRmO?`vOVgwGq@sW5CdYYkVZ@GJr0j#|;0(@=?9<(F7kM>G|#3 zq9f@E*wY$A$b;|=H|m^cyj$+875k?`xnW2sUV*pAPZaUD;=Ri|99#$emVUG7*Thp$ z^i$~Gq~%3akajB_z7{?C;l>+;W(T*txD)l(4AkH$I^-v3gQ+~yqi_wP7;M>i|FHK0z1pd ziX@1gXRFf0j)*H$@YXPNJt*JM8)Z8>Yr;`tT4^K~IW5l~-g7%m^n~qFc324N9>;gJdL|rcgFwpM#o<{JQ z?(uyj_V~LCwp9*A^s#YTZi;Rmz|iW)NAo~rbZ)ztdD3J?2s%i^OXmUCxJ{m5wPTTj zNK|NI(zyPd4aX#*Q?zpH+r!21w?aT~&p#X38$5ZvU6P*B5)EViddIpGc0O1OQP5V} zOWoX074F>&&8TgJZ-z(P>tZusJXd#r?)AwLbS5N3_C%tub6b3SO2p7;T#$P7?zIP; z+`8QNo~425c+j%KUu_|P*cc9wa`WQK2E``SNzg^vLf$pJL3-Mu1%;$8eS|=8NYzP9 z0RnU+z$jMQ1JRMd+FP(kK6Qkzd zDH8@8783%xxvE885fuP^Gb9S~t*NTz;ju#2T4QswGC!6WqsIay77kGmTTV@T{gZQq zYYPS#)b5UoajmG}>e=#?m3g#`%CWsJ?t#hJ&DJ!DB>a$8=E@MMHH$+M1?`s%v6FkV zPVQ2wwb4Dqru?lj|DD~EBEBZ66g-V|MRi7j^E;eT_v)`Z1Qg4cURF^bsE8qN`M?*l z#(L`kR84qbNt7cb0$b+A_T-skfgL!X!5-308?TQeJX-O<;5DrH4bf4!>uE^J{S}np zz5DQS<>>?69eJTv+TF(D-h7*<#wI2WQMoM77-`?PVl7$iTThKKpHM$3)-%ZsB#Sct znqQY6wy?A`<$wdqW~OOy`GINvW-Lz^v&(dY5mv9zfwrLqwYqhK|O414j7g9x$H_H=Ut& zx&G#q@ulJ8$Y9?{ReI2u-q+z1^mROP(K9+sE-4~GC^)v=6Eh>wiW{-A<#p6>BTkAC zp+H+dIR(EF` za{#l?yQ|K(+gs!k$(1fTM8X86dPd&(C9Z?T9R}ly_ zIsXTN)co?V>lSX7S*H1s`eSaT%+406Y%fH0?0q}U(4AV$kN##}#t9|maKc`#1ZFM- z?#G-Dc5&^sla;(SC5+09eTiEh!Xk62>~xy@QTLY`WwOvD*cYqK7Z0t+z27|)12{Qr zv=c};2Tyk_;vxpH^=V<>ha)5zUKL+mvK)6EDxY$a(uj;S@3lK73&m(T^KiB1(cUJA zMcXq_I4^fR;qmN{^%R zB26#$aL1Y-EYGYgQ60jJ9@RjwrqF6cgHRCTx}&>A0P(;5@B`wL^^Z|No}HW(KR_Vz3G~b z*-QDl$IpGJu{!R7?T~mrjAL-(J&aX^j3aO$4^SVtzXgul-)w%7;8aVCwcj6moVBtJ zY3Sw{sBO6kuWFLC0d!YZvgF#o+-0}UZ0U*mAF9WE94Q*rOz-^I@etg+EqjnkXRUBs zyqubf*6cc6#3+g%oZW35^zc&9vShSZH<;YoyoKmcp|vUJ(<9QRsy8;rmM-)zQA5g_ zf&6m?ZP^~?-kV7tgGikbeF89sr2c12`#`LbVvP~Jk&l_GR)=C!De!ca&(ut0$ACEv zXMKFs*Nqei$leGtC}a>IAWqPK+*o0fvHin&`nN!!e?L$EJOBg)^4sJeC+^?;czS*O z*p-3$?bV{J)gLCKyuNFxWvXXutH)z!YinUHV6A0oXryC9_4hf4|HB+x3ky?iE$e?d z2S)mjUlQ~6bN=T!wt9}XzkS&6cMCxLG?DnvCkokWnHuTP(o-53>D%1eR+fpzXhv$r z-=(d;yu28UBx`AEGFh&9Zb+c;gM;gXV}FPP{y5sEOP}kpy@Ar{MoK~-_Bs6#_~xo6!)l||9ZF^C~SLq|g+ z`6%}ZG;W9VPM-*M8&v@%?)whPA&KJ-;UOv0&K3!%7ZM5?Xf{eNN^Ew{-nq5YeI02X z1gUQ}3MtwF`k6J2;_sKLF|dER`qj>=*YWoaG{~Pw5dJv{9t%_5f58C;1_lBS3n(g> zQ|a|v$D`SLnu15NfkaQoJjdp)UU2R(Fu!*mtF=C7?e|5`n3ayxE4zlIIwq%{-!?f^ z#VdP}(7p&odL$`^6Z^97ub0%_*z~QEmgM=;VT3A=d_Z)RM2ec0np#q@K=$>}h|Jlr zDCGcE2|1tk;)Nz?sfrUV|;XJ&@t{@~XQ#hu@s|3xpK)VWDjox>dJgd0jL{|l7AGkB9K z%*=0g`yQoAX1&^+{omXD7j>}xyWLc&mD};01w`r6K3UOd3T{Xrn$fP}i!$U|XZL}6IC7(fJ5y@bq!Uj`;Eu9F<0 z!kDm2tVLE0VwJ`tqo(YZzgueg%?vY!%wRQZR($d0K2K}4ap%^P(s$+$^8V`O<;5eN z&0}el>TRKKE#+>dXC-88ULNjkpk9&cts@@J^G;B!oJZ2w%2-OtI2ea2E-oU;+a;1m z(fF%(Mk+8Bs?X=&#Bh;edzkZTTi*YP_5Y-Y->iS3GZ>+!rp98jD)$yQZLxmFv6M9)RYA5o+fKZD#awEN@Z&5YHFrO%I3dQP0U?ON>Gi_ zP*qZmN>nMzT1$v4%3X_(&UyzbtyuIfMmbqo_FH0R@8I_KX3iSU_jlivziZ|hv<-G^ z!v2P4D%<;_^A$_`pQ8B>qUAqn;`glaucAXw%=3s3^eOHc<&=!dqSK9La?S@{kvrdn z6S50^TL<u=YBBli zZ~r6;aGM$#nDgqH+v-{WMYA`4nCk?rIs@qfMt7Siu!rvp{&sY0DxBZ`@z@O`V{r9Xud}*q6Xj<1RnKDseTeUVnuz-mn zP9T+W+N8@4)|-sw_aU-F z+b?};V=A*^3W;5vk_wj*?Dm6S*%Uq)FFS}jCAi6Nv5&ML>Rs6@gNpwX4u8=Zew0Ur zxC5h_OC4P`%#JE&2#cwflS-cu@#&|&mDQ*nwCJONPTh{KGPkBzkkGMb@wNB0wQ=F) zOXJniOSCi6)swW=Rn&d_T&pP1PDiCA(N04wfCu@#Oc9TynyEUE{PUNHxWU0*v37Pr zJo0M6cF9rCxR7>?-z;BHs7?Rj41cVSepUe4>tFo4Kp<^oU}*clFg>^XF2xU(?=yLU z%e9GIc-w9tPDnl-#Z;>KvgORfK@CuP%dZiChGOk+ao~@p|GdKbk4^vIssA+${H}gw zPW|zqD7|E{2#w+Xq-t@1P=eQh{%Py&rwdw6NXH=mXZ8OKg5p2W zfUup7t&zUdUqmtf{|AElZ3-uyQHy1HqS`!_<1ZmRHQ5fu(4i}}+{^PHFWqMvF@xmn zVQ^WL`8<07zotGWqTI^+5eELaX#6i={6&|T_$?Y-Fw&U?87tDCx?osn9nJP|gnYkA zgN~we=x5Qm)z|%1HK1GlfX0t#@cniCy;1RV?*QvxD?v-!RPP_U4xm3}l0R{#-)2f% zIPmGcc1`qtR*>S=Z=DA^gH##@ah>0q4?rL=B+t59uLZEy7_b$WF?M_j0E9SsIzp ze^ui`6{&FW>J{?c-!8-NEu5cW(*2vuz-wV@XJ#&BZlh;y%dP)fr2Vg;BC^{r-|y;l z#8=a&U$%`pgicDQh*c8B(Ndx)%}Z+8&aDe4E+i#hUe1;`6v$V`n=4+;@!}gpt->H) zu90caR-yzD>QTa}$-7RASe}A<+}4Iq7(BH?->Wso1NOfcP4%X6ZaV!smT-X(+lQ~D zPXCl8{a;|oqo;3S{l8Nv;;TaId$%(3CD)fLW@9wYFh)PZGOh!42GA*pU2ZWSAsT#t z%F%z>M<%XLgs(Kj@HZ&#+Y4=^&evJ=HlS584*_4L3Ar_TP@Su=Ld9);RO{U{N*zFP zzubA`c+xz-xqfW^mi()hNg9qemiw=uPW}`n^}j*+>f`@6nzZY%vE!*21nxz(#()7% z;Ggw_QO7i*2@x>2N>C^_w;FkLkzQ}s8z4mq8Lc-lZccL0`V#c5RA2TkW>7-nB^p`> zN@a3jVBd*y@8oN!NU+hUj0+KmqgnYr*x=~Pc>6EoD7ARbaPUg$kCFuYDOS?_ryTza zJ#M}_H*@b$dV{e=SHfmvcDx)rytSwjAgpuOd;F8#u6NZL&^H*pQYFm!3fxcFw5;?= zv$TuG?m#jIt?5ho$8_4GHyo6?_CI^L$FCYuL^BqK5wH7<~pt>r9~uN4*6 z!bnT-?~1*2F*)#V^pMf`#d53YiNtzI)KD#b(f2Y65pI#Gsv!`GJ%zX|p?eLNUcB98RJD4S=qQgSH1*ZEv|F zD)AhfWq&vvlUMA7`Ub@;0fYLp;=oq=jcq5YhHSzw+bdLK3Dj77h4#ms{PW7^uhlkx zPVa}u{u{wH{_t2AiVawYCJPifdk0)f6` z(nOv;*=8|;T+N%2Xm;tFD|@DzWcADp;j{5;dX9SH^>{yA_5W2bP_M6F4;lQFCh%V0 z`=2{+=34ef23od87Uuu3;0F3>I_ZBhUC#1n-hW$e8;k(bm@i>KKstY9WzD~NHuMkA zmL6;?+AcpF;q;LSW@N7EBE?t^x*u^CNDp50#-p&wJo2Uxk{(}_8?H=y<}Bk1`ueM~ zZ4G76?2i_9-Rt;!5eWPfhkqUM{sAM8mX68KYvj6z-x?1Rsn0HeyVK5qR@|i*r`wg= z#oE@Tru+S!VT0LHk2>q^5kZ>~=>67i%?^8jb-o#k;kp%#BW$33i9!rAjuY-N8PC-;OovG-sQfSoMb& z*mQb&NM&Zklj{m<9h4MiH)?9`DJX1`l6L4BMvM*PjZBk!+S)AF+JM0`y?#HA!TTfO zZxKV(c!SVEvDtoqQ2UsO0w&)>LycqwR$HXiELFimXwoR-t5Tq|)dE3;SGk0;Y_Hy6 ztEYQ;f?$G)&MO1I0yyA9VeTo|87WaM&GCjRo;Y~>?8UwkJ4s6%Gm@CBOg1+wGg>%Q z?Z{AwZ<6F*%l+6?l6(Rx@T+$555^J}!hwN+a$d)Od71ev9L)cBflR1Q~>XD>2Rw~e|xdiPHD5CK|Q!l?J;%eiU9sTG~*8lg4|AFFX z#XH{ouK2VkkBh6-&0Y^2j)$kU_R>dq_m$S$&6DO+hZFZkx81{H6%F$hfa~Q>B_<<> zTI=)qLN&ZXX-lK){qeSl1*Mv++xf;JG^%e7=l?c(SAI(cDvK zz$q4+Zwwd;cbUsBMSK(v&VCIy-n?CYO~$W&@i38X)?XjuO~X zdva5wgvBZP#W|)hFR%3<#W649@4Z7y?H|2EtBtmmg|(@vrHO@^gTBIaqEubBTKSn^v~J7`(! z{_h-Vzx*(Kb+g$!M4N}H0CgqFMAoL4-o!{qMj2#MWgh@rO37YTr%n1Y+8*@FmT5X^ zCJaAzJ!=2pM*j_q-#rPq0$A)>K!~4-Sqlva4QToW==I3l&d$sB_VeZ@V14~@ZS{U- z`F45vc5(4~aq((?{$hT9XLjanYU*TS;&5zie{6JrczAbkaJ#>Mv$uDxt81m>^`AVo z4Yjt-H@D0-Hcr*oPuA9sRacKzRgF|u4waSlmz4At6?GRBbmrx?=jOI&XSZf$HD_ft zWu!NxXEday)+HxbCni>Y`&JqgQydYI7Z#Qi7?|PjpXTk86t)Br~e9~t*!0# z`KJfoJ?N`un1Oz5iN9Ke2E+yK+Lml7NRAP~r>g%gNY1j4U__GE7lsk&gK-xHB{qpe zawoSutPDXTVP(G*P19n6pZhP5t}5v+oRH!wDEfOA-Qn7WsZ% zdYmN_8a1+8iuZeR-~W%cs{pDp{oW{L0E#pSVgSY^3ep{yknRR)2|*<^3{auM=**1GeVQ~S6bAvVa0`$I74kJfVSq<0PACO3A*7|ELB0mVe#!$u!=@c51pZfZfbZwm z<8S8@|N3sULF#Scv1(n7v>i3W3`TF3L|aa@_e)$iF?GP=3_x{|h8(z!aeB}YUsSXe zDt`R@ukXg+OfJs{n6s4X2Ek#e?e5TuJn-JPZwKwo4P%ZPDcV?A?AZ;bDuWnJ^gvA8 z#iATcHm9f5>j?nS!`=0X5)YIJcB}QBN|!x~sO)XJ2n8*N0ZDy0>yT#4FoXW!z9*XW_BQ3(s?z5H zNK&r)3;ChL*;$B)h$(KECL=?e-gkMH-nTs11^zS--t>o+hg64OzJZ^7e7_LGHB=5N z%3%}M(9)r``bBb4zvpGt)@KP`@|w%N(hB&1pG{AkM&XY8!Zg-AlTDL&;p_5d zEzB&;`?h5se6bXzc^DZox00$YMU+sjOu$ebO`H}bug+S3nZ(o>KU+?WxF-ovBp$Kc zS{a>MZHT_0vMw$)+andY2I=2jh4a$pwDV2DSsXURg;c5$>n6-rN!JFAxbY0)oAL zSK^vd*7*GLz=2llV4=}OHvDy83S|e)&KPywUIm4+{i+nnxnL?zh-Rx>PilLnoVmf? zro>X8vJzyoWoM4d8H)K6{eY#kyjK&`X&@ylh=CS=M|J!{APMOXEFvPx{svWn=Z05 zoHsCVVO3LKK4p$OaI|s%&GDYU;$M!x=8(YgCS`>7eLLQOM)m};Ax_89iFhGVst`x3 z)o|G6;0UFHt?m!C^;nb~#cF#C`MOkTa@H0H1w&y>N{SV$pWE;)k&tfb>q9p;XWiVT zYHJv3Y8f#xS_Orcn%Y*|o5Nnpv88@g<&_`W@9kxjl!UUeGxv5=%&&~dDOXr+PII=l zHj{{rjtoFD^37-B1lVnDm*d-4sM0wVm0^`mH1g)DcA!SuUg;2ibM=@sDL zg|QefwSW&aTl(qk_g4Xn0y?W!JIhD8nk(`-)6-RM^_UbabdJXp)=-qz2wS7Ja9DDw zaK-Y&7V+qV;BXnFt*RJx)7fPpd7bpa&fHFO)FeN}J3#D1=g zo!w&ik@@1t%Fqe5(qX{0E%P?l;ZgyjczU*yUXjpJ{he^&zjRH$c)5GfJh(TltjMGX z0%{gZA2R~A4qhjhjuJw2)Z&?UjqlZ<*k?qEdP-7uRpjN@yRi@=py(Gcz7o$@j z?0XeSYuZQcFle1Y?=x$;Y)#P0r}o$7Oa!vIq1R@4S|TuoZ`@88ekj}VDpTG#e%zV9 z4-T)7myZ5z2B!+6x#Bx<+3s1&j4%$$y7dp^Po(IFl!-CDC2VSaoE>SND)n!??xD5m z{oo<+LRbQMm?*L|31Xz}WH%Vh6_mfq@q~g%M82C0w>_s{OD~yU&%_cvh^%=}B`ABH zB3EFGl)%MB_?g%SDQ56|gY@lb#q~*5#2L+##PrW}1xjljhCmymuqPYjtjX zDESyyQ7-Bs)`jDnVSj2%&^$kEtO5vYP0_HEue;f3@OYPt)u$Rh6`O6(A`a?~jxfx!uApKS zwQg;va>8@!$)b4A@lvC)p6E&sLza+kP1X~KgRd~mUJUmM(dJ&|=|sdQ;QJ%x+dBsc zG4Rv>-Gw^?L{HWFC)plAS@|^{OHTnj=B%8v@3KVCF%9*y^WFBGEKeRw$cemJGSd2r zg&iud)wwGX%o__^Rr(s?f_P69P#?_GVVTp}fPW8!gqh(F&BU`<4>S|Ua%OsiS__#B zA^AA`2IUarscpd9WhgtEuM9Q=v05&Fv1)Th3yYc+VpO>SF-2()H8<)_g9V&!6szfp z56(e?$Pm5tW=5mGrD$lL`ee<@(UJVYLBY_U08c;o|)3}6%flqzl-PR&G_d; z-fw0sVFoffZG!$=QCu{a)vd~XuP!ndQz7Xd-@11`Vu9~^<6J*>-9`JvM8ZXIiDC>go5NVt{u zXerbK#h%Ua_#{y*N>5)O842mN7lvcb=_DZS{A)Ak78Mmw6qX5y&Ek|T-rI~;V>)fx zH-hMMsuYu(wrNw_4fE4{1<|!!Z1JVA=tz?L3a+=(nF|=RSwYrNv&<;tq6u#0P6JVp zJEAzW*NZy+y;5?7jYyW)`*=T{Ncpa#u@vWXdCO~q|7Zj;j-I^j65yduzdvHk!MVHm zx2)}a#c`H>ppg)SGOv}Ur>8qPRh~XteLAb*$j=_F6wtr+@b!JkdylV}XuW&WrBd9y zibm4*-oALDu@T*Ud4yQJM1M6TMX4b$Bu1AG+SrMKYfqJ7nrmQ3H_ap)Z);bbSegaD z%B7}g8MS{aK%&QDwWz_F%Rj_iB)w%XPL&Ldi>eCku}7;gf0Ra1X>=X;YZ%G8r#kjW;Rq zJPPvN#m;d?jjIYN!RN}8;jvbU3BR6#w4bV$nKCDoGI6bfH_zf#ft#r-_u<1}f1KBL z1ep~Q$FH57ufniD(+eopZI(B}dX+I;w`=8K!(s&w=dR=7VW<3-5B0*DgSa-Cm>2-c zH-Cxr-^moufZm0&>u`&BEF@+pMYfb&?$*7r`Lg{(pg}8@!BGNgZUq{&>2mNI!~Lau`@Z;=OortJ>h&vi2_TWy z=0xEUR^)j%oRUP*A&BBFuI?6(Him2VHbRiBP4?j|Ke z;`7tXVsleVBxI5dpPa;bR;@gdYoga|4W}1!{U{8N9UaT-%Fs+ z+dPm!pQ?}mew>DeKQF&kNH{zsnAz|fiMv95AE%XT$*?7grp(eeJmy%bR+a?1mD_9* z=w_WREo+E2R`je!ry_^&e8Q;p-^{v~z3zSc6!1f*-_K9xuR;Kys;SvoJ$(Ln&N6Y} zc(U?ao14Rcy&%>I*k>WP;cF9+j;3B{xft3$9zeW=>F?_YQlsd@`=9`CKtoxqmp|Rx zE_C4$IYB+QT~*GVIGhJsFj>bSS?D>yn=zmZSXq!}g%){k8U)>}M!*QRD)J zo$2KIFAX{~1AJ&fDUC}aAsoE??=Ffxy6c*o|L5!Z?Iq>>dk6twqyM|nqXjYmnW*ah z=`E$_T#Wm9H{-Y8<<|JYc+Wyyd*qShKKh&E2v+Dx3pi1}Abg;7uf=NyF_@CQW27vu zMAw+7TKIdh9lNh$I}J#Pn10tuIP*=hCN@BX`s05|gzB?6u^~ z?R7I>I@bsJ$r8l4(K{1knzeyI$FBz2hx`p*`xv@p$uMD?#5Jw<*HqY>D*Gpkh0;} zp3T8dAG!3X5<*P#* zk?mZ|0GrlMFPNU0_N(O2YbT~NddRIaddSda4^MakHt{1b}C^gGwn_zpe@1ap>Wr2W! z(3dETL=iMW9&w9-^HFv-=x+72o6yK2W@ehAc-_08i6Kti6@-fDcdgAhb_F8Ba#NEK z%c}4QL>ymq}b3_^Q;Q zu}V1o2(V#w{D~$d6|<($Z3-q_g%m+NrYv zrmf;1j=Rn+ri&@fX z@gDY|OnB)mAEmywjNAs3@E5&(j5Sm1L$T4Y8XB^^+ry|hb;dJCg ze#$dutN!#D{7Q}Q2pCCuyHh`|!-c(Wx49v*BfwRRlFy-J7T2br<_4{L)a{x5(Q&>J5w7q z8)=uKalZRSS4dlY`XE_L1DheYN1)x@2T-&0o2wV59;rc($bJtv1M=_Aq3@iF`FS1l zd$Mz?8TP-#qWrt^Q~ONcnXx9cB#$&M&!-*}wK*4gcfp-VNi7W3MZ;|!lVVwCG*REj&f z_0-!b1s`_x^WBg34P6-vXy_AHU)qk##>mr4uT6Y@?QWAww--dV5ZXp{ap-;&Il6xt zKoA;n?K^Z|{@8&1w`R-yy`P@#=JyK?xVLCdw(->V9pE$g3KQ-iBgzp_vx#d_ zAGHZg^SrIDB4VFwpxD}M8JZ}4K=_81LC$}s#XGH=%X4o>WQb@dTd|vB-y%(vb5Ghx zL_ZJMrWKZ=%LC#uHavk-y)gStkshl4F)sF>^9*!<>7jXmI0$GKo2%;agYlLj!BD}7)w`wrds~85xXrM4H4&yr zb$1*zBJWky_a6s%?F+VIFOc91!NFBh zd0-tKow_=mZ>pQWKX}1T)4lGdqe+xJt?xexTIY9SFi(g;Q644DFs(foh}`YhX?K(0 z+w=6W)z6c+GR$I|$7e-b6YYb6t1E8J?CH>LJJP+#6n@7Lh?9)k- z^G!9D&95!y?@LGYH<8CBjwf>?C1VC-$0pm02hG7_kzY%5Ens$Gpmd=n0jL%A*>a7i z7Lf5oGh}V`dQ$F_OWl?$HXDoKEt#Y4XEmKA{#LKkd^*!-!1=1rkO-R^>};d#1ybV4 zm1=P2=#hjFK@^dYOE@wpW$2dDLnZVcXFkZqHhqjUW?tvj^u{uiVI^BWi-}KD4w`P;=-8YbGq@*?gGw~@H>Y(aPGSQJ=o7%@Y!qD_pon~-aNA1 zoL&Pa5$|yBL)RzP5Kku&PoSe^cP!T&P7C<2lZe0!$!sDpiKtX@JkbrIgJv-1txij36rJX}3GW1CMNDtcIg!BZ#2hv{rhp z%bmX+H4-TLi@)1@fRVzDSaYe?6ZRko!6RWdsJDR07J-x}Qj|Q|!4?PSV2AhshaRUJ zXJ(e}m6wdUh1oWBB!{`2?%ZLyK{+c_GtD3pVvopE?+cdiqd*(UwKOLg({!JSarg0; zqExI`X-H&qjGX-y`S8jtx8Qj~v+)Bx|w69YpUsHhkK+IvO@ zm6DPY!r534>~E!1Ey=iRBGZx=Oi)5Dy==~tW+LZ|XG{XE9U+v~hfn)DL)pP&DSFdG z;wXYw=%5%hr0Yi7$-&xeMk0gO9a|0Pg?p)DHoAg&x=aLgoA$*oJS+EC@>8kTMy(y8 zv#mrzLE|O}p|;rXhpVM*qCbA(@t{7a`5>aIOVw5qT^=G*+4Ov5uJt9!SkJ2Xqk5_Y zR|+{UbJ@9G?4GNuIXVzNZ=NVNZ}|n?l;nqAjlFcCn`Y*g9!0id>&faNbmq7`%80ON zVXvca(o-X{H@DnWM^(KmWk4nR=oo}nhK8MJ7&TeYT>HM#X5w%~zR>RYi|WSkz@_8k z84$?P;lyEgXQjN%*6Hry!S0&jSotNF-PMtjrM^r{V`C>P znO&6JTVe|ch+oV}l@7989y8`wO7pD+^;i(GCg*;bG`AHEpibtxZ!smckPS`{kVfjo) zr%ME|PM`n3g`RhRf3i@g<>jew7HS3<%R*P8rMY>2e!irXR7z6P`sOCxZ_$JJOx>rs z>NQ$q>h5Nq4E?Ki*?cT&-`1&;pxqI4F!&G?%{SNYQHHzr6Y$tj)?@=+SA+ITW_`C?=dSkYd>9 zHnMpONX>k-Wiv36;uRAb#=c~tpcoa_3{`Z)7Oh7|%>X zo3SFx>~^%;eDJ+z0R!Ey8I-J-&SWXpIRfXW`lc%xYa9eYOA3^SAuCmt_RN5}=4j2u z-$yjWe`Ew5FJCImaI~{p8;V7YS{t!GIbJylZg*TBGTpApw$&2l_Y!8ki<(6zPK2R|-?9v+XM2?mO4m(@{JD_w{`w9YCe(oaP z2zX=Sjc#tYJvjKSm|bm)0*)OXNyKvt-4BanRn{~8d&zQCB23}ITtp?bX2(<7bdNgO zdp^fkPEEzPi{aaF8W^WFX(+EI&Mq~)w1t#8mW%B9lYa1%m9ouTImFD(ZtQW)P#cVK zZV*uJ3e*#nQlMcFUkHo7!@M9!u5~ptT3|Mi>snNBIOYe#$o3k!s#)4f8XYN~aboGU z06tQo`(Xpl&)BImuP80=Jhy80UQ$S@G_^D2vNYEex2Bs=laS90;0SZCtgWejJDkSa zf^g5*W50i!4u!@}Pj7kh)(iP6)%m>K%7G^nz8gL@)xNEVCQsn8aB=0?o~{{tJu0?J z$`^a0Ec`gO^CRT_Gm?AUY+BVy!9#DuK*1c^Y8tAl7o}-xCbt1m0B8uw-)(ytJeRQi zoM-l1p7>26?tG^Bd(s^aW;NB6lMBtxru{Z#@H+0B90wDy9VP72X=y^L-WS1v!QR;; zVJoL0UjxRG$Ouco|I%xtqUGU#39)$zmJc$^rB>XE-==3dOKBdWwO(dr_%7|FzJuyI zkdQQ?xTV0nJ-QhA|EX7LaP2@U-SJ&I{cmA9@7n$WOswnxOpXYNPn5Tl${*f30!L5O z<)|1;IZL*MN5J1k>(GsnsJ>r~O%bObr8%;6qCLy0$r_IYN$ZxW+xN3S~O|#V9D^sTw z$Gu--`q#NK-~V{u241(m%IEylT8J{qPsO)h~trsA&fuiDw+_U;<>Qbo-*cDBWP?a=o;kEIFz{zBhzecbj7jO(pHb5^N98>u;t7)-q^Go7)GiZP}7;s!?0xLU-+wrb*)M#9Eg zD#m98?CmA2{j$By%{uL?uU*=F&+*p(v;7dAS8<^xK)v(5F2K+^7xMSc@!QQ<@gEbD zvxKRw=stS<5KiVZE%vglqR9MYSu7V}G1Yaq9-Fs(&2r11>qOlwkbT&xK%V{&P19H6 zFw`g~FQdRKmS(|)N@|c|!aKUs#pD{87P#wM2r1r4I5-k_KdFh_X|!f-WMvhbyP_nk z)LDaQw=PY9-Y^ICeCpgh;l-;4cMsdE5o8i54(h<$&m@7ZzJ8}9(OF$6%2$J=&J=BG z*RZ}%>jNHmE1`^i)~qJ8pJezb_b4N-&!51k9q#bD%jh2W+VE>zvhj9=LuG{I8Gb89 z{ts-l{Ra`o4P;hA~sST-PZ@>+ZyTs1UB}lW2T9U3G?Li)$d9?)MWs2FBad_mt<~F?glr5=y2RsA9@KsxCO^uqn6G8;MNs5JquM2 z_~W?>_`SKSxG?OG2MPv`;iBg%{kP^)tICsaSa#@S8FrHt75O(?ZB?%pcOzmM%&5)s zYD?sCT_y=y{J4_8%M3FzYgSw$fGnSikOxts6~TIOq~QE8{qC6Q9k6Ma%#hULOCiIJ z4Cy6zL&h>$KZV_L^UP&*N2&Lt)WuC`ug5|%UE1o~0+njPQ{y3_y2rOR!1_$DmPt9=2AAnS0^1D>wpWpNU z)xbRKZ2)|vH%neojy9F0{!rv8BxE%t;aegUU6j>$)#`)lYD4PmOcr_Ry1Md1y}6J? zee9S1I*Cdl58M1Y_;E?lQt| zV5n^Au#zG{z7*7rE=G|8R9ID%^C{qpaFKJ}XnzVeU#R@tJ z(lQheJ1kUQF3gUNt%MC{kaIZVcEp~QmA?M8y$y~%$J^5W?tp**SvNSXe0Cg}EVAsJ z6q74CY2j1)cca^=DpRT|W6E0VMIVcO)`+^7>a(DV$eCM4mY6TXdt+!xP_0D@Si|03h;xX{M0`lJ(*|%UaBe5qIiU@P`yf8;fLbsMxeQB6Ag5d{ZRqQW(@}G+lUfPO9Olx)P7B^ddl;A>ax91W+ z$E}Ypgs!f3lu^v>Q*Fkqf+#|DYJy;q_Au>RxcPp93-RyZHEsphyf7-(EWxfuqKndV zqMUVXN$?}CMy%f4$T{Y}QRdcd`zl@}IbSzXS*)3I({tO?7+O@765_zfX)SK2Z>MLj zSHnUVhxZ|gNUHypi~c+0&nxqJQj~eH3kBw(BCX*dgC?4I26Bv4FPtf#g}04Gy2C8} zGKHC8yRGCyqREAU)R@?WMm9(Ea6dAqv#4f8I=SB+Zcz_%*TJPsdqN7`5gQ`4K zEn!-s$rRt^x19;kqa>Wy zdTh0e%f%zhlarSZqs9*k(JsT>e7sJ|dIa~{_0qFA%bb@!>A}T{%}#Ml!cyCJ$Xtz` z?1^(IHgwWXqUo7mesJJFf`dg+#!iyAHMGecoN-v8Yw|0Q789G=F66Z{_P2Q?Nr6s+ z7v@uzwA7H3s>+}j2J@cT+NU*BOiZmztNH5lAy(n=G0gGTi<_d9H~GHMMLwY6Jgkrc zq$v2MWmU$iCX8QC`4LpdJ1lHitY{H>6^*e3eep(2AzJz{C-=@)$c}fTq!vcO#6n|m z-YK>2uK(gmz$MkmrG-b_8!pSAwBC{uROX49zIP&e&rgjgxA>Ub5!@Ge{WFYSy!#7W zt~|qjNWW<|&yKLW6P*;!+u2Qa9f?QGWnt_ZywaJDT|zy<#b6bYmz-_gcT3ig33l$A zWhi}G(MD~A5{^u@^txp6NiVaO9$&7=Btz^Hyhcub<-ujtlh-$q5(2Q?U-#$G(Li7F!_aTQ z*?|}duqI7*q+Z<%3AlRvIunkEr-Mq%Df1ZiG(zU7Mc&r}q9YCbpZl}J|2PvCGXnjf z!3ea!Cb({LutR57v)e6wBL_-WTY_Y@nA+v&bM?282wz1ENJePtwVcUa{-!I@d|G_8 z7^!3r0m@3|UQc#pGxVhcil6$=m8mF`(DETl{WwqqPJdSi{yWspSJtO2M*uahgA<&a5qrB^ zTVo`NCmfHq4?2^TZ-^aR8BGqAO+^{rIWk&WKfv=CRpR=xzvzS|y~72`n(Ks&+-O@Z zwX~^EM;pqxGi0*eFx%|Gq{vaUQRRfJwUfb~3+e^8K4yTnB!Cl{TRHNL>pYRW{4&EV z%vQRqQxlivX^q=+u9gICt;uv3s=rv<;Vm1&+|dgi%6G7sE0$f+)htL49WB;Yt9HJ+ z4c%Xy-RW&xP7$U5eIgv;TMenw__c8qNSLo+Kcxh%yjeFMe3%x&ztd98$Z z`OmbjuMLVu3dPIR~T{!&ne9D4p;5gi`qS)V%_)`VRPhlQkglwl$e+{o&)1 z3!XN;;s00}n|aw%0~NuJ(}9S}(~E+bj?wQO)0;~Kc!7cVxVLd`V`F1s;d#&n#e>7b zBBKdl{0TC%vUBj*?#I1ncxy%%5*i+ki+|at+958n;&x>ovrd6GHI?*(A_!#{E3L-> zQUB$;FzjTP$u3=DV>7qpkwycDB_S}WyfnAXgo(|}mC7#2ewkw{sOCtCy-AB&OXgB6UI7(RxdTDM~1*mx1IV9-or_~po_#nTf7quNt238C|3DQIcz zF}$mViWb_P*Dhb!2s2Wocj_0woS?rnsh`Uv{?=N44op-1pc8S%K@e+SE4DQmitr!G zxIJh!)8S74I7@3AJfbVQCTnW7wCNHSYyj?q7-%jHg42aam?u2P!b%mhyf;Vk1Op5Jl{L2bW)t-X4c=U$)W@6*)o`*%K?FRiSA0 z^7VEkPAyG@^y+Ly?++|xj8(mk4DS^jg+c0FfpI=KpLOs{G{f~BYmFH+moVZ%_mJ87C^FN}e}W=ArA=ZA|te$G?=P1Mha(=*hmsaC9wjoVFc4%#2o^bU~} z3_mKL>D{25+sWWGoo)H(;sMA{S^=%sbSQga+tM&yrs+spfqAZ6U#p%xbFMkJ&fmJ(oD-( zu*?R5J7Fy$guOG11+wceLMmG{jN5GQ+M=X$756lK4&Fr9@d2|CB51)GSjZ5o@l9(F4vpv<2(A2_oBwpGd(S&O@WiN z`0oCkKgqx5tv@#bX@X2Z2I?TwpTExlDqP^8px?yOf6E@fsglvru=4@xJVb1}$D9WQ0ZQ%b>JH z-@@St!DERF+K4jf9ZJ~@c>dG(nLl!a{})c@?f#DknqT8Y0;m{4+f~A13sRbi>lEwp z3NW5tdC($DJJHYzlIzsNyR~{pO+W^3uYY+JXM>9Gj$hJafB5&fqi9`*@O+{BQIU&! zO9^bxW?};RCvaA4oo`tN2^T1j7xIBlYPJ}o97QR!kqxJ3E-cSl;KtZn18_VYI{E|4 ziGS`rOmqx>;Fz3x53VaTrB)j!z!383_!dB1Iy&Go82(~5+j6=XJp9qo)_kY!=_nV{ z)3A2EVJn-JQ1#Ov(5g=X$rvuKCT^4}j5Dx4oo4(@rL5-b+;Rj;+VPE-2jUd5bW)UZ zO|OhdxoQ36 zYt6rGjVcB%vAtSONQJDH;5N5bUs$>&i+2wP6}Z<#-`(whiSv1D{aW-~q2WMu)_S~! z#6Nt=X{gX}3}U}@LP=P>ce0;fA)R?xZnsch>pj*UabU93l1Q(03~0#BZY}sFik5R3 zAFg!98ln)`*{px+ayf`1U|HY#bewpw%QaNE)>vL9wzFzqYS|vkS>iN5k)e3QVzsnF zy}oQ^Xw6{2L>D?67RIDMc;zx4lR;5|YPGxhQbwArsm^xF^-~eh;;oj++C)Gfv|Odq zSvD7?Ega%F+XAlB!hQ`z3|J(ZGd7s}DI09B(MdnGy7a4nFlWw<@|U115fuT&!+fb< z>O$$30>veI)=En)y8Q2o#&7A3?&q&L@Kc8DI6NtZ-Q5=Cfo;ocp+LAa03#|(J5{4O zXQbNfS*58bCoJdVBPEqhbcE!eAgWxY$z(0AT)W7qE04{jhXk&uBTwcFPSg>qWx8|h z?%pbo;{$hyr%@}?BMq_2KWO&ac@O~|w1W1wZbFgB6NJMm8FYO?xxwozeb<$Tl@Dcf z2VCZC!$(VHcbn@jEYR~mzRkA`n9tHLP3W(m-NZo}hCjrGnosLMmJV1&d$_gx*;atF zgK=^@J(y&WO2JOQ`P}G~zjMlU5xJtlOxB1FAGDCffGS3pY83+JYK+x^)_m%+_NOZt z`UhJdncn!NE@^MN739{N6!j)uYCX7^r}_y_RQW2veSNP^HhIp4{XJaH->l!`!0F}} zpFb26&+BM~;{rNb708?f%oqhbjM(Jldec52_2!Py=mK5kO0i3I;f*L%^>_4c=J?n* zXKbXZdg-a&CFwJZnyYH3XCzkQ#KpxZ)@dDF;Cz*9Ejy>szdl=?W4d8!?$?UZBCk?= z?-NlmxFPQcHO=8Cx&bSI6}V*1^*mJ2~~?9viIL{3>Od*`riv{aYFEcb)b8} zj#W@5*e>q~W?p6sPNG*UjrSJ~^~fv)M;-JXLhizAjwLHSQZkn_ zE9GwNP(>lVUR90eXtF+OF682tSF+epFI@v1+v)d59y0xpFR`S-|8Q>Kwk7|1eUsi4 zu!JN1b)alluh2(C$~ngC0d(|NXs@7ij^xD9R#Q!jc39>w3Eo?StQCa9Rb&l@F>rUA zCOXer+ zVs*6d(Y%zPRJ6WXwHHhx_UMuIW@n?n^bP!C`}qzC52E267Ngluv!DZ#AYeZhXg7nr zWUg>^&>jSB0dgzfOoKML^22d}fe&o@fv6m}0ps=}q@JM+*4uFcy2K)KBY+q}Jjj42 z)DZV3Ha#|8;%~$F+GnZOyWdi+5ht9}Vf+!iaBRPs+a^n>j^nDf4SXJ%9=iEgB-H)G zmRdMdeHEmyrkEHRtYK|1j$w3VZN7>t9pu(0g+<-I?X-mi>l+{idkKSpw_s8n;b@_Y z9Qi>}tS%4o7xa+rS!(&w1=3owrV0A7*IY_N(a(&UE|b>rQM&Xh%;2lWG*TiU5)+v8 z88&W2H4wZEq~$c6)UY4fhLW%0;uH)`;1o z74SdP-}#{PM)LC|55M)VPK`v&-0b{i`|quU!|DK77lp_~J;ar5x4TMSVyQR)?Dpte zB@feLN|U#=GdJx$oztM^%2KIpgNIrIske@xKzCeYDv5|3z0T*w)m0*3eHz|pyRO%t zLMs1Q2nCE~L{a!4A@O}}i;1D=HREeyTFvvD8=8r81evzDJezd#SfMS+ci(HHKpQr3t)COpz^oVO!Mo!Kzly(LXDgXL=(c4 z{`vU__F|^)cVh2l9Y;Td@FPE`#oT@bMcSLfD}g6z57rzW4)-sl6wXT~F|2xI=`vEb zx6Cbx(}f}yo=|9@G{bnG$3Srp(j0*V>e*WzrPm0OGije$CYQc2U1{$Q8PP_-I!3;; zklAx?gc@)%zt%_jlXS!RO#IKR_kSSWpa3Wflm~&C8i!UKhf&(E^>E9Y&#V-E6t`pk!30jJ_=WA4(t+yX zjsn0eedmGyC3N3J8U9P?q`V#}UaGj^w{#yoLxNe#;t zbn40TNRg&1!lvJ6y6W-ZKyilsUML=J0k{8!SsbZvn#1WT*7@%&ZtmP={kIAg{}qJf z{}VzT4{2udQBQz!#rv z^>kpZTW3F=?SJxqA?;Q;C8rKMhMPq_Cq`7+%fuelrk&_i*{&M8JnD2c*|5x}3*(Ov zB`3ZZ{^4TJpS#$9U&P?QLXGmbt2}@WVG)c>dR2h+D$ih}N9_5;&GnFvkWW(`RLP=I zwUR3z;LWxU71(UQKRU>~!)dcS+bZ_VPs!@bIxuO$ ze22?{Nqu(zDXcqB*OHaBHLw`?)8i}OG;43Fo-SRopv!V6PuhupN_Uk+xYIq_?>rRCZ4 z<3VjTp5$|_Lyy$!+^wMnl#0cc^}g2u;Wkd2tyM6+n8h;7;rc`_xwL`9mvu;q){98W zwcd;;N=l>u<9!7wZQ}HOh-#)>6B&eUR8o0U|%@r9sarq4dq}qG!sjw}3k4R_*@eznOQ40m z`6JAyBSagUn*=OIubpmwV|fu)eSP@WPYGS{It*OCDKpk6JQjjFf~QGQoUtfhH!;2>7-|ZCmXBcXu+ya zW)#bK<{THVYBN6!D@b~HVL8E-M8~vKwMgpk4E#LOf6YALRx|vqT8?_g$JtQYbn6gw@>I0~aN`i;??X|qtbf(g1-o{rJs`^a1dg&O~X5c-& z6>b<^MjvM{#KZsk95i!^L6nHvi8ePk&Qny4VYRE^R_?cTD`pM_1CM0W(XQNb zR*h0x>sjECOCOpDdD1CRa^&AQO^;prvBMDQfQgA|%1rbwe}~?Vm>9K6e_B1Xb|sR# z^JIFUq8#tvIXpCkr`l|3T#m3UtYssUFD^6?^JU9g zD{^~bvdFI~SLNHODP~9Ka!n|5)~nG6^|t4G`@9H7`KU$Cj848u-k&%~srV7NvZ~WlmD(Z8n6%D4dQc{*aqLT$)3uJymg4=&HLb4K4 zqd(nCPi@lpoS?+{GN`wQ+h^w8b=nXG;yE(tWjFo?>S%6OqR6 zY<5}I7h#K)bqq7lN~CfklalPUW9ZErSC})v_c&VKUeZZ@KpYv`rK}fQ*YG)u-?^4Q z%{#s)(6FgFF!WQqX zTq51xCi{ivhbLAgLwZW;CL1<4HMAbK_6kML6^IMuF6_F47kA z4#gy=y9jVsWToUj7{o(clTt0@qUSS^z27JqSxvFHKN(vLd2nphpp9DXL#8ej!&?_2 z8OG}|LBoU&r#!7APaM@HEj8p*kTEmOab%nLX4}RP77pgR*bPNbB^YERHca;SZ2lkE z$%8|PE^gO@00+b5sWuMYcQN8T^ncwk<1y4XGBgE=sOsqbEGSoW(rQF0Pj;#s1XCf7 zL2{R7nx{$%Y6!SO%uSC5wQMa~yE(V|cYi;&?z7eNp0m&Yd`H%D zEf@GKmiNp(GxuEAToe3w6$dzSmjB(cfA{$~NX;L7{vZ6_LO$tQadk=sN;X}#me$t; zgHj$I%u`cU>+5YzO~rkE^;IRxZ4CxFA6`@jh#feZ-F|Y;{@_v(;5VM1y8^08AScge zWI!AWL?_C=;SKi2y7AW2AkdbW}e#W}YsFEpl z)-O)*!Xk6)#eG<)H$ulo{2%IHcTJli!Re>tw)^Jz@^kdq;}Lj>D}?rwFvGE%Nr>w8ZRsytE*dWXjp4%+UV;$NlfZY zPU+6f8Y(TDD=D2RDxS(O7_F$BkBn|g`P!3_HTccl0Jr+)N`U(`H8qu$l?4R_`T6<% z!9efZ5a&=q6+M z5y}WcNnTtyDMFA83>WPI4^oSG4(qOFK`Wsu#YjQ$1fBRE8x6GKD|!4!k8vLO2O51u zMZ<tgs|t#-MIa5E!q)xE{>iM4CRt2 z7Ev@q;cLx0-tNUmgT$k9R3CO zc}xUPN2?*y;O-1*#QO`9m z$xd#_MrL>hzo;zM&zXYiAND?T*}!?kdwZT&l#RP+wc+53XeNxTcp#9t5ljIF<2}qhmx>(<^f)y+X~Dl$0-%>3Dc}SXd%n5JB7?CO%q4 zM27mHMr5vNQT%`i{d7;5d?+F+o*(aiOX;IoAwdc5y6QzMMtD^v zM?xRVlx>ATPsxL2dJ;ZWTXHLpRP;htNGTJ^4c`rxDP08UO?qWsbE><-W zOAyvKGiL9OVc_$8VYP6vXgod3mHa_#Ms9;i8|^XylgA2wEJH?T4ZY)no6>TVCFaiK zx>iH^nkk$^2d0m{OLK4HLdBlEXd2FErrsCwJU(dG>7>~Rc%U?NbP396ekCx@8(vZS z06sVAhRw=<7#$;=BCj`r#!zD?Cx|oF_F1aA>6w54bsuEMt0CWVBQnh>)>lt$<_Fsc z`JfSBFJ+uEV7G@cqC6C?Lph)Oco56F7pz0RHYXQ3)&3x;+~Ku%qU!9mkXE4ofS}J= zNftC53m3TR#dxSRtY^BG>=Q|9MLxadK-O4u?0F$v`O2@*Uk^*1k5cp|=ATT#F!}_j zT+zq~_`@vRut%ELWaXu$TnSU3(L{^h6WOeHr_FP#MAv2>#kTfWxLEb)r(0E!XAsQH zfjKPqK%z?oCyhD@)rE=HC!T-4r?c!qIA~ZOro{k>f_IB~_pI1iqF^cko)l9*jrISU z9sa%vC}3x1YVq%&r0@GYeb7*PVr_5wk|kDqZ*Py_1);`Y1lyyLi7zcL!~Xf605ntn zcu$ZL0Zr76OegAo+Xtx=hVr(}V8plxJ(_wvtNIp&Ve@ygEl*y5IXM+2n>qS~Z>urX zA5|GQIKS|qNyeL#40a=G`##rsiz8vAwNX(exFdcz0*yHeE2pa_o*0LKCtFK_;i*w+ z-P`n#@%T18C`2i{irzA;Wrr-G3T~U2@%fkq>!U?4=5m=v?255iDrpeMHOSxp@o!uC z;xuW>#soxU=AWYS)-Rd*KeffLjDtTLvVZMX{bmc7h31;OwPkGPn*c9+wTJTvkW@Qd z?Iq-Z35x-`TKsncfGOWq3cg9IkwF{wLV4DPb=zZSKZ7?>A+^(2bqM@axSjjOl6E)R z`G#_|oagfMV{aJJ1TfQLH%SCDQl5`LXO?hzWyQzDPR$YvGkL{P>qG1IU_V5i-75o` z&X9Q`vd`r2RS7p+M(YVX2nNU3Qe-DJ+T(`?TE=GN>-*$#nKDf!H$?{n*C}yU7<)QY zSamZU##Sn*W2J1iq$RZqRzQtdZ8mdL*F~v5H0U`p{YVts+nMqB2^0(iXffH(#Hnnw zKSzXyXUj!%S5JI#4a{MH?R)c{qcnNT$Nc;) zkIQzg6d4p%UMju2>8rxVXO%yzFtuTDh~UYxzslG@N0j+(6a&_4bnhy_8^-^wNBsR; z^-d&-Pgh<4pXQ1I8p=NgAODg`k|4OflS#U9rUl2{*sL7MecQ!bRb_2$ZHSNmluVq9 z3D{i4TUT;^*t;`vY_Z%)3AoTi>85~^(mLQpC$G0cV` zp`p&s&iHtEOw7#MT3SGhA3Fo?$F&o@^abH;OaQm!(>V)M1tZqliNk#ZIyU)ZMkS8m z%whJfI`izWVMR5rO{h&Cj}C}+hnd8vqQ{gy5wS>N8l681utyKSOtr&$FC0R`Ca=wn ztyMva7PmBzWe=0a$kB@$ssxfYBk&NhK2T~1H_4mYWT~(=Hdm~3j(qydO0oZ$NWZq+ zO{*SYzO4V134guUfOyKECWPdJmqMYHw^Bdu?COe4m@M4hxv7x|Byh1_ z8EV_fi$}XSJ+a!2qQ4$H()V5kvol+^_LKV2cE>tu%uFpZ>f$LCoo%%~D3{BxDl%HH z48S!po-)(CEORs*RhlY4T?b|Wkp9??cyI`)Y2@T(L#N1WZz}?BF*IFMT<2=a1c%CdSF73(mx545U$UQs0?E1J)j@g3hM0WB{JqMTvUTwoG*WDo{}oEuoz}$M({15U>Q45NYLIY)EkrGPI$el9UFF(d>P6B83z8Xse2 zb8~ZjeSK?dYi>?WM@PrNAS*jNJ2^QyBZC|$c1THE0CkoZG(W0%Eqrvlc7>LbvJ^2? z9k7|&RRXV_V z{n?7uTp%>)6j|$gMLGB5C#QP2m`7ZpUfJjrplqhyDd+m1ZtZ~0l^%_jrmt(r8FjZL zU9vx64|aT(fm5|kUjfp5J7_Z+HJ7|eI%XFpsc;50D&Bn*)KZXJ77m}aaqT9dZ%)iIg1obVgOfCLN?D~hxc41punitJ_IyChB($TT(#L6^*#rihIbM=|TM5)?M z=J}yGINDij#UC1t%xJQ9d%Y+XbETUHq;cM&Ez;W?>u9y;HMu!5^S<=ppeS`Uf{Ld` zZ@y!^7};pT&T%^?Td{mfvH0TP#Q0P$kFDHsbWse~bZh+DZhAt5({_s2`rwu0<;ccH zDm69k#pS7u?QRsCx$B#@v`i@!Yg{Lz2y%-=FaeCV~*AS^^{9okAj zxwtW zW_nkTt+CPryx<(BopW`Rz7U}KT@~1m3>9LF;~bqHSAD`mIH{7|DznelMrP@?!XmSt zFb`)S@%EzLLoxzxHP`*K(KuzlKyae^VOXZ-yL{Zub(IYp8k>pLtuk+x&8_!mi7KO- za=jrv9D}Pa3tKUSd$}i$a`&Knub{IrX-dMv;k&v7(9st*4D^-b?|Dd$47Jl?we-Xu z;Ia~-b_BL;n9h!T?g+ea;Ks<#&JCB!oPO*ZDp>OHz7AKdhq!IO9=CK>sAyTJpe*sD z*2Ms}IJX8fG#?%0wl=LQY=0GsVZLN57S_r0D?Xah*^w2^LM|o+IVm(zk{BEuCgT22 zZ?PWV_d36Vh&FoUB@yfLp{o-?O zyK%g7Bph@RcPRDx@tQ4^oc!F}{`I4eA7SQPp94FAU?7YjPimQHc_EWnAV?@kyQq#A z5+U_HaSj^`arm89_wUCeYcnK9w&p!WEgheb*gDIxSbJ+J!7rrmmr$yVZ@YR;(ANX- zWRi$;vl~on(2{pNi z$Oxyo)Oz(a$P?63Vj8XIM->0zs%7$%`+z-8V>o1!qly+ySoPLrV-+Ku?X$rY|9RzT z4;Wu6F5k~@kY%Y@uJ~UHIAiw2pCNqWo#Q;xpCN4wbXUwL=B3g~2V=&m(7kyYcf1xH z)g&~K;cV|Oy>36p#dBIJb$sylKp+A0+@X-px|Xg3S+d+yb?)=zA+O2{6QAeePEmzn z%KS5=L9{5fHRV-ncA~7%H8n&O=A_*|yq@s7M4fWN6#}+&>MHvuUyWaE)Tt8I$p&VE zu9|{|=lGa#9;h^bfF13smx`p7QORzUmWfo#oj}xyRGvU_kySugsiTs0J13PP4QD28 zxkS^b>*j_`=!WYJmv)Cc`GTh5)_wa&OvTm&b6o<>4XmG3nSPC_fB&c!0wAaVd4r>c z7HDu7NY;||`^&m`JN1$>(D`OFd6jE9(i50R?TZl^D9;5=&+N*urec|MDU`9jZ2HP* z+!z59%KV5pQNs9GYP;*A)*vru-S3$C%_U0}^@>`74L3&fS$)&SQ6W6a`w3-kIdo~N z`0|hHKE)oM8UtE^&~N0Fovu0tPSN3TLsh0dQ2FvMQeZ|~OLVwT%BV&sc6eldo2tP> zm7$$G7>f0$*U-){<=TI0jbEQae?r*5wmAO7c2nvf`?6}}uxCx8z;D0K?LFC7O8KNJ zsid(Gb}Tiz+)6MF8klvOFtkZW!&bzPBe7&k?_?ywi4xAeFF%lXbD=mApS_aKmL5xg zL`ExmwsqVZZYuB95bGJLHETNJJot2TI@ikm1Us=IFqEMKrd<(%^1#ls}MtmWKAS zjn~zv4|RTLufHqKY&o>5ou4p0<#2_?VcNn8N|^n?9(F*WGj0mh89qEyYC*AO#6>}E zyyIC(m4lac4L{?CltZN?qFc!*oGTMwt~R~WqGHe`OJ^i9l~FZm-xU~c7-W~pK%Y2f zcd)d<-9@|AGg~viaAi4}r!ui?VLga1H++dgpyG0H?Ngq7uDD=siO z&uh2WGT#KOTRCHKZOHWW1Lr7NYj2jpDVEJlmYjnx9*o*?DhXBi!JMCeU`9@9lf>FAd| zB+6JRZMyy`6Y^j?uTUyNo_bGdo`?vf;-xC+t~l^i@WtD>rsyYc!o1@{JJfu4q*sYl zSXQD3qp=*Z$1C`wirhiE7aU@Vb$#qwgJIN+Tya>TSopuK_1P#-$?_R6^3Pq8-CyFu ze`MruK>-p0`uOUN&}%k!bu0)hh?PGvN&uY%ckOj|?2Hbb12APr+h$wK`j1HE#Msr? z$OWisz7c>XYZhCY)_Z#n!QBV#t-!zBXl-8a0Y2Wj3qYBj?c2kHXM_DG zy=`-N=o|n&`+ARhy7xLewnv7~C&sVGMlVN4E+)pWMn}#Q652B|2AY}<^7F@wil%aN zhbt=P%gg7AiY5SrG(Uf&q-3(Vc%rs;rJ`aM5Y4KuUj=ltYHOE4phW;VZERexsaXVp z=38608XEyDb*-=OxVQIcaPTxHwgmuHzozykCUvBy^<`xbr=|B50>2_}EH`f?D|;|A zYXCr63xMBJFj`f;SXs3Y9ozghtuHC1D5yi;Dr2{zqK($G`ux zG#A|M2Pk)skDgxMpL{;qLih&;eD-yRfV2*ej0ms}v9&feG3V7*)ep0_4GB}WRC}pz z#c#_88Ri?Wp<RUVZ&stG9wTM>y6aXc2E{&c}3b zA)xqpUWMhnZEw`}@P%BH7B_W|+=L?e_^J73Zp_j_zG^^fO_bd$x2 z7^WD3$wZR)1{U-blKs{|1O=66%qEf8Dpc6f3A|1F8tyV-zqCd! zn&|bIPJQ6{+|aX%kbBeAnN0b~wNSu5z9%;lcYC)i^mX;Dh=5KB9g&7Tk(9Lwk(j=w zg{h@Ipoe8_Nkt@NqDe!q2S~L$3ghgKyy?I9j?D8a{r=fd* z0Ks|px=f#;UPb}hBnUsXN`Ad#bb!tN{k+=SJ9QU8R>(&G-$c}#tu`QRn#|g4?j`HK zLFVOkT3csNYR|OAq;+C<-B}FStjkxvHa`X5a+cpJ*PR^h#Jk?LkSq2lj@A`zcWYH; zM=a0w4xKLv5;%@&IIDLWJ!y5ppvj`;fiy8pC+9D~?5vDrKQLnY4Xm*G6d8GXryw!} z?aM2Vg^e|YW%UB@b0XH5Fa9%3yS4lDSv2&*52IHaD;8SB&{_pB$x5|`KW2*ACWKXz zwF_;426|#xpx28#;f%*ctMC|+cOJ%OkWi+Qr`4}uqY=9S>jF?QLu5qUcD; z8t7OXo=;UuU&+rYa$5GS6c%qlWC_cH6)=*=t$Nk-+oV5am9UizfLNLNQw{b1&yL@N zCMxvy{}nU=GDmys1`s6yCWnc!tC6Ae^yJON*rlzFzr9^xVF9=xzvoLzt-D)fVL?xJ zR%=FjQ%P}OaZztUepg|^a1Cg#xoNGbaiyVtslINps&eXE)N5{9ZERQqRZrg$KEMav zUAsWw>+d`2>pkcN?}K~xdb)SJyLP%d0g=G1y4u;P$y*>M4iB9U4W3L--A+y3Oio+_ z@ev@4l$TGIl}(hEju#h?T3h>9SI<^fPFGY+m6VKHSbS=11VZ6Lb@fbZ>qbMvQccZV zXXj3P`(|6)Mr-SOOUqhw^J-Jm3J?u@dk?_i{qFAF&d%+&w)K>h+7BNh?Ck^l`;Yqi z4tsm|!Qj2l&aLe1HfQIMsj1uX@vE`1%hAz`k&*MhJ|F`26&3ZSr#DVb-AqnikB**a zXSZ5ec@-9oMud* zJ{GtfqWprmS_PkDg4kua;1C~)Xhx;SA@k`zQINK7J4XqpNzIJIPM;e zgc6Iik%Ioav|&g&LjeN{9TYu9wfRqRy$?jtKw(0UT0J;l1wxgmsd@H5BR~w1H-x-> zM=B2cw)?|7O#yfac_uT20#l5HH&1o^3mS;;d7(k1L41;0O-gvfyzImm{NjT@ilmp- z+-Ep&hl)EJz8K_FpHE0Ifh6ZoU?39WKAKseGSo5^AVffMzo;JNopf%5m` zS#K>&&F)q#|Fas~e^`u4k~`oSK$OC3$=@a&NgGXuYUt_E_9HG_ z-+1lcY>c7w!byW!Sc7S?Uyo5B)yPAui;hNkxw?x zeo6AT2KGa~6~sA|x6LjStL34)?6Zf1WL<=#g>(1P9#dEu+Y;FFRujanSDQj^DD zU#-Ew|A4>QBw(BhQT7mIsHHzthqIS^#?{q6$L1w&==BnYzNc{L-wQ8QXIHG2wW&qL4l5btfk`W|^&e1FRP6B7Qllnfo= zF9}Ss8qXHp`{{K1dN=kyVZ;|r&OEGYr>oQ|Z^?}qvL4aF`u>8TbWmBl66uV{N5nhl8iA&{`fNi;ADvlh52SQ7R62a%LYldhE;{Bu3 zx~*+|8FDBbvG=(NuRjZg8;E8)`J|`^=qThSy!`wyu&%M7z3=UPzSiRldG}8mV@O_} z0j>6UiS)6Uf(L+j=bBY*wQZsu5mUJ>8^L`seBz?wE^3FDo$t1}Yj+4FbR!S-R|QRH zRR^R?hd9r;nCRI09aKkYh&_X-7Q`d@SuRSthSTx<+7=N!q1=h)TyM}U(B?QGk|4U7 z3(Md?M8FK_O(F|JBtmsk57tZGOq&#c9?8yW!SVL-%o5Q&(F%a&JCjq302mvn&ZK^U+?--Bu;MCWYS&HFX6~N|zuoe*FDp z&pfhEtCHo-t6My7CiB#3<5J-atFCG%D@pQgZ#A)6qju>qRmIwYc2u>_<9elp4|1o_ z`ChR7D1_8*B9(jCD)=Dp7O%DX8&}A?ig(#*YfcXc*k6AlH~o5t{~jECr>$e5ZK?Nb z`{2)Z6R-I~vi%{LkmGJb;ub)j7nYZ~&E_DWS-vT(xOv1*u!C5Q!GHA0h-bO zeS#FBb|joM};7bAtu+(#bsF6#A;Qn^yG@k z8Tk77r$Ncnq)2-cYfA*&&x?J)}FED9?+P=QZD(Z#SbRJe9Ps%XPjc6SH@; zoMp&2es|1*Ex%8oEn|Vhl2h2Ij>eYd;BZ0mj1w0_MAVm_Wq>>it!E|`JFS)3huXDK zcwR^}cawF=^bz88t;lD-{ojKN=Hb`eV+3*$*H0Dye`5#UhCN3T~g>=R3AE-~Iq~tOVm9mwP z{IW5wTN_Ek7-;~tlQ@oQK}^)Yu-1ZSy#ZW|O(sHTpKB(z{~lwmSYy8`Ondzi4X#eE zQu$=dZ+old3QX;&16IrV-&pR~Tl51x0g_#wT>!S_tm5pSxIfWSg!wA=)>~^moaMY$ zw%c)ib>-=fZT{IT68uQ(xS_1Qc>eD91hSE0Pc?= z!2OvlpH{A3Spc{{r`yg&K<`tTb2pync)xu24`B=x0mI+FoZxCJIGXvyCwMJ3Dyk==;i! zF*G)$ttv=Wy$?Gdmg>5f)q0yGbX9XvquG9eC#WjsA<#1nvpp-bglf`+YsH3`SQggnUjji&peIg7pa zBYd||u^ywXnB*KJsP3LE#-$bo9chANZN-q)!X=0{k5oJ;92fXTV&wJi-g)EH_@}08Hepnxczqh|Uw@4T=2#Z~Frq082@K&Cot=z=R z@=uL6I$ot4@vB8I%Z!Yx68$I6>+$k~A+oKlJ)HdARTH6!J@hdsW z$dX<^M5GfnHA2cp4~zks8Th$wbdQT!Uam+emC#96)mhmO;?;?vy?-W_8TjzT-0JP; zF-vLXh2{>abOD&(hLI4~l9#>#@`(6Px#U;-{5^L1hl~Hq@!!9&Q$V61p4auJJDSlO z8GoYA)fGtE8XClRfE3a%(i&u{JysRa4uhl$94 zOaTM16CIs8H@6AU`s?lO1-6y|t-rduIw1Q52M3#&m;lM>8+P)~FbPcA+jgPsT;!$P zOPWY27!f)aq^y_}SeQ@lSc0A1*6N@LJt`&-im?x+6!}=-vY~xCjyX|nO5(twFQ)C z2t0BmJX}m19IQVb195CrY+76hYB+5SM0$QA5mX`p?AQ2;OjP9@xV(zA!Y5^Ub@}jB zft5hl4Q3#-V=S7%|f|snA_frS#K9_%95nt!|#Ca z>+>GBl)!Sxvg3K68U{88o39*|S5=h)Y)a+I17U#jUS^Dfi<4GD&B<&&eQsa9YsBGT zc$>P~lTA~SQ`J{_^6s`Zn^SzcBewE(Zg`a&H;D0T#~uc-Ja}_siraak!Sga7?;Pl_ zEq6uQ?o3qzB{NXk0LAk6N*UpMcKKuaVu|ct8HIN%Ad3E6*4Ud^jwU+uup)xzpk!kN z`E9&au}-+K_$Nu-k7A&hqz_W14V*V{3iLHJhgIV%hx-!RpCwOop688@9E=zVnVpR6 zorDa_?k?(R9m=Y&4#`rh&&@Auyw#jrRWsRKT-4a_Ur|Hvvx!}1?dlmF)i1wvVSRJY zkhHvh5iFd{qs#QaMuZ`Z%kTX`+Y#Se2=xc-Tk}7$@vph)$GRCH%mYQUJR@?RioJbX z8QkS554*$Ja7YX0N)LCf*8Uy+-4rN+7rk(CS(Q|Q5;(XiAE2{FCGzIynG6H$_7yNU zz3tBa_9UU8kdUFCUQA3(OH0eC#2BaUPNseJ&XIA&MD3OIs_)>W_!PU-vG(%SQ{_!s z+x+UO@_FIgR?1NVS2pKs^M)MgWj_h@UUuo~E2C>)%kV=K-ENLJE_2jBmn=P{u`zCI3&;)IKwZ7q8t`ocHarT-DX;U3XjE<2Jpzg~^ONWJo0G$wRBG@0Zg?VHBO`Th2W@Tz=ZcWXH*zy2mX;F*7%Cqu#%MO&vQ-KR7YeC)m_ZMMqBOo1D)W*56q# zC?!N`aeL$8t%$NciJ6jwXRUpEQ0Cre`NUT^rfT&B-#}B#E-Cj*UYafCp17r)!JbQ< ziK6Bk%S%hlyqSdhR=QNSlU6tHfNs2(@~ZE#7+82WgNKfoJK#axW2}7RCX)im)c7;+ zE?^I-TyU6=gz4;T1O*8!mo{3hl2K4!hlE1e2}Jsw;DBeF7ucoE049= z*o4RO#o&wmKH(-E8TjH}oChdMgIZLB{1mjb?9(}suBYwY8nE{a(@ma6Y=^3H(2@Tp zTD?qvmmwKYN;CabP9Ob}8~)**V{8erIG#FTCsXN*g*=B3(!|g(6nBdiF zAT=m4K7LC{!Q*_<{7>-179g6Wl+*`o3zCpgUyhX%4Zz9suN6|yEtQ&3vC+u->vc<%B zwRLavGtQ3I(eCQKC*K>HK6j1G@s4^9O<=>F@CwLZX467tSJQ&+oOIQ}=hfRi&)dt# z2*}SF8O*CNa=Xo?9&st?5oA2=&(-OEzfNRzq%prSMRA@~jX!U&!2sGq7owRosk5)# z94;df(uw6yT{_Uiu!*HgjRRen>6C#(zA_+MYGRBC^)QaHuh1$Ld@w%IB89sbIBpn` zr#NWDJ#9t2`C2ADzOlG$lU1BPgD1mbt{{T=cfB%oW7`0$67+c7CIbsNS3VsdokV%})jR ze|MVS%Wrnb*8i*gPKJQUd+?z0_3KtCsX|rNS|g)&E308Qw}rH{>7pW_CjSTc{;m8* z{sC}@3GKTR;VFjfVQrG}Akh?JAzb_9XI`=Q1ZYt`^!U8XPoMsz**KjN*`aQ(ubt~c z4;3SCoTNSJ!$-GvV-rX>@|Ppjhl_G~+TKSUy1S%^royS9+enM!z=SGIxVN^(3lK3wXjDXN9a&c!JhHq|aPyS2Yix3N_7_iZStk;>*6XaZPlvNp z^Hr!_j}2OC91nMARe@==v~p8cUKbEOHTB;5AihL`k%R=w_0_qNxw(drkcE!U*6HqP zSC{2%ZO!G$c8#xZNL<|3b@60xPL##r+=}ihGN{IOdvvpH6nWRdY5uGupiAz!)F_eL zymvwVFX*o+3FaFM&FOAG+1og}0$05~V*?X?V?)z@^|cL+qaD3XjM33yX|%1K#J*-C z{iM_{smT=S?W>H2?m=z|!Os!1y+U$epcjn@&8am-44>&3qr=kA7^7hwS&JHD<%(Gk zEq{fP%^4VGnCNOwu@;m*dk^Q4);e*F%PO*`y1geUHT=H5wU+<&TEod3cMIXp4Vy9> z3PdDS>|8|jTpSlFH6HND5r>|kc~j#n&^sL=9&|{K0|%-`1a^iH`-Vm&cVcd4IAkie zg-L3ihY$C38ibe=IiS!*qGq;Fbb_M#LJA9>6J>f&iBV>7}=y%oyB88DULEj zGjg;lDvF6};NK_wd;O(UNEaBCTlr~N?pGiF4+STG?f3ray{_vT|SPgTducMsCU+5!n`te4t*JmB(o zW?k)fXZ+G7c-gGhCVFCbX;fWYmfDY-yz_w#YDWt#WSBHuz@m_oLQU2@6=(B}p?KY1 z7aqI4^%dZmo>x<0Ha}l!dD3DGz?|3>hTXVSsjxQ(Vy_t2LnMnomfZaOpzn=r4}x!xwLPu7)*kR!n;D%OzZ=ioXz1&2SOt$w=r5`1WaYLHFO7^g zCnfdhYj>rlr%|oa7k4!Iyc&-38COu1^c-!nE-R+0PJ@k%4{)pEYNA4cd`{1zY$C#m z2HjxXL$KhRa;4N5apD!Jz{O9Z&1BWByi@8YSU_QIVygIj!EWi=8*bnYPYIpiVfV%I z`O`hPYBvuxG!HsLOvK++-1Q#A*2H8)_=JOO;t6DD;m|FOACxV7;?LAxOeGuRrjO>vyk{@wSZ^MfIgS_b zP8*$`WjF<<3IKt-Z{m$=Nf6&G-KTSBX%`JOMOQV0Z__4WL?a(%qyn?K4X3c^7Tp)z z(n7HvxWRt$;yH-XW6oRdFKUsp1>1+;YZj{BJO#_N34{mujg8n>7E zYt0D}F5naK;Ai?e&mhH^qGps&R3{& zzime&f17z&1>gzb@sfDq+mA>i!CBAXDDF{%~JiFPy^@Zg$RkdeN zwOv1gr!33mtTY=*^DJhWsk++e8LT@s1xW-_@94)C8&7AV!R=7T)@e>&gvO5IO@da| zK-ineTUBOSv*Du>H{$V3w%`)$;++zT>QbBY8|JPPYSoIxn;sO2T~|er znwX2twvPv()KFbxbM6NGlyJ=YcqR4p(nd+4_^Q7Dy1dJGvdnar01ppHw((?afI}I+m8-9#RsA^no+wrW90-@ ziU!C6OD``ZTF{lvtCgra2x&19=X-C(m(DYGfO ziMl%3XE2~Pwor2@@Tevxowi_(NW@N_7j;Gv*z_?@W?LvsN*@)}5ymmosX1Y}ZU-GSg^=!1Mu3D=h&3SY{E%3!v&nXXCm zOGtJx3>hWb?}}jP~-w=wMh$!oubvO9gZ7+r`K!pGDKlI=P=x%Byp#XT)J zOv-7w9nur-I`P8QX*AtKh~nA9;&IQ#2CaO_#rNKU>Orz^omwy+rn)y$X0+(M3hT&O zX5j0`(Jb9wi6CXTCOgruGbIBA-Xy%kEa+)?IAK11a7Nj)&9Cn(E44=6ghr!P|T@pQ58qmld+ z^YCo)wgL7ct8gXNlc_I}zPdfVWuM6~ytQ4m=Sw^0W-J_3^6I9Q92ZMWO)E}}C^u;% zl+j72Sipj~wjaAtpJ*ZnG^Ryx%OT%#P{rYHMem@Ao|I*C+G~m#(KG0blIIwVADn6W zS&Zd;5NmqrQK3k-(Z{ot&54p8tA*3z2Y+59Y=G?wVuI@BMa7R;3lHjku0`NevZ#yx>jH!8)k6{!_ku=M(xT26}#kdh?<-nng2QrxhF%0T9qJD!ArpM(*TWk z07tm7&Oox1{B+)Q=`g;JS>6|I(QGS!r0AtRkgWb_7RGd5&GDs$apU)wCSex05(2V@D?A z-e-H{tNwK@-F2SqjZ1{JF{X3~+`uWAPN{ed&N-vPk=!XKQPrqB9cy~i$!2A}HYD&VWtE#nb1#bkBNU{`jBxF#uU!B3n455ZhKYI*d`c0{rcUp~_mgR~%rgxPH!nhZmkxqL<+8+HDK9omyq zT)fjgD+8Nbk79V!UGAP~2MM_a9JHAsi^Z2OTwJDK&^%vzeDYw@SO;_#=F4H1-%`1~ z_+Ww6x4bKoB;r}AooaQjCe9|505&yj>Gdn2mX?Rhp+1t$mV);1+qT` z`Y}ev#z3WljfM4HEQDbVVjPL66sda$wR%SjzCbHO6y2pz?UKWV{t@~LadP+|gFAK% z63jvLXs$v0CC@YE{!-V;c|2CHb2mkjn{&ZtEE~{)B<7HPq28+~10}~6{-p8StN24i z3O|NHM&ZZ6dNZWQAr$EDB8QKi7(@LI{3!iI-dXxtKju0NIev_1Y4OVzN9*-N}`8`HDMzX8K%K3wIT0O*1I1F^O?*9A*EC08L^}Vk}2s!sd zUn}Jn0;n4ROc{WZ0R$OFm5otJ5fpAG`_Y^<= zG$;&TFi)ZMcFN9$R!JFxZcL4h=t_?|(Ina^`Egy6njSwlZk^i)BJ#&UnHZ0gmL0M| z&z@FqyR>i@22AmIZ~_#;D;1?tDfS1WFT!@?D~yLt&{mt zd&5iGyehN(K>n5v_9{e*TyPx6PCB^2YX2pnjF;fk8T;Zi+89p5>#XI39h2CRTz1Qa zvHd1ERW3&k%Xha$=a!v*2p1fawkG2x>chUp>EbIoI(SpnWX$yDC*9FNZvt5G2e?XJ zb~YmLg^YZ1bOexYw22UZgy(>FK(?hG)n4BtKb`l)Bx(f#e)MA`FB+0AMMD?Yr=s!k zD17c&bavzWOz}xpRTZtiln@POoL`hLTwlyeC7ux`7N{ll58wjDy>zcC-4{2n;!?U& zQbx)J^WcD{K+5hEXdBqfF$%uXLq+J}q%F&y%d(uAnVWWo`el{(@bBAjI*kQ4IP7de zxZWNV74g=&);V6<%+A!*KfJlVJOwtHe{iXDJl(lC-c(jnB2w|HNQCUT-jc$>iox1Y zoK)zFjoq~Fy1cOR+~ll&wke*N%vqV8sw884b0s7dQ>5tmQ7&h#eFscQm6bg!t*FFS zt#2Vy87jqMXkr2mjF|QWmX~*NGMw947-%^;P0y1a%UE~#?E9>4N~luy3WHXKP`s;)B9}SRyxN2NU zOJP4_F+&78I#q7|bXWpQ-B-Jw2{AI;?K;_slA6rh_Fdk(+pF{I>&tSWuRvpfsLad$ zeAc75J+}Ipba&5tJBz>_cj0Vu+v9-4jg#D+1ZLxRMpjEcnr~Q)-=A)+ho(yq5ONjF zz6pOa@M%;gP<^?GG&_Q3qE`RfYnbw6XKZ42ybKV!%EcW`87rjUTj-Wsq<>!G*$Kl_WLOLN;dXD3yVSq!Y$Jv9_RVF zRKLp+E7jVDsq$1$z7EnN;4vCjygnY`!bhtvBcO;Y=J-Yg-`KD?yC<8=Q(EcOXw+8K zl2u9h8M2@8P_k`$bH(zC42WFKU@rTdw0Wby*&-=G0<0CtH=q2d|6Obi7IrC1Dg zkV1ZbkIqbW&9oR4N%%2l{7j(Rro!q1R!ml>Ai9ubZtk6F@Mn2jtBAM*tHfO`0?UPZ zzWk1!ycF>WKcy-DY3z}YMpKPLGt*6443z1IZ-u)CrlrvMZ|Kh|Rg@;|P@;Jbj_AFsi;J8&YY{fTMe8gQ~2$5R>=PzAvKL8p}M zPUNktuKxeXd+V?&^gdq{L_ib)=?>}cE(H;!1?leYZs`UAi3Kb`knV;>cXxMpgXAL4 zV*AdF+nIUKo-=3PJNLQE$LH}cMfm={`H4A*=V^R=JT%^~@dY_{4=Dd}?6wkt�R5 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

$6JqQf&GWaOIbj;5F9Z{`D&1 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

)JH|V@Tm@c35mvVX+?u=t-J~Xx+}0^ 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 -- GitLab